> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signa.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Retract Office Vote

> Retract your organization's vote for an office

## Overview

Removes your organization's vote for one office. `DELETE` accepts a **wider** vocabulary than casting: any ST.3 / ISO 3166-1 two-letter code (plus `BX`, `AP`, `OA`, aliases canonicalized) resolves here. Only an unrecognizable token returns `400`. Codes that casting rejects — an office Signa already covers, or a territory with no trademark register of its own (`AQ`, `BV`, …) — still resolve and still delete, so a row stored under an earlier vocabulary is never stranded; when you have no vote for the code, you get `404`, not `400`.

A territory resolves to the office that registers its marks, so retracting `PR` targets the USPTO vote and `RE` the INPI-FR one — and because the code is canonicalized first, the `404` detail names the parent office (`US`, `FR`), not the territory you sent.

Retracting is free — `DELETE` bills 0 units, as does casting; only [List Office Votes](/api-reference/reference/list-office-votes) bills (1 read unit). Responses carry the standard `RateLimit-*` headers.

Requires an `Idempotency-Key` header: retrying with the **same** key replays the cached response of that attempt (so a replayed retract still reads `deleted: true`, not `404`), while a **new** logical attempt — retracting again after re-casting the vote — needs a **fresh** key. The vote itself is stored once per organization per office, so the server's state is the same either way.

## Path Parameters

<ParamField path="code" type="string" required>
  Office code — ST.3 / ISO, any case or accepted alias (`UK` retracts the `GB` vote).
</ParamField>

## Response

<ResponseField name="object" type="string">Always `office_vote`.</ResponseField>
<ResponseField name="office_code" type="string">Canonical uppercase ST.3 code of the retracted vote.</ResponseField>
<ResponseField name="deleted" type="boolean">Always `true`.</ResponseField>

Returns `404 not_found` when your organization has no vote for the office (`"Your organization has no vote for BR."`), and `400 validation_error` for unknown codes.

<ResponseExample>
  ```json theme={null}
  {
    "object": "office_vote",
    "office_code": "BR",
    "deleted": true,
    "request_id": "req_01kabc..."
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -X DELETE "https://api.signa.so/v1/offices/votes/BR" \
    -H "Authorization: Bearer sig_YOUR_KEY" \
    -H "Idempotency-Key: retract-office-vote-br-001"
  ```

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";

  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const retracted = await signa.references.retractOfficeVote("BR");
  console.log(retracted.office_code, retracted.deleted); // BR true
  ```
</CodeGroup>

## Errors

| Status | Type                     | Description                                                                                                                                           |
| ------ | ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400    | `validation_error`       | `unknown_office_code` — the only vocabulary rejection on retract. Covered offices and register-less codes (`AQ`, `BV`, …) resolve normally and delete |
| 400    | `validation_error`       | Missing `Idempotency-Key` header                                                                                                                      |
| 401    | `unauthorized`           | Missing or invalid API key                                                                                                                            |
| 404    | `not_found`              | Your organization has no vote for this office                                                                                                         |
| 409    | `conflict`               | `Idempotency-Key` reused with a different body                                                                                                        |
| 409    | `idempotency_processing` | A request with the same `Idempotency-Key` is still in flight                                                                                          |
| 429    | `rate_limited`           | Too many requests                                                                                                                                     |

The `404` detail reads `"Your organization has no vote for BR."` — the code is canonicalized first, so retracting `uk` when you have no `GB` vote reports `GB`, and retracting `PR` reports `US`.

## Related Endpoints

* [Cast Office Votes](/api-reference/reference/cast-office-votes), vote for the offices you want next
* [List Office Votes](/api-reference/reference/list-office-votes), read your organization's votes back
* [List Offices](/api-reference/reference/list-offices), the offices already covered by Signa
