Skip to main content
GET
Retrieve Trademark
Credits: 1 per record.

Overview

Returns the full detail-tier representation of a single trademark: identification, status, filing and key dates, owners, attorneys, classifications, computed deadlines, media, Madrid territory coverage, mark-to-mark relationships, and source provenance. Every value says where it came from. Top-level fields are what the office published: an office that publishes no expiry date leaves expiry_date null. Everything Signa computes (the term end, the deadline schedule, the opposition window) is under derived. The office’s own status code and label sit in status.raw beside the normalised status, and status.basis says how that status was reached. Search hits carry the same row, so a field means the same thing in a list and here. Everything bounded is inlined, including coverage (per-territory breakdown for a Madrid international registration), relationships[] (mark-to-mark links), and provenance (where the record came from and when we last saw it). Only the unbounded, independently filterable children stay behind their own endpoints: events, proceedings, assignments and documents. Events, proceedings and examiner citations appear here as counts (events_count, proceedings_count, citations_count); proceedings_count is split by side, contested and asserted.

Path Parameters

string
default:"tm_8kLm2nPq"
required
Trademark ID (e.g., tm_8kLm2nPq)

Query Parameters

string
Comma-separated optional detail projections. office_extensions includes the office_extensions object (raw office-specific data), which is otherwise omitted. It is the only value this endpoint accepts: the detail always carries attorneys[] and the full, untruncated classifications[].goods_services_text, so the list-row projection full_goods_services (and names like attorneys) return 400.
string
Sparse top-level field projection, comma-separated (e.g. ?fields=mark_text,status,owners). id and object are always retained. Unknown field names, or nested paths like status.primary, return 400. Fields you don’t request are left out of the response, although the OpenAPI response schema still lists every field, so a client generated from it should treat them as optional.
string
Preferred goods/services language for classifications[] rows, applied only to records that carry per-language variants (direct and Madrid designation records; 2-3 letters with optional 2-letter region, e.g. en, eng, or en-US). When multiple language variants exist for the same Nice class, Signa returns the requested language if present; groups without the requested language (and IR-parent rollup classifications, which have no per-language variants) keep all rows in default classification order.
The ETag is a weak semantic validator (W/"…"), because the response includes a per-request request_id. It does not change when only derived.as_of_date moves, so a daily revalidation still gets 304 while the record and its schedule are unchanged. Return it unchanged in If-None-Match; matching 304 responses preserve the weak form. The validator varies with the requested projection and language: a request with ?include=, ?fields=, and/or ?language= gets a different validator than the plain request, so a cached full response never 304s a different representation.

Response

Returns the full detail-tier representation of a trademark, including all bounded children (owners, attorneys, classifications, coverage, relationships, etc.) inline. Unbounded children (events, proceedings) appear as counts only. Maintenance deadlines and opposition windows are computed at read time from the normalized record and rule registry, and served under derived.
string
Prefixed trademark ID (tm_*)
string
Always "trademark"
boolean
Whether the record has been retracted by the source office
string
Unique request identifier

Code Examples