curl "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/cited-by?limit=20" \
-H "Authorization: Bearer $SIGNA_API_KEY"
{
"object": "list",
"data": [
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e",
"object": "citation",
"office_code": "US",
"application_ref": "98123456",
"trademark": {
"id": "tm_019f34d6-2000-7777-8888-000000000001",
"mark_text": "ACME BREW",
"office_code": "US",
"application_number": "98123456",
"registration_number": null,
"status_primary": "pending"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": {
"id": "tm_8kLm2nPq",
"mark_text": "ACME",
"office_code": "US",
"application_number": "87999999",
"registration_number": "5567890",
"status_primary": "active"
},
"refusal_type": "2d",
"action_date": "2026-01-15",
"action_stage": "final",
"disposition": "maintained",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e"
},
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6f",
"object": "citation",
"office_code": "US",
"application_ref": "97654321",
"trademark": {
"id": "tm_019f34d6-3000-7777-8888-000000000002",
"mark_text": "ACMEE",
"office_code": "US",
"application_number": "97654321",
"registration_number": null,
"status_primary": "inactive"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": null,
"refusal_type": "2d",
"action_date": "2025-06-02",
"action_stage": "nonfinal",
"disposition": "abandoned_after",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c70"
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_cV2nL8pQ"
}
Records
Trademark Cited By
Applications an examiner cited this mark against, the refusals where this mark is the prior right
GET
/
v1
/
trademarks
/
{id}
/
cited-by
curl "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/cited-by?limit=20" \
-H "Authorization: Bearer $SIGNA_API_KEY"
{
"object": "list",
"data": [
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e",
"object": "citation",
"office_code": "US",
"application_ref": "98123456",
"trademark": {
"id": "tm_019f34d6-2000-7777-8888-000000000001",
"mark_text": "ACME BREW",
"office_code": "US",
"application_number": "98123456",
"registration_number": null,
"status_primary": "pending"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": {
"id": "tm_8kLm2nPq",
"mark_text": "ACME",
"office_code": "US",
"application_number": "87999999",
"registration_number": "5567890",
"status_primary": "active"
},
"refusal_type": "2d",
"action_date": "2026-01-15",
"action_stage": "final",
"disposition": "maintained",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e"
},
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6f",
"object": "citation",
"office_code": "US",
"application_ref": "97654321",
"trademark": {
"id": "tm_019f34d6-3000-7777-8888-000000000002",
"mark_text": "ACMEE",
"office_code": "US",
"application_number": "97654321",
"registration_number": null,
"status_primary": "inactive"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": null,
"refusal_type": "2d",
"action_date": "2025-06-02",
"action_stage": "nonfinal",
"disposition": "abandoned_after",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c70"
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_cV2nL8pQ"
}
When To Use This
Use this endpoint to measure how much of a blocker a mark is. Each row is one citation occurrence: this mark named as the prior right in one office action against one application. This is the outbound direction, so the marks intrademark are other people’s applications, and the mark in the path is the reference the examiner reached for.
It answers questions a search index cannot: whether the office has actually treated this mark as a bar, how often, how recently, and whether those refusals stuck.
Rows are citation occurrences, not applications. One application cited in both a nonfinal and a final office action produces two rows for the same mark. To count distinct applications, group by
trademark.id, falling back to application_ref when trademark is null. A raw row count overstates how many applications this mark has blocked.Coverage today is USPTO only. Citations are extracted from USPTO office actions and cover §2(d) likelihood-of-confusion refusals. Other offices return an empty list. Check
capabilities.citations on List Offices to see the state of any office programmatically, rather than inferring coverage from an empty response.Freshness
Citations are extracted hourly from stored office actions. Dispositions are recomputed once a day, so a newly extracted citation carriesdisposition: null until the next daily refresh, which can be up to about 24 hours. A disposition can also change on a later run as prosecution continues. disposition_as_of is stamped when the current disposition was first derived or last changed, and deliberately does not move when a daily run re-derives the same value. An unchanged timestamp means the disposition has been stable, not that the refresh stopped running.
Disposition Grain
disposition is one verdict per (application, cited reference) pair. It is computed across that pair’s whole occurrence history and then written onto every occurrence row for the pair. It is not per row, and it is not per date. action_stage does vary from row to row, but it records the stage that occurrence of the citation reached, not the kind of document the row was extracted from: a citation first raised in a nonfinal action is upgraded to final once a later dated final action maintains the refusal, so a final row can still carry a nonfinal source_document_id. disposition is per pair and describes the citation’s fate overall.
So a row with action_stage: nonfinal alongside disposition: maintained is expected, not a data error. It means a different occurrence of this same citation, against the same application, reached a final action. Filter action_stage=final if you want the occurrences that reached final, remembering that those rows include upgraded ones whose source_document_id is a nonfinal action; read disposition from any row of the pair if you want the pair’s outcome. published and abandoned_after are evaluated against the pair’s earliest office action date rather than against the individual row’s date, which is another reason every row of a pair carries the same answer.
The full value table is on Trademark Citations.
Rows Matched By Reference
Examiners cite an application or registration number. Signa resolves that number to a mark on the register at extraction time, but some rows never resolve: the cited number may belong to a mark Signa does not hold, or the mark may have been ingested after its citations were extracted. This endpoint returns those rows too. It matches on the resolved link, and additionally on this mark’s own application and registration numbers for unlinked citations from the same office, so a citation that names your number is returned even when the extraction pipeline never linked it. On such a rowcited_trademark is null and cited_ref carries the number the examiner printed.
Treat cited_trademark: null as “matched by reference only”, not as a missing field. Dropping those rows undercounts how often the mark has been used as a bar.
Path Parameters
string
required
Trademark ID (
tm_...). This is the cited prior mark.Query Parameters
string
Filter by how the citation resolved, comma-separated. One or more of
citation_issued, maintained, withdrawn, abandoned_after, published. Rows whose disposition has not been computed yet are excluded when this filter is supplied.string
Filter by the stage the citation reached, comma-separated. One or both of
nonfinal, final. final includes citations first raised in a nonfinal action that a later final action maintained.integer
default:"20"
Page size (1-100).
string
Opaque cursor from the previous response’s
pagination.cursor.action_date descending, newest first, with undated actions last and id as the final tiebreaker. The order is fixed: there is no sort parameter.
Response
The object is identical to the one returned by Trademark Citations, read in the other direction:trademark is the citing application and cited_trademark is the mark in the path, or null on a reference-matched row.
string
Always
list.object[]
Show Citation object
Show Citation object
string
Citation ID (
cit_...).string
Always
citation.string | null
Office that issued the action, uppercase ST.3 (e.g.
US).string
Application number the office action was issued against, as printed by the office.
object | null
Summary of the citing application (
id, mark_text, office_code, application_number, registration_number, status_primary). null when the citation carries no persisted link to a Signa record for that application, which is not the same as the application being absent from the register: resolution runs once, at extraction time.string
The reference the examiner cited. On this endpoint it is this mark’s application or registration number.
string
Whether
cited_ref is a registration or an application number. This label is inferred from how the citing office action worded the reference, and it is occasionally wrong: a serial can be labelled as a registration, or the reverse. Signa matches the number against both namespaces regardless of the label, so a mislabelled reference still resolves. Treat it as a hint, and when cited_trademark is present read that as the authoritative identification of the cited mark.object | null
Summary of the cited mark.
null on a row matched by reference only, as described above.string
Office-local refusal ground.
2d is the USPTO §2(d) likelihood-of-confusion ground.string | null
ISO date of the office action (
YYYY-MM-DD).string | null
nonfinal or final. This is the stage the citation reached, not provenance about source_document_id. A citation first raised in a nonfinal action reads final once a later dated final action maintained the refusal, so final does not mean the row was extracted from a final action.string | null
How the citation resolved. See Disposition Values.
null while pending the daily refresh.string | null
ISO 8601 timestamp of when the current
disposition was first derived or last changed. It does not advance when a daily run re-derives the same value, so a stale-looking timestamp means the disposition has been stable.string | null
The office action the citation was extracted from (
med_...), retrievable through Trademark Documents on the citing mark. Every citation served today carries one. The field is nullable so a citation derived without a stored source document can be represented. Documents are only addressable under a trademark, so when trademark is null there is no route that resolves this id.boolean
Whether more rows are available.
object
Cursor for the next page.
string
Unique request identifier for support and debugging.
Example Request
curl "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/cited-by?limit=20" \
-H "Authorization: Bearer $SIGNA_API_KEY"
Example Response
The second row was matched by reference: the examiner cited registration5567890, and that citation is returned even though the extraction pipeline never linked it to a record.
{
"object": "list",
"data": [
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e",
"object": "citation",
"office_code": "US",
"application_ref": "98123456",
"trademark": {
"id": "tm_019f34d6-2000-7777-8888-000000000001",
"mark_text": "ACME BREW",
"office_code": "US",
"application_number": "98123456",
"registration_number": null,
"status_primary": "pending"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": {
"id": "tm_8kLm2nPq",
"mark_text": "ACME",
"office_code": "US",
"application_number": "87999999",
"registration_number": "5567890",
"status_primary": "active"
},
"refusal_type": "2d",
"action_date": "2026-01-15",
"action_stage": "final",
"disposition": "maintained",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e"
},
{
"id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6f",
"object": "citation",
"office_code": "US",
"application_ref": "97654321",
"trademark": {
"id": "tm_019f34d6-3000-7777-8888-000000000002",
"mark_text": "ACMEE",
"office_code": "US",
"application_number": "97654321",
"registration_number": null,
"status_primary": "inactive"
},
"cited_ref": "5567890",
"cited_ref_type": "registration",
"cited_trademark": null,
"refusal_type": "2d",
"action_date": "2025-06-02",
"action_stage": "nonfinal",
"disposition": "abandoned_after",
"disposition_as_of": "2026-08-30T13:30:00.000Z",
"source_document_id": "med_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c70"
}
],
"has_more": false,
"pagination": { "cursor": null },
"request_id": "req_cV2nL8pQ"
}
Code Examples
curl -G "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/cited-by" \
-H "Authorization: Bearer sig_YOUR_KEY_HERE" \
--data-urlencode "disposition=maintained,abandoned_after" \
--data-urlencode "limit=20"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const citedBy = await signa.trademarks.citedBy("tm_8kLm2nPq", { limit: 20 });
for (const citation of citedBy.data) {
// `trademark` is the application that was refused over this mark.
const blocked = citation.trademark?.mark_text ?? citation.application_ref;
console.log(citation.action_date, blocked, citation.disposition);
}
import requests
resp = requests.get(
"https://api.signa.so/v1/trademarks/tm_8kLm2nPq/cited-by",
headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
params={"disposition": "maintained,abandoned_after", "limit": 20},
)
Errors
| Status | Type | Description |
|---|---|---|
| 400 | validation_error | Malformed id (not a prefixed ID), unknown query parameter, or bad enum value |
| 400 | id_type_mismatch | id is a well-formed ID of another type (e.g. own_...) rather than a tm_... |
| 400 | cursor_expired | Cursor is blank, expired, or was issued for a different endpoint |
| 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
- Trademark Citations: prior marks cited against this application
- Search Citations: cross-mark citation query with office, date, and disposition filters
- Retrieve Trademark: parent mark detail
- Use Case: Trademark Clearance: where citation history fits in a clearance workflow