Get Trademark
curl --request GET \
--url https://api.signa.so/v1/trademarks/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/trademarks/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/trademarks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/trademarks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/trademarks/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/trademarks/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/trademarks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "NIKE",
"mark_text_language": "en",
"mark_text_script": null,
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"is_series_mark": null,
"series_count": null,
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"source": "explicit",
"raw_code": "800",
"raw_label": null
},
"office_code": "US",
"jurisdiction_code": "US",
"filing_route": "direct_national",
"scope_kind": "national",
"origin_office_code": null,
"source_primary_id": "72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": "2034-04-16",
"expiry_date_basis": "derived",
"renewal_due_date": "2034-04-16",
"publication_date": "1974-01-29",
"priority_date": null,
"termination_date": null,
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null,
"protection_effective_date": null,
"designation_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"entity_type": "corporation",
"role": "owner",
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"state": "OR",
"postal_code": "97005",
"country_code": "US"
}
}
],
"attorneys": [
{
"id": "att_Lp3mN7qR",
"name": "Katelyn Andrews",
"firm_id": "firm_Xk9pQ2rS",
"firm_name": "Banner & Witcoff, Ltd.",
"role": "representative",
"address": {
"lines": ["1100 13th Street NW", "Suite 1200"],
"city": "WASHINGTON",
"state": "DC",
"postal_code": "20005",
"country_code": "US"
}
}
],
"classifications": [
{
"nice_class": 25,
"nice_edition": null,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_language": "en",
"status": "accepted",
"class_status_raw": "6",
"subclass_codes": null
}
],
"design_codes": [],
"text_variants": [],
"statements": [],
"media": [
{
"id": "med_9mQ4pXk2",
"media_type": "image",
"mime_type": "image/png",
"url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"is_primary": true
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class_number": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"office_extensions": {
"register_type": "principal"
},
"us_register": {
"register": "principal",
"acquired_distinctiveness": null,
"incontestable": false,
"standard_characters_claimed": false
},
"seniority_claims": [],
"deadlines": [
{
"type": "combined_renewal_and_use",
"name": "Section 8+9: Renewal + Declaration of Use",
"due_date": "2034-04-16",
"grace_expiry": "2034-10-16",
"window_opens": "2033-04-16",
"jurisdiction_code": "US",
"status": "future",
"urgency": "routine",
"days_until_due": 2831,
"consequence_if_missed": "cancellation_and_expiration"
}
],
"opposition_window": null,
"madrid": null,
"has_media": true,
"events_count": 21,
"proceedings_count": 0,
"coverage_count": 0,
"relationships_count": 0,
"data_freshness": {
"source_data_date": "2026-03-18",
"source_format": "dtd_v2",
"last_updated_at": "2026-03-30T02:13:13.704Z"
},
"created_at": "2026-03-22T08:27:23.446Z",
"updated_at": "2026-03-30T02:13:13.704Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
Retrieve
Get Trademark
Retrieve a single trademark by ID
GET
/
v1
/
trademarks
/
{id}
Get Trademark
curl --request GET \
--url https://api.signa.so/v1/trademarks/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/trademarks/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/trademarks/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.signa.so/v1/trademarks/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signa.so/v1/trademarks/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.signa.so/v1/trademarks/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/trademarks/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "NIKE",
"mark_text_language": "en",
"mark_text_script": null,
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"is_series_mark": null,
"series_count": null,
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"source": "explicit",
"raw_code": "800",
"raw_label": null
},
"office_code": "US",
"jurisdiction_code": "US",
"filing_route": "direct_national",
"scope_kind": "national",
"origin_office_code": null,
"source_primary_id": "72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": "2034-04-16",
"expiry_date_basis": "derived",
"renewal_due_date": "2034-04-16",
"publication_date": "1974-01-29",
"priority_date": null,
"termination_date": null,
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null,
"protection_effective_date": null,
"designation_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"entity_type": "corporation",
"role": "owner",
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"state": "OR",
"postal_code": "97005",
"country_code": "US"
}
}
],
"attorneys": [
{
"id": "att_Lp3mN7qR",
"name": "Katelyn Andrews",
"firm_id": "firm_Xk9pQ2rS",
"firm_name": "Banner & Witcoff, Ltd.",
"role": "representative",
"address": {
"lines": ["1100 13th Street NW", "Suite 1200"],
"city": "WASHINGTON",
"state": "DC",
"postal_code": "20005",
"country_code": "US"
}
}
],
"classifications": [
{
"nice_class": 25,
"nice_edition": null,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_language": "en",
"status": "accepted",
"class_status_raw": "6",
"subclass_codes": null
}
],
"design_codes": [],
"text_variants": [],
"statements": [],
"media": [
{
"id": "med_9mQ4pXk2",
"media_type": "image",
"mime_type": "image/png",
"url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"is_primary": true
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class_number": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"office_extensions": {
"register_type": "principal"
},
"us_register": {
"register": "principal",
"acquired_distinctiveness": null,
"incontestable": false,
"standard_characters_claimed": false
},
"seniority_claims": [],
"deadlines": [
{
"type": "combined_renewal_and_use",
"name": "Section 8+9: Renewal + Declaration of Use",
"due_date": "2034-04-16",
"grace_expiry": "2034-10-16",
"window_opens": "2033-04-16",
"jurisdiction_code": "US",
"status": "future",
"urgency": "routine",
"days_until_due": 2831,
"consequence_if_missed": "cancellation_and_expiration"
}
],
"opposition_window": null,
"madrid": null,
"has_media": true,
"events_count": 21,
"proceedings_count": 0,
"coverage_count": 0,
"relationships_count": 0,
"data_freshness": {
"source_data_date": "2026-03-18",
"source_format": "dtd_v2",
"last_updated_at": "2026-03-30T02:13:13.704Z"
},
"created_at": "2026-03-22T08:27:23.446Z",
"updated_at": "2026-03-30T02:13:13.704Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
Overview
Returns the full detail-tier representation of a single trademark: identification, status, filing and key dates, owners, attorneys, classifications, computed deadlines, media, and Madrid enrichment when applicable. All bounded children (owners, attorneys, classifications, media, etc.) are inlined. Unbounded children (events, proceedings, coverage, relationships) appear as counts only; fetch them from their own sub-resource endpoints.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.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.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 on this response 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, 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.string
Prefixed trademark ID (
tm_*)string
Always
"trademark"Show Mark identification
Show Mark identification
string | null
Word mark as filed (null for design-only marks)
string | null
ISO 639-1 language code of the mark text
string | null
ISO 15924 script code
string | null
Mark feature type (e.g.,
word, figurative, combined)string | null
Legal category (e.g.,
standard, certification, collective)string
Right kind (
trademark, trade_name, geographical_indication, etc.)boolean | null
Whether the mark is a series mark
integer | null
Number of marks in the series
Show Status
Show Status
object
Show Status object
Show Status object
string
Primary status:
active, pending, inactive, unknownstring
Lifecycle stage:
filed, examined, published, registered, renewed, abandoned, cancelled, expiredstring | null
Reason for current status (e.g.,
section_8_accepted)string[]
Active challenge states (e.g.,
opposition_pending, cancellation_pending)string | null
ISO date when this status became effective
string
How the status was determined:
explicit (the office reported it directly), event_derived (derived from the prosecution event timeline), dispatch_derived (derived from a bulk data dispatch), or computed (the mark spans a mixed-status family and Signa computed a representative status)string | null
Office-native status code (e.g.,
800)string | null
Office-native status label (e.g.,
Registered and renewed)Show Office and filing
Show Office and filing
string | null
Uppercase ST.3 office code (e.g.,
US, EM). Null if the stored office identifier cannot be resolved (fail-closed — internal codes are never leaked).string
ISO 2-letter jurisdiction (e.g.,
US, EU)string
Filing route (
direct_national, madrid_designation, etc.)string
Scope kind (
national, regional, international)string | null
Origin office for Madrid designations
string
Source system primary identifier
string | null
Application/serial number
string | null
Registration number
string | null
International registration number (Madrid system)
Show Key dates
Show Key dates
string | null
ISO date
string | null
ISO date
string | null
ISO date
string
Basis for the expiry date:
reported (the office reported it directly), derived (Signa computed it from other dates), or unknownstring | null
ISO date
string | null
First publication date (ISO)
string | null
Earliest priority date (ISO), derived from priority claims
string | null
ISO date
string | null
Timestamp reported by the source office for this record, when available
string | null
Most recent detail enrichment fetch timestamp when an office populates it; otherwise
nullstring | null
ISO date
string | null
ISO date (Madrid designations)
string | null
ISO date (Madrid dependency period)
string | null
ISO date
boolean
Whether the record has been retracted by the source office
Show Owners
Show Owners
object[]
Show Owner object
Show Owner object
string
Owner ID (
own_*)string
Canonical owner name
string | null
ISO 2-letter country code
string | null
Entity type (e.g.,
corporation, individual)string
Owner role (e.g.,
owner, applicant)Show Attorneys
Show Attorneys
object[]
Show Attorney object
Show Attorney object
string
Attorney ID (
att_*)string
Canonical attorney name
string | null
Firm ID (
firm_*)string | null
Firm name
string
Attorney role (e.g.,
representative)object | null
Postal address as reported by the office. All fields optional; whole object is
null when no address is on file. Same shape as the owner address object.Show Classifications
Show Classifications
object[]
Show Classification object
Show Classification object
integer | null
Nice class number (1-45)
string | null
Nice classification edition
string | null
Goods/services description
string | null
Language of the description
string | null
Class status
string | null
Raw class status from the office
string[] | null
Office-native subclass codes, or
null when not reportedShow Deadlines (computed)
Show Deadlines (computed)
object[]
Computed maintenance deadlines based on jurisdiction rules and the mark’s lifecycle dates. Deadline rules are authored to be non-overlapping per jurisdiction. These are first-class API fields, not scraped office text, and supplement office-reported dates such as
renewal_due_date.Show Deadline object
Show Deadline object
string
Deadline type (e.g.,
renewal, declaration_of_use)string
Human-readable deadline name
string
ISO date when the deadline is due
string | null
ISO date when the grace period ends
string | null
ISO date when the filing window opens
string
Jurisdiction this deadline applies to
string
Deadline status relative to today:
future, window_open, due_soon, in_grace, missedstring
Urgency level for filtering/display:
critical, upcoming, routine, overdue, in_grace, missedinteger
Days until the deadline (negative if overdue)
string
What happens if this deadline is missed
Show Opposition window (computed)
Show Opposition window (computed)
object | null
Computed opposition period for offices and routes covered by Signa’s opposition rule registry.
null means the office/route is not modeled yet or the rule engine intentionally fell back; an object with status: "unknown" means the office/route is modeled but the publication date needed to compute the window is missing.Show Other children
Show Other children
object[]
Vienna classification design codes
object[]
Alternative text representations of the mark
object[]
Disclaimers, descriptions of mark, etc.
object[]
Media files (images, sounds) with URLs. Each media object includes an
id with the med_ prefix, media_type, url, and content_type.object[]
Convention priority claims
object[]
Filing bases (US-specific: use in commerce, intent to use, etc.)
object[]
Publication history (gazette/journal entries)
object | undefined
Office-specific data not captured by the standard schema. Omitted by default; returned only when
?include=office_extensions is requested.object
USPTO register data promoted from
office_extensions; absent for non-USPTO records or when register data is unavailableobject[]
EUIPO seniority claims promoted from trademark relationships.
country_code is uppercased, kind is national or international when EUIPO provides a known raw kind, and status uses lowercased EUIPO vocabulary: claimed, accepted, refused, partially_refused, abandoned, or deficiency. Empty array when none exist.object | null
Madrid system enrichment data (only for international registrations)
Show Counts and metadata
Show Counts and metadata
boolean
Whether the mark has any media files
integer
Total number of events (fetch via Trademark History)
integer
Total number of proceedings
integer
Total number of coverage entries
integer
Total number of relationships
object
string
ISO timestamp
string
ISO timestamp
string
Unique request identifier
{
"id": "tm_8kLm2nPq",
"object": "trademark",
"mark_text": "NIKE",
"mark_text_language": "en",
"mark_text_script": null,
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"is_series_mark": null,
"series_count": null,
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"source": "explicit",
"raw_code": "800",
"raw_label": null
},
"office_code": "US",
"jurisdiction_code": "US",
"filing_route": "direct_national",
"scope_kind": "national",
"origin_office_code": null,
"source_primary_id": "72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": "2034-04-16",
"expiry_date_basis": "derived",
"renewal_due_date": "2034-04-16",
"publication_date": "1974-01-29",
"priority_date": null,
"termination_date": null,
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null,
"protection_effective_date": null,
"designation_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"entity_type": "corporation",
"role": "owner",
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"state": "OR",
"postal_code": "97005",
"country_code": "US"
}
}
],
"attorneys": [
{
"id": "att_Lp3mN7qR",
"name": "Katelyn Andrews",
"firm_id": "firm_Xk9pQ2rS",
"firm_name": "Banner & Witcoff, Ltd.",
"role": "representative",
"address": {
"lines": ["1100 13th Street NW", "Suite 1200"],
"city": "WASHINGTON",
"state": "DC",
"postal_code": "20005",
"country_code": "US"
}
}
],
"classifications": [
{
"nice_class": 25,
"nice_edition": null,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_language": "en",
"status": "accepted",
"class_status_raw": "6",
"subclass_codes": null
}
],
"design_codes": [],
"text_variants": [],
"statements": [],
"media": [
{
"id": "med_9mQ4pXk2",
"media_type": "image",
"mime_type": "image/png",
"url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"is_primary": true
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class_number": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"office_extensions": {
"register_type": "principal"
},
"us_register": {
"register": "principal",
"acquired_distinctiveness": null,
"incontestable": false,
"standard_characters_claimed": false
},
"seniority_claims": [],
"deadlines": [
{
"type": "combined_renewal_and_use",
"name": "Section 8+9: Renewal + Declaration of Use",
"due_date": "2034-04-16",
"grace_expiry": "2034-10-16",
"window_opens": "2033-04-16",
"jurisdiction_code": "US",
"status": "future",
"urgency": "routine",
"days_until_due": 2831,
"consequence_if_missed": "cancellation_and_expiration"
}
],
"opposition_window": null,
"madrid": null,
"has_media": true,
"events_count": 21,
"proceedings_count": 0,
"coverage_count": 0,
"relationships_count": 0,
"data_freshness": {
"source_data_date": "2026-03-18",
"source_format": "dtd_v2",
"last_updated_at": "2026-03-30T02:13:13.704Z"
},
"created_at": "2026-03-22T08:27:23.446Z",
"updated_at": "2026-03-30T02:13:13.704Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
Code Examples
curl "https://api.signa.so/v1/trademarks/tm_8kLm2nPq" \
-H "Authorization: Bearer $SIGNA_API_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const trademark = await signa.trademarks.retrieve("tm_8kLm2nPq");
console.log(trademark.mark_text, trademark.status.stage);
Errors
| Status | Type | When |
|---|---|---|
| 400 | validation_error | Invalid trademark ID format |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | API key lacks the trademarks:read scope |
| 404 | not_found | Trademark ID does not exist |
| 429 | rate_limited | Rate limit exceeded |
Related Endpoints
- Search Trademarks: filtered search and browsing
- Batch Get Trademarks: hydrate multiple known IDs in one request
- Trademark History: prosecution event timeline
- Trademark Media: fetch an image or drawing referenced in
media[]
⌘I