Retrieve 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",
"grain": "mark",
"mark_text": "NIKE",
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"basis": "office",
"raw": { "code": "800", "label": null }
},
"office_code": "US",
"jurisdiction_code": "US",
"scope_kind": "national",
"filing_route": "direct_national",
"origin_office_code": null,
"office_record_id": "72396458",
"office_url": "https://tsdr.uspto.gov/#caseNumber=72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"designation_date": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": null,
"renewal_due_date": null,
"last_renewal_date": "2024-02-07",
"publication_date": "1974-01-29",
"termination_date": null,
"priority_date": null,
"register": {
"type": "principal",
"acquired_distinctiveness": null,
"is_incontestable": true,
"standard_characters_claimed": false
},
"classifications": [
{
"nice_class": 25,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_text_truncated": false,
"nice_edition": null,
"goods_services_language": "en",
"status": "accepted",
"status_raw": { "code": "6", "label": null },
"subclass_codes": null,
"office_class": "025"
}
],
"nice_classes": [25],
"design_codes": [],
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": "ent_019f34d6-2222-7777-8888-222222222222",
"role": "owner",
"is_current": true,
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"region": "OR",
"postal_code": "97005",
"country_code": "US",
"formatted": null
}
}
],
"has_media": true,
"primary_image_url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"derived": {
"ruleset_version": "rs_3f2a9c1b7e40",
"as_of_date": "2026-10-02",
"expiry_date": "2034-04-16",
"term": {
"state": "in_term",
"grace_expiry_date": "2034-10-16",
"restoration_expiry_date": null,
"renewed": true
},
"next_deadline": {
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
},
"deadlines": {
"supported": true,
"reason": null,
"unsupported_rules": [],
"items": [
{
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
}
]
},
"opposition_window": {
"supported": false,
"reason": "stage_not_opposable",
"rule_id": "us_opposition"
}
},
"updated_at": "2026-03-30T02:13:13.704Z",
"mark_text_language": "en",
"mark_text_script": null,
"is_series_mark": null,
"series_count": null,
"protection_effective_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"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",
"region": "DC",
"postal_code": "20005",
"country_code": "US",
"formatted": null
}
}
],
"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,
"document_kind": null,
"official_date": null,
"page_count": null
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"seniority_claims": [],
"relationships": [],
"events_count": 21,
"proceedings_count": { "contested": 0, "asserted": 0 },
"citations_count": 2,
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": "2026-03-17",
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null
},
"created_at": "2026-03-22T08:27:23.446Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
{
"id": "tm_4pQ7rT2v",
"object": "trademark",
"grain": "mark",
"mark_text": "MERIDIAN",
"status": {
"primary": "mixed",
"stage": "mixed",
"reason": null,
"challenges": [],
"effective_date": null,
"basis": "computed",
"raw": null
},
"office_code": "WO",
"jurisdiction_code": "WO",
"filing_route": "madrid_ir",
"scope_kind": "international_registration",
"office_record_id": null,
"ir_number": "1654321",
"registration_number": "1654321",
"origin_office_code": "US",
"coverage": {
"territory_count": 3,
"by_primary": { "active": 2, "pending": 1 },
"by_stage": { "registered": 2, "published": 1 },
"matched_territories": [],
"territories": [
{
"territory_code": "EU",
"territory_name": "European Union",
"trademark": { "id": "tm_9nR4sV8w", "href": "/v1/trademarks/tm_9nR4sV8w" },
"status": { "primary": "active", "stage": "registered" },
"office_url": null,
"office_code": "EM",
"application_number": "018650321",
"registration_number": "018650321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-02-27",
"refusal_date": null,
"status_effective_date": "2023-02-27",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": []
},
{
"territory_code": "JP",
"territory_name": "Japan",
"trademark": { "id": "tm_2wX5yZ1a", "href": "/v1/trademarks/tm_2wX5yZ1a" },
"status": { "primary": "active", "stage": "registered" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_JP",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-06-09",
"refusal_date": "2022-11-02",
"status_effective_date": "2023-06-09",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": [
{
"source_office_code": "WO",
"territory_code": "JP",
"trademark": { "id": "tm_6bC3dE9f", "href": "/v1/trademarks/tm_6bC3dE9f" }
}
]
},
{
"territory_code": "CA",
"territory_name": "Canada",
"trademark": { "id": "tm_8gH1jK5l", "href": "/v1/trademarks/tm_8gH1jK5l" },
"status": { "primary": "pending", "stage": "published" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_CA",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": null,
"designation_date": "2024-01-30",
"protection_date": null,
"refusal_date": null,
"status_effective_date": "2024-08-14",
"is_subsequent_designation": true,
"designation_protocol": "madrid_protocol",
"source_records": []
}
]
},
"relationships": [
{
"type": "based_on_basic_registration",
"direction": "child",
"trademark_id": null,
"target_office_code": "US",
"target_record_id": "97123456",
"office_code": null,
"mark_text": null,
"status_stage": null,
"effective_date": "2022-04-11"
}
],
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": null,
"office_updated_at": "2026-03-17T00:00:00.000Z",
"retrieved_at": "2026-03-18T04:12:55.019Z"
},
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9me"
}
Retrieve
Retrieve Trademark
Retrieve a single trademark by ID
GET
/
v1
/
trademarks
/
{id}
Retrieve 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",
"grain": "mark",
"mark_text": "NIKE",
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"basis": "office",
"raw": { "code": "800", "label": null }
},
"office_code": "US",
"jurisdiction_code": "US",
"scope_kind": "national",
"filing_route": "direct_national",
"origin_office_code": null,
"office_record_id": "72396458",
"office_url": "https://tsdr.uspto.gov/#caseNumber=72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"designation_date": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": null,
"renewal_due_date": null,
"last_renewal_date": "2024-02-07",
"publication_date": "1974-01-29",
"termination_date": null,
"priority_date": null,
"register": {
"type": "principal",
"acquired_distinctiveness": null,
"is_incontestable": true,
"standard_characters_claimed": false
},
"classifications": [
{
"nice_class": 25,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_text_truncated": false,
"nice_edition": null,
"goods_services_language": "en",
"status": "accepted",
"status_raw": { "code": "6", "label": null },
"subclass_codes": null,
"office_class": "025"
}
],
"nice_classes": [25],
"design_codes": [],
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": "ent_019f34d6-2222-7777-8888-222222222222",
"role": "owner",
"is_current": true,
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"region": "OR",
"postal_code": "97005",
"country_code": "US",
"formatted": null
}
}
],
"has_media": true,
"primary_image_url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"derived": {
"ruleset_version": "rs_3f2a9c1b7e40",
"as_of_date": "2026-10-02",
"expiry_date": "2034-04-16",
"term": {
"state": "in_term",
"grace_expiry_date": "2034-10-16",
"restoration_expiry_date": null,
"renewed": true
},
"next_deadline": {
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
},
"deadlines": {
"supported": true,
"reason": null,
"unsupported_rules": [],
"items": [
{
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
}
]
},
"opposition_window": {
"supported": false,
"reason": "stage_not_opposable",
"rule_id": "us_opposition"
}
},
"updated_at": "2026-03-30T02:13:13.704Z",
"mark_text_language": "en",
"mark_text_script": null,
"is_series_mark": null,
"series_count": null,
"protection_effective_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"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",
"region": "DC",
"postal_code": "20005",
"country_code": "US",
"formatted": null
}
}
],
"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,
"document_kind": null,
"official_date": null,
"page_count": null
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"seniority_claims": [],
"relationships": [],
"events_count": 21,
"proceedings_count": { "contested": 0, "asserted": 0 },
"citations_count": 2,
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": "2026-03-17",
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null
},
"created_at": "2026-03-22T08:27:23.446Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
{
"id": "tm_4pQ7rT2v",
"object": "trademark",
"grain": "mark",
"mark_text": "MERIDIAN",
"status": {
"primary": "mixed",
"stage": "mixed",
"reason": null,
"challenges": [],
"effective_date": null,
"basis": "computed",
"raw": null
},
"office_code": "WO",
"jurisdiction_code": "WO",
"filing_route": "madrid_ir",
"scope_kind": "international_registration",
"office_record_id": null,
"ir_number": "1654321",
"registration_number": "1654321",
"origin_office_code": "US",
"coverage": {
"territory_count": 3,
"by_primary": { "active": 2, "pending": 1 },
"by_stage": { "registered": 2, "published": 1 },
"matched_territories": [],
"territories": [
{
"territory_code": "EU",
"territory_name": "European Union",
"trademark": { "id": "tm_9nR4sV8w", "href": "/v1/trademarks/tm_9nR4sV8w" },
"status": { "primary": "active", "stage": "registered" },
"office_url": null,
"office_code": "EM",
"application_number": "018650321",
"registration_number": "018650321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-02-27",
"refusal_date": null,
"status_effective_date": "2023-02-27",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": []
},
{
"territory_code": "JP",
"territory_name": "Japan",
"trademark": { "id": "tm_2wX5yZ1a", "href": "/v1/trademarks/tm_2wX5yZ1a" },
"status": { "primary": "active", "stage": "registered" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_JP",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-06-09",
"refusal_date": "2022-11-02",
"status_effective_date": "2023-06-09",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": [
{
"source_office_code": "WO",
"territory_code": "JP",
"trademark": { "id": "tm_6bC3dE9f", "href": "/v1/trademarks/tm_6bC3dE9f" }
}
]
},
{
"territory_code": "CA",
"territory_name": "Canada",
"trademark": { "id": "tm_8gH1jK5l", "href": "/v1/trademarks/tm_8gH1jK5l" },
"status": { "primary": "pending", "stage": "published" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_CA",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": null,
"designation_date": "2024-01-30",
"protection_date": null,
"refusal_date": null,
"status_effective_date": "2024-08-14",
"is_subsequent_designation": true,
"designation_protocol": "madrid_protocol",
"source_records": []
}
]
},
"relationships": [
{
"type": "based_on_basic_registration",
"direction": "child",
"trademark_id": null,
"target_office_code": "US",
"target_record_id": "97123456",
"office_code": null,
"mark_text": null,
"status_stage": null,
"effective_date": "2022-04-11"
}
],
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": null,
"office_updated_at": "2026-03-17T00:00:00.000Z",
"retrieved_at": "2026-03-18T04:12:55.019Z"
},
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9me"
}
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 leavesexpiry_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 underderived.
string
Prefixed trademark ID (
tm_*)string
Always
"trademark"Show Mark identification
Show Mark identification
string | null
Word mark as filed. A figurative or other non-word mark with no text usually returns the placeholder
"[Design Mark]" rather than null, so to tell whether a mark has words, check mark_feature_type together with design_codes, not mark_text alonestring | 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, one of 18 normalized values:
filed, examining, pending_publication, published, opposition_period, pending_opposition, pending_cancellation, pending_issuance, registered, allowed, abandoned, withdrawn, surrendered, refused, cancelled, invalidated, expired, unknown. See the status taxonomy.string | null
Reason for current status (e.g.,
section_8_accepted)string[]
Active challenge states (e.g.,
opposition_pending, cancellation_pending). On an IR family row, the de-duplicated union across its designations: a challenge on any designation is a challenge on the family.string | null
ISO date when this status became effective
string
How the normalised status was reached:
office (the office stated it), event_derived (from the office’s prosecution events), dispatch_derived (from an office dispatch), or computed (Signa’s projection, e.g. an IR family rolled up from its designations)object | null
The office’s verbatim status code and label.
null on IR family rows (no single office status stands behind a rollup) and when the office published neither.Show raw
Show raw
string | null
The office’s status code (e.g.
800)string | null
The office’s label, verbatim.
null when we hold no verbatim office label for the code (for example USPTO codes today). Never rewritten: decode a code with List Status Codes.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 | null
ISO 2-letter jurisdiction (e.g.,
US, EU)string
Which unit this row is:
mark (a standalone filing, or a Madrid international registration rolled up from its designations) or record (one designation leg)string
Filing route (
direct_national, madrid_designation, etc.)string
Scope kind (
national, regional, international_registration)string | null
Origin office for Madrid designations
string | null
The office’s own identifier for the record.
null only when Signa composed the stored key: an international registration’s own record, its designation records from the WIPO feed, and the Finnish and Polish designation records, which those offices key by IR number. Any other national office’s record of a designation keeps that office’s own id.string | null
The office’s permalink for the record, when one is stored; otherwise
nullstring | null
Application/serial number
string | null
Registration number as the office publishes it. For an international registration this is the IR number without any prefix (
921642, not WO921642).string | null
International registration number (Madrid system), without leading zeros:
551089 on the international registration and on every designation of it, including offices that store it as 0551089.Show Key dates
Show Key dates
string | null
ISO date
string | null
ISO date
string | null
The expiry date the office published;
null when it published none. The USPTO publishes no expiry date, so every USPTO record has expiry_date: null (a WIPO designation for the US can still carry the expiry WIPO published); the rulebook’s term end is derived.expiry_date. On an international registration this is the expiry WIPO published for the IR, which WIPO records on the IR’s designations.string | null
The renewal due date the office published;
null when it published none. Computed renewal deadlines are in derived.deadlines.items.string | null
The date of the last renewal the office recorded (USPTO, CIPO and OEPM today);
null when it published nonestring | null
First publication date (ISO). On an international registration, its first WIPO Gazette publication
string | null
Earliest priority date (ISO), derived from priority claims
string | null
ISO date
string | 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
Owner name as filed on this record (the owner’s canonical name when the record gives none). It can differ from
name on Retrieve Owner; join on id, not on the namestring | null
ISO 2-letter country code
string | null
Normalized legal form, one of
individual, corporation, partnership, government, association, trust, sole_proprietorship, cooperative, foundation or other. It is not the form as filed: US limited liability companies map to corporation, for examplestring
Owner role, one of
applicant, owner, holder, previous_owner, assignee or licensee. Detail lists only the record’s current ownersboolean
Always
true on detail, which lists only current ownersstring | null
The resolved cross-office entity this owner is linked into (
ent_*), or null when it is not linked. Group an owner’s marks across offices by this, and filter with ?entity_id= to pull the entity’s whole global portfolio. For an unlinked owner, filter with ?owner_id=.object[] | undefined
Public company records matched to this owner (
source sec or gleif, plus ticker, exchange, lei, entity_status). Present only on grouped Madrid IR-parent detail owners; omitted on every other detail response, and omitted when there are no matches.object | null
Postal address as the office recorded it: the same shape on owners, attorneys, parties and assignments. Components are filled only when the office supplied them; the whole object is
null when no address is on file.Show Address object
Show Address object
string[]
The office’s address lines, verbatim (never rewritten)
string | null
City
string | null
State, province or region, as the office supplied it
string | null
Postal or ZIP code
string | null
ISO 3166-1 alpha-2, when the office supplied a code
string | null
The office’s single-string rendering of the address;
null when it sent components onlyShow Attorneys
Show Attorneys
object[]
The attorneys of record on this record, with the firm and address this filing names. A Madrid international registration row lists the attorneys named on any of its designations as well as those on the international registration itself: one row per attorney and firm (an attorney whose designations name two firms appears twice, and designations naming the attorney with no firm add a row with
firm_id: null), and territory_codes says which designations name the attorney with that firm.Show Attorney object
Show Attorney object
string
Attorney ID (
att_*)string
Attorney name as filed on this record (the attorney’s canonical name when the record gives none). It can differ from
name on Retrieve Attorney; join on id, not on the namestring | null
The firm (
firm_*) this filing names; null when the filing names no firm. Never a firm taken from the attorney’s other filingsstring | null
The firm name the office recorded on this filing, else the name of the
firm_id firm; null when the filing names no firmstring
Attorney role. One of
representative (the attorney of record named by the office), agent (a registered trademark agent) or correspondent (a third party holding only the correspondence address)object | null
Postal address as reported by the office on this filing. All fields optional; whole object is
null when the filing carries no address (WIPO, PRV and Italian records, which never carry one on the filing, show the attorney’s address 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
object | null
The office’s own class status as
{code, label} (verbatim); null when the office states nonestring[] | null
Office-native subclass codes, or
null when not reportedstring | null
The class as the office states it, usually the Nice class in the office’s own spelling. A row with no Nice class says here what it is: US
A or B (certification mark for goods or services), US 200 (collective membership mark), or Spain’s 00. null on an international registration’s classes rolled up from its designationsinteger[]
Compact list of the distinct Nice class numbers in
classifications[]Show Signa-computed data (`derived`)
Show Signa-computed data (`derived`)
object
Everything Signa computes from the record, namespaced apart from what the office reported. Computed at read time from the normalized record and the rule registry. Free on every read.
The
derived block carries statutory dates, never countdowns. as_of_date says which day the block was computed for: it bounds the 20-year horizon, decides which occurrences are still ahead, and is the day term.state describes. The deadline rows carry no status or days_until_due, which a cacheable body would let go stale silently. Derive them client-side from the dates (one line of date math), or call Compute Deadlines with an explicit as_of_date when you want the server to evaluate statuses for you. The ETag changes when term.state does.Show derived object
Show derived object
string
Content hash of the rule set that produced this block (
rs_…). It changes whenever a rule that could affect a schedule changes, so a changed value means “recompute your copy”. For per-rule provenance, read rule_id on each row and resolve it against List Deadline Rules.string
The date (ISO) the block was computed for
string | null
The end of the term on record, before any weekend or holiday roll (the filing deadline in
next_deadline.due_date can fall a day or two later). When the office publishes the expiry, the rulebook anchors on it and the two agree, unless a renewal is on record that the office’s date does not show yet: a renewal the office recorded, or, for a Madrid designation (a national office’s record or WIPO’s own), an expiry WIPO published for the international registration in a later term. When that term has ended it stays here, whatever the office’s status says: term.state tells you whether it can still be renewed or restored, or that no renewal of it is on record. For offices that publish no expiry (the USPTO) this is the statutory term end. null when no term applies: a dead mark once it can no longer be saved, a record with no renewal rule, or no schedule.object
Where the term ending at
expiry_date stands on as_of_date. The office’s status is never changed by it. See The term on record.Show term object
Show term object
string
in_term: the term runs toexpiry_date, and its renewal is not past due (the due date itself, moved off a weekend or holiday, is still on time).in_grace: the term ended and the renewal can still be filed late, untilgrace_expiry_date.in_restoration: the grace period passed and the jurisdiction’s restoration window is open, untilrestoration_expiry_date.renewal_not_on_record: the expiry the office stated, its grace period and any restoration window have passed, and no renewal of that term is on record. For a US registration with no stated expiry, also when its ten-year renewal (Section 8 and Section 9) is not on record once the grace period has passed, where Signa holds the USPTO prosecution history with a Section 8 or Section 9 filing recorded and the USPTO status does not say it was renewed. No later term or renewal is computed. The mark may have lapsed, or a renewal may not have reached the office record or Signa yet.not_applicable: no registered term to assess: an application or another status that is not registered (unknownincluded), a dead mark, a record with no renewal rule (a US designation under the Madrid Protocol, renewed at WIPO), or no schedule. Anexpiredmark is assessed only while it can still be renewed or restored, acancelledone only while it can be restored.
string | null
Last day of the grace period after
expiry_date, as the renewal row serves it. null when state is not_applicable.string | null
Last day of the restoration window after that grace period, once the term has ended (
state is in_grace or later), where the jurisdiction has one (GB, EU, SG, JP, IN, IS). null otherwise.boolean
Whether a renewal on record began the term ending at
expiry_date: the office states a term end past the first term, the office recorded that renewal (for the USPTO, accepted the renewal filing), or, for a Madrid designation, WIPO published an expiry for the international registration in a later term. false for the first term after registration, for a term computed on the statutory ladder with no renewal of the term before it on record (a renewal of an earlier term does not count), and when state is not_applicable.object
The computed maintenance schedule and whether one could be computed. Same fields as an item of Compute Deadlines. Prosecution deadlines (office action responses, the US statement of use) are not here: send
{ "id": "tm_..." } to Compute Deadlines, which reads them from the record’s events. On an allowed US application (status.raw.code 688), status.effective_date is the notice of allowance date.Show deadlines object
Show deadlines object
boolean
false when no schedule could be computed. See reason.string | null
Why no schedule was computed:
unsupported_jurisdiction (no rules modeled for the jurisdiction) or requires_office_date (the record does not carry the input the statute needs and the office stated no expiry date or renewal due date to anchor on, so the engine declines to guess rather than serve a wrong date; this covers Australian direct marks filed before 1996-01-01, Singapore direct marks filed before 1999-01-15, Madrid designations with no international-registration date, direct (non-Madrid) Swedish, Icelandic, Norwegian or Finnish records filed before the renewal-anchor change date of their office that carry no registration date, and records where every rule they owe lacks the date it runs from, including an expired mark with no registration date (a cancelled mark owes only a renewal that opens a modelled restoration window, as in Japan); never, in a jurisdiction with modeled rules, for a mark whose status ends every obligation, such as an abandoned mark or a refused designation, which is supported with no deadlines). null when supported.object[]
Rules that apply to this record but were declined because it lacks the date the statute anchors them on, so
items has no row for them. Each entry carries rule_id, reason (requires_office_date, or computed_on_office_leg when this is WIPO’s copy of a designation and the rule runs from a date only the designated office’s own record carries: the rule is computed on that record, as for a US Madrid rule on a WIPO record designating the US), missing_field (in the trigger_field vocabulary) and consequence_if_missed. Always present: [] when nothing was declined, and [] when supported is false. A registration-anchored rule on an application not yet registered is not declined: nothing is due yet. An expired mark names every rule whose miss costs something (it is served a rule while that rule’s window is open), except a one-off rule of a national mark (a declaration due once, such as US Section 8), whose window closed before the term ended; a Madrid designation granted late in the term of its international registration still names it. A cancelled mark names only a renewal that opens a modelled restoration window: its status serves nothing else. items holds no missed rows, so a rule owed only as missed history is not named here; POST /v1/deadlines/compute with include_missed: true names it.object[]
Computed maintenance deadlines in due-date order (ties by
rule_id), within 20 years of as_of_date. Empty for marks with nothing left to maintain (abandoned, withdrawn, surrendered, invalidated, refused); for savable-dead marks (expired, cancelled) only the still-actionable rows appear, such as an open late-renewal window or a restoration window.Show Deadline row
Show Deadline row
string
Stable identity of this occurrence of the rule, unique within the trademark:
rule_id:<cycle>, the statutory cycle (e.g. us_renewal_s9:2); rule_id:t<term>-<n>, a cell on a fixed term grid, when the record has no statutory anchor date or the row is anchored on an office-stated expiry (e.g. us_renewal_s9:t10-12); rule_id:1 for a rule that occurs once. A renewal or a date correction of a few days keeps the key. Use it to track a deadline across reads; it is also the iCal event identity on portfolio calendars.string
Stable, permanent slug of the statutory rule that produced this row, e.g.
us_declaration_of_use_s8. The join key to List Deadline Rules, where the statutory citations, last_verified and effective_from live. Treat it as opaque: do not parse it.string
Deadline type (e.g.,
renewal, declaration_of_use, restoration)string
Jurisdiction the row’s rule applies in:
WO for the international registration’s own renewal; on a Madrid designation, the designated jurisdiction (RU on a Russian designation served madrid_designation_renewal)string
The record date the computation was anchored on
string
Which date that was:
filing_date, registration_date, grant_date, protection_grant_date, intl_registration_date, reported_expiry when the ladder is anchored on the office-stated expiry, or reported_renewal_due when it is anchored on an office-stated renewal-due date and no expiry is storedstring
ISO date when the filing window opens
string
ISO date when the deadline is due
string
What the office’s holiday calendar did to
due_date: moved, unchanged, not_checked (no pinned closure list verified the date, so the true date can only be the same or later) or month_end_overflowstring
ISO date when the grace period ends
string
Same vocabulary as
due_date_adjustment, for grace_expiry_datestring | null
The holiday calendar the dates were rolled against, or
null when none appliesboolean
Whether this deadline repeats on a cycle
boolean
true for filings that are advantageous but not required (e.g. US §15 incontestability)string
What happens if this deadline is missed. One of
expiration, removal_from_register, cancellation, cancellation_and_expiration (combined US §8+§9), expungement (Canada), lapse_of_international_registration (Madrid), permanent_loss (restoration rules: the last remedy has passed) or none (optional filing). See the deadline rules guide.object | null
The earliest row of
deadlines.items whose grace period has not passed (same shape), or null when there is none. When a mandatory and an optional row (is_optional: true, such as the US §15 affidavit) fall due the same day, the mandatory row is used, so this is not always items[0]object
Computed opposition period, always present, in one of two shapes.Supported (
supported: true): rule_id, trigger_event, publication_date, window_opens, window_closes, close_adjustment, office_time_zone, common_extension, and reason: null. close_adjustment (moved | unchanged | not_checked | month_end_overflow) qualifies window_closes: whether the close was checked against the office’s holiday calendar and whether that check moved it. Because a rollover only ever moves a close later, a not_checked date is correct-or-early: treat it as indeterminate for the 20 days after it. rule_id is the join key to List Opposition Rules.Not supported (supported: false): only reason and rule_id, never null date keys. reason is unsupported_office (no opposition rule is modeled), requires_office_date (no publication date), publication_date_kind_mismatch (the stored publication is not the one the matched Madrid rule runs from; see Opposition windows) or stage_not_opposable (the mark is past the stage it can be opposed at). Treat the vocabulary as open.Show Other children
Show Other children
object[]
Figurative-element codes:
system (vienna, us_design_search or other), code and editionobject[]
Alternative text representations of the mark
object[]
Disclaimers, descriptions of mark, etc.
object[]
Media files (images, sounds, documents). Each entry carries
id (med_*), media_type, mime_type, url, is_primary, and for a document item document_kind (the same kind the documents endpoint serves), official_date and page_count (the office’s values, null when the office published none); all three are null for images. Exactly one entry has is_primary: true whenever primary_image_url is set: the entry that URL points at.media[].url (and primary_image_url) is an unauthenticated proxy that serves the image bytes directly: a 200 response with the image, not a redirect. It follows any upstream office redirect server-side, so there is nothing for your client to resolve. It is cache-safe for 24 hours (Cache-Control: public, max-age=86400, s-maxage=86400) and sets cross-origin headers, so it is safe to drop straight into an <img src>, where browsers cannot attach an Authorization header. Use the URL exactly as returned; do not construct it yourself.object[]
Convention priority claims
object[]
Filing bases as filed (US-specific: use in commerce, intent to use, etc.), each with
basis_type, nice_class, first-use dates and any foreign application. A basis changed after filing is not reflected: an intent-to-use application that later filed its statement of use still reads intent_to_use, with the first-use dates it claimed, and a Section 44(e) basis added later does not appearobject[]
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 | null
The office register the mark sits on, for offices that state one:
type (the office’s register, lowercased, e.g. principal or supplemental in the US), acquired_distinctiveness (full, partial or null), is_incontestable and standard_characters_claimed. Members are null when the office does not state them; the whole object is null when it states no register data. Filter with register_type.object[]
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.Show Coverage (Madrid international registrations)
Show Coverage (Madrid international registrations)
object | null
Per-territory coverage for a grouped Madrid international registration: the same reconciled rollup the grouped search row carries, plus the per-designation detail the search row omits. Present only on IR family rows; absent on designation legs and on direct or regional marks, which cover exactly one territory. The IR’s own
WO record is not a territory, so territory_count is the number of designations.Show Coverage object
Show Coverage object
integer
Number of designated territories
object
Territory counts keyed by primary status (
active, pending, inactive, unknown)object
Territory counts keyed by lifecycle stage
string[]
On search hits with a
jurisdictions filter, the territories that matched it; otherwise []object[]
Show Territory object
Show Territory object
string
Designated territory code (ISO 2-letter; WIPO’s
EM is rendered EU)string | null
Display name of the territory
object
The designation record shown for this territory:
id (tm_*) and href, resolvable via Retrieve Trademarkobject
primary and stage of that record in this territorystring | null
The office permalink of that record, when stored
string | null
ST.3 code of the office that holds the record shown for this territory: the national office when Signa has its record (for example
US), else WOstring | null
That record’s own application number at its office. For a US designation this is the 79-series serial, so a docket can be keyed per office without expanding the family.
null when the office states nonestring | null
That record’s own registration number at its office;
null until registered or when the office states nonestring | null
Office-reported protection status (e.g.
protected, refused)string | null
ISO date the territory was designated
string | null
ISO date protection took effect
string | null
ISO date the WIPO Gazette published this designation;
null when Signa has no Gazette date for itstring | null
ISO date of a provisional or final refusal
string | null
ISO date the current territory status took effect
boolean | null
Whether the territory was added after the initial international registration
string | null
Treaty the designation was made under (e.g.
madrid_protocol)object[]
Reconciliation alternates for a dual-feed territory: the WIPO-feed record folded into the winning national-feed record, or vice versa. Empty for a single-feed territory. Each entry carries
source_office_code, territory_code, and an optional trademark reference.Show Relationships
Show Relationships
object[]
Mark-to-mark links. Madrid designations are not repeated here (they are
coverage.territories[]), and neither are seniority claims (they are seniority_claims[]). Party history (previous owners, representatives, and addresses) is not a mark-to-mark link and is not surfaced. Capped at 200 entries per mark.Show Relationship object
Show Relationship object
string
One of
based_on_basic_application, based_on_basic_registration, divisional_parent, partial_assignment_from, merged_into, transformed_from, replaces_under_4bis, partial_transfer_of, continuation_of. Which types appear depends on what the office reports: none of the offices Signa serves today reports transformed_from.string
child when this mark is the source of the relationship, parent when it is the targetstring | null
The counterpart record (
tm_*), or null when the counterpart is not a record Signa holds. Most based_on_basic_* edges are cross-office and unresolved. Identify those by target_office_code + target_record_id.string | null
ST.3 office code of the counterpart as reported by the office. Null on
parent edges (the counterpart is identified by trademark_id).string | null
Office-native identifier of the counterpart (application or registration number). Null on
parent edges (the counterpart is identified by trademark_id).string | null
ST.3 office code of the counterpart: the resolved record’s office when
trademark_id is set, otherwise the office-reported target_office_code.string | null
Mark text of the resolved counterpart record
string | null
Lifecycle stage of the resolved counterpart record
string | null
ISO date the relationship took effect, when the office reports one
Show Provenance
Show Provenance
object
Where this record came from and when Signa last saw it. See Data Freshness & Coverage for how often each office updates.
Show Provenance object
Show Provenance object
string | null
Date of the office data file or response this record was built from
string | null
Date of the office’s bulk snapshot this record was last seen in, when the office publishes snapshots (e.g. a USPTO daily file);
null otherwise. Records not seen in a snapshot since this field was introduced stay null until the next full pass.string | null
The office’s own last-modified timestamp for the record, when it publishes one
string | null
When Signa last fetched the full detail record from the office
Show Counts and metadata
Show Counts and metadata
boolean
Whether the mark has any media files
string | null
Media-proxy URL for the mark’s primary image: the office-flagged image, else the first image. Always an image file, never a document, audio or video file;
null when the mark has no image. Same unauthenticated image proxy as media[].url: a 200 with the image bytes.integer
Total number of events (fetch via Trademark Events)
object
Proceedings linked to this mark, split by the mark’s side.
contested (integer): proceedings filed against this mark, meaning it was opposed, petitioned for cancellation, or appealed. asserted (integer): proceedings its owner filed using this mark as a prior right. Both keys are always present. Fetch the rows via Trademark Proceedings with the matching trademark_role filter.integer | null
Examiner refusal citations issued against this mark’s application (fetch via Trademark Citations).
0 means the office is covered and this mark has no citations. null means citations are not counted for this office at all, which is not the same as “no citations exist”. Check capabilities.citations on List Offices to tell which offices return a number (available) and which return null. A null count is also not a promise of an empty list: while a new office is being brought online, the citations endpoint can already return rows for a mark whose count is still null.string
ISO timestamp
string
ISO timestamp
string
Unique request identifier
{
"id": "tm_8kLm2nPq",
"object": "trademark",
"grain": "mark",
"mark_text": "NIKE",
"mark_feature_type": "word",
"mark_legal_category": "standard",
"right_kind": "trademark",
"status": {
"primary": "active",
"stage": "registered",
"reason": null,
"challenges": [],
"effective_date": "1974-04-16",
"basis": "office",
"raw": { "code": "800", "label": null }
},
"office_code": "US",
"jurisdiction_code": "US",
"scope_kind": "national",
"filing_route": "direct_national",
"origin_office_code": null,
"office_record_id": "72396458",
"office_url": "https://tsdr.uspto.gov/#caseNumber=72396458",
"application_number": "72396458",
"registration_number": "0978952",
"ir_number": null,
"designation_date": null,
"filing_date": "1971-02-04",
"registration_date": "1974-04-16",
"expiry_date": null,
"renewal_due_date": null,
"last_renewal_date": "2024-02-07",
"publication_date": "1974-01-29",
"termination_date": null,
"priority_date": null,
"register": {
"type": "principal",
"acquired_distinctiveness": null,
"is_incontestable": true,
"standard_characters_claimed": false
},
"classifications": [
{
"nice_class": 25,
"goods_services_text": "Clothing, footwear, headgear",
"goods_services_text_truncated": false,
"nice_edition": null,
"goods_services_language": "en",
"status": "accepted",
"status_raw": { "code": "6", "label": null },
"subclass_codes": null,
"office_class": "025"
}
],
"nice_classes": [25],
"design_codes": [],
"owners": [
{
"id": "own_R3jK9mN2",
"name": "Nike, Inc.",
"country_code": "US",
"legal_form": "corporation",
"entity_id": "ent_019f34d6-2222-7777-8888-222222222222",
"role": "owner",
"is_current": true,
"address": {
"lines": ["One Bowerman Drive"],
"city": "BEAVERTON",
"region": "OR",
"postal_code": "97005",
"country_code": "US",
"formatted": null
}
}
],
"has_media": true,
"primary_image_url": "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/media/med_9mQ4pXk2",
"derived": {
"ruleset_version": "rs_3f2a9c1b7e40",
"as_of_date": "2026-10-02",
"expiry_date": "2034-04-16",
"term": {
"state": "in_term",
"grace_expiry_date": "2034-10-16",
"restoration_expiry_date": null,
"renewed": true
},
"next_deadline": {
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
},
"deadlines": {
"supported": true,
"reason": null,
"unsupported_rules": [],
"items": [
{
"occurrence_key": "us_renewal_s9:6",
"rule_id": "us_renewal_s9",
"type": "combined_renewal_and_use",
"jurisdiction_code": "US",
"trigger_date": "1974-04-16",
"trigger_field": "registration_date",
"window_opens": "2033-04-16",
"due_date": "2034-04-17",
"due_date_adjustment": "moved",
"grace_expiry_date": "2034-10-16",
"grace_expiry_adjustment": "unchanged",
"holiday_calendar": "uspto_dc",
"is_recurring": true,
"is_optional": false,
"consequence_if_missed": "cancellation_and_expiration"
}
]
},
"opposition_window": {
"supported": false,
"reason": "stage_not_opposable",
"rule_id": "us_opposition"
}
},
"updated_at": "2026-03-30T02:13:13.704Z",
"mark_text_language": "en",
"mark_text_script": null,
"is_series_mark": null,
"series_count": null,
"protection_effective_date": null,
"dependency_period_end_date": null,
"transformation_deadline_date": null,
"is_retracted": false,
"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",
"region": "DC",
"postal_code": "20005",
"country_code": "US",
"formatted": null
}
}
],
"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,
"document_kind": null,
"official_date": null,
"page_count": null
}
],
"priority_claims": [],
"filing_bases": [
{
"basis_type": "use_in_commerce",
"nice_class": 25,
"first_use_date": "1971-01-01",
"first_use_in_commerce_date": "1972-01-01",
"foreign_application_number": null,
"foreign_country_code": null
}
],
"publications": [],
"seniority_claims": [],
"relationships": [],
"events_count": 21,
"proceedings_count": { "contested": 0, "asserted": 0 },
"citations_count": 2,
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": "2026-03-17",
"office_updated_at": "2022-10-28T00:00:00.000Z",
"retrieved_at": null
},
"created_at": "2026-03-22T08:27:23.446Z",
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9md"
}
{
"id": "tm_4pQ7rT2v",
"object": "trademark",
"grain": "mark",
"mark_text": "MERIDIAN",
"status": {
"primary": "mixed",
"stage": "mixed",
"reason": null,
"challenges": [],
"effective_date": null,
"basis": "computed",
"raw": null
},
"office_code": "WO",
"jurisdiction_code": "WO",
"filing_route": "madrid_ir",
"scope_kind": "international_registration",
"office_record_id": null,
"ir_number": "1654321",
"registration_number": "1654321",
"origin_office_code": "US",
"coverage": {
"territory_count": 3,
"by_primary": { "active": 2, "pending": 1 },
"by_stage": { "registered": 2, "published": 1 },
"matched_territories": [],
"territories": [
{
"territory_code": "EU",
"territory_name": "European Union",
"trademark": { "id": "tm_9nR4sV8w", "href": "/v1/trademarks/tm_9nR4sV8w" },
"status": { "primary": "active", "stage": "registered" },
"office_url": null,
"office_code": "EM",
"application_number": "018650321",
"registration_number": "018650321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-02-27",
"refusal_date": null,
"status_effective_date": "2023-02-27",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": []
},
{
"territory_code": "JP",
"territory_name": "Japan",
"trademark": { "id": "tm_2wX5yZ1a", "href": "/v1/trademarks/tm_2wX5yZ1a" },
"status": { "primary": "active", "stage": "registered" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_JP",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": "protected",
"designation_date": "2022-04-11",
"protection_date": "2023-06-09",
"refusal_date": "2022-11-02",
"status_effective_date": "2023-06-09",
"is_subsequent_designation": false,
"designation_protocol": "madrid_protocol",
"source_records": [
{
"source_office_code": "WO",
"territory_code": "JP",
"trademark": { "id": "tm_6bC3dE9f", "href": "/v1/trademarks/tm_6bC3dE9f" }
}
]
},
{
"territory_code": "CA",
"territory_name": "Canada",
"trademark": { "id": "tm_8gH1jK5l", "href": "/v1/trademarks/tm_8gH1jK5l" },
"status": { "primary": "pending", "stage": "published" },
"office_url": "https://www3.wipo.int/madrid/monitor/en/?id=1654321_CA",
"office_code": "WO",
"application_number": null,
"registration_number": "1654321",
"protection_status": null,
"designation_date": "2024-01-30",
"protection_date": null,
"refusal_date": null,
"status_effective_date": "2024-08-14",
"is_subsequent_designation": true,
"designation_protocol": "madrid_protocol",
"source_records": []
}
]
},
"relationships": [
{
"type": "based_on_basic_registration",
"direction": "child",
"trademark_id": null,
"target_office_code": "US",
"target_record_id": "97123456",
"office_code": null,
"mark_text": null,
"status_stage": null,
"effective_date": "2022-04-11"
}
],
"provenance": {
"source_data_date": "2026-03-18",
"snapshot_date": null,
"office_updated_at": "2026-03-17T00:00:00.000Z",
"retrieved_at": "2026-03-18T04:12:55.019Z"
},
"request_id": "req_01kp4v2yycy3pq3czhxcsmn9me"
}
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);
Related Endpoints
- Search Trademarks: filtered search and browsing
- Batch Retrieve: hydrate multiple known IDs in one request
- Trademark Events: prosecution event timeline
- Trademark Proceedings: oppositions, cancellations, and other contested proceedings
- Trademark Citations: prior marks an examiner cited against this application
- Trademark Cited By: applications this mark was cited against