Skip to main content
POST
Cast Office Votes

Overview

Tell us which trademark offices your organization wants covered next — votes directly drive our coverage roadmap. Vote for as many offices as you like: each office counts once per organization, no matter how many times (or through how many API keys) you vote, so re-votes are harmless no-ops. The office-vote endpoints are the one write surface in the reference-data section — POST and DELETE both take the usual write ceremony: an Idempotency-Key header is required, and the request counts against the write rate bucket (responses carry the standard RateLimit-* headers). Voting is free — POST and DELETE bill 0 units. Reading your votes back with List Office Votes bills 1 read unit. Retrying with the same Idempotency-Key replays the cached response of that attempt; a new logical attempt — re-casting a vote you previously retracted, say — needs a fresh key. Either way the once-per-org, once-per-office counting is enforced server-side, so a fresh key can never double-count you.

Votable codes

Office codes are WIPO ST.3 two-letter codes. You can vote for:
  • Any ISO 3166-1 country codeBR, MX, IN, … (UK is accepted and canonicalized to GB, EL to GR).
  • Intergovernmental offices with no ISO country code: BX (Benelux/BOIP), AP (ARIPO), OA (OAPI) — plus XK (Kosovo — ST.3-assigned, no ISO code), which is a national office rather than an IGO but is votable on the same footing.
  • Legacy lowercase office codes are accepted as aliases and canonicalized — ukipoGB, dpmaDE.
Two kinds of code are rejected:
  • Offices already covered by Signa — including EM (EUIPO) and WO (WIPO), which are covered today. Voting for one returns 400 with an office_already_live error entry. (List Offices shows the offices currently serving data — an office that is covered but temporarily offline is absent from it, yet still not votable, so the rejection is the authoritative answer.) A dependent territory has no register of its own, so it resolves through the office that registers its marks — PR/GU → USPTO, RE/GF → INPI-FR, SJ → NIPO, CX/CC/NF → IP Australia — and a vote for it is a vote for that parent office: rejected as already covered when the parent is covered, otherwise stored under the parent’s code.
  • Codes with no trademark register of their own — uninhabited or non-filing territories such as AQ (Antarctica), BV, HM, TF, GS, IO, UM, and PN. These return 400 with a no_trademark_register error entry: there is nothing to connect, so there is nothing to vote for.
Validation is all-or-nothing: if any code in the batch is unknown, already covered, or has no register, nothing is recorded.

Body Parameters

string[]
required
Office codes to vote for (1–50). Any case; aliases are canonicalized. Codes your organization already voted for are no-ops.

Response

A list of the stored votes for every requested code — newly cast or pre-existing alike. created_at is when your organization first voted for that office.
string
Always list.
object[]
boolean
Always false — the votable vocabulary is bounded, so results are a single page.

Code Examples

Errors

Every rejected code comes back as its own entry in errors[], each with field: "office_codes" and one of the codes above.