> ## Documentation Index
> Fetch the complete documentation index at: https://docs.signa.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Trademark Citations

> Prior marks an examiner cited against this application as a bar to registration

## When To Use This

Use this endpoint when you are looking at one application and need to know what the examiner put in its way. Each row is one prior mark cited in one office action against this application, with the stage the citation reached and how it ultimately resolved.

This is the inbound direction. For the outbound direction, the applications this mark was cited *against*, use [Trademark Cited By](/api-reference/trademarks/trademark-cited-by).

<Note>
  **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](/api-reference/reference/list-offices) to see the state of any office programmatically, rather than inferring coverage from an empty response.
</Note>

## Freshness

Citations are extracted hourly from stored office actions. Dispositions are recomputed once a day, so a newly extracted citation carries `disposition: 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.

## Path Parameters

<ParamField path="id" type="string" required>
  Trademark ID (`tm_...`). This is the citing application, the mark the office action was issued against.
</ParamField>

## Query Parameters

<ParamField query="disposition" type="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.
</ParamField>

<ParamField query="action_stage" type="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.
</ParamField>

<ParamField query="limit" type="integer" default="20">
  Page size (1-100).
</ParamField>

<ParamField query="cursor" type="string">
  Opaque cursor from the previous response's `pagination.cursor`.
</ParamField>

Results are ordered by `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

<ResponseField name="object" type="string">Always `list`.</ResponseField>

<ResponseField name="data" type="object[]">
  <Expandable title="Citation object">
    <ResponseField name="id" type="string">Citation ID (`cit_...`).</ResponseField>
    <ResponseField name="object" type="string">Always `citation`.</ResponseField>
    <ResponseField name="office_code" type="string | null">Office that issued the action, uppercase ST.3 (e.g. `US`).</ResponseField>
    <ResponseField name="application_ref" type="string">Application number the office action was issued against, as printed by the office.</ResponseField>
    <ResponseField name="trademark" type="object | null">Summary of the citing application (`id`, `mark_text`, `office_code`, `application_number`, `registration_number`, `status_primary`). On this endpoint it is the mark in the path.</ResponseField>
    <ResponseField name="cited_ref" type="string">The prior mark reference the examiner cited, as an application or registration number.</ResponseField>
    <ResponseField name="cited_ref_type" type="string">Whether `cited_ref` is a `registration` or an `application` number.</ResponseField>
    <ResponseField name="cited_trademark" type="object | null">Summary of the cited prior mark, same fields as `trademark`. `null` when the citation carries no persisted link to a Signa record, in which case `cited_ref` is the only identifier available. It does not mean the cited mark is absent from the register: resolution runs once, at extraction time, so a mark ingested after its citations were extracted keeps a null link. Read it as "matched by reference only".</ResponseField>
    <ResponseField name="refusal_type" type="string">Office-local refusal ground. `2d` is the USPTO §2(d) likelihood-of-confusion ground. This vocabulary is office-scoped, not canonical across offices.</ResponseField>
    <ResponseField name="action_date" type="string | null">ISO date of the office action (`YYYY-MM-DD`).</ResponseField>
    <ResponseField name="action_stage" type="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.</ResponseField>
    <ResponseField name="disposition" type="string | null">How the citation resolved. See the table below. `null` while pending the daily refresh.</ResponseField>
    <ResponseField name="disposition_as_of" type="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.</ResponseField>
    <ResponseField name="source_document_id" type="string | null">The office action the citation was extracted from (`med_...`), retrievable through [Trademark Documents](/api-reference/trademarks/records/documents) on the mark in the path, which is always the citing mark here. Every citation served today carries one. The field is nullable so a citation derived without a stored source document can be represented.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="has_more" type="boolean">Whether more citations are available.</ResponseField>
<ResponseField name="pagination" type="object">Cursor for the next page.</ResponseField>
<ResponseField name="request_id" type="string">Unique request identifier for support and debugging.</ResponseField>

### Disposition Values

A citation carries exactly one disposition, derived from the application's later prosecution events and from whether the citation reappeared in subsequent office actions.

| Value             | Meaning                                                                                                                                                    |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `published`       | The application published or registered after the citation date. The citation did not stop it.                                                             |
| `maintained`      | The refusal reached a final office action. The citation held.                                                                                              |
| `abandoned_after` | The application went abandoned after the citation date and was not revived. The outcome of the citation itself is unknown, the application simply stopped. |
| `withdrawn`       | A later citation-bearing office action for the same application dropped this reference, with no publication yet. The examiner backed off.                  |
| `citation_issued` | No later signal yet. The application is still in prosecution, or its event record does not yet support a stronger label.                                   |
| `null`            | The disposition has not been computed yet. Recomputed on the daily refresh.                                                                                |

When more than one signal applies, the strongest one wins, in this order: `published`, `maintained`, `abandoned_after`, `withdrawn`, `citation_issued`. A mark that was cited, refused to final, and then abandoned reads `maintained`, because a refusal held to final is the more informative fact. The `action_stage` and the mark's own status remain on the record for anyone who needs the detail.

## Example Request

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/citations?action_stage=final&limit=20" \
    -H "Authorization: Bearer $SIGNA_API_KEY"
  ```
</RequestExample>

## Example Response

<ResponseExample>
  ```json theme={null}
  {
    "object": "list",
    "data": [
      {
        "id": "cit_0198c2f1-7e2a-7b34-9c11-3d5f8a2b4c6e",
        "object": "citation",
        "office_code": "US",
        "application_ref": "98123456",
        "trademark": {
          "id": "tm_8kLm2nPq",
          "mark_text": "ACME",
          "office_code": "US",
          "application_number": "98123456",
          "registration_number": null,
          "status_primary": "pending"
        },
        "cited_ref": "5567890",
        "cited_ref_type": "registration",
        "cited_trademark": {
          "id": "tm_019f34d6-2000-7777-8888-000000000001",
          "mark_text": "ACME CO",
          "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"
      }
    ],
    "has_more": false,
    "pagination": { "cursor": null },
    "request_id": "req_cV2nL8pQ"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl -G "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/citations" \
    -H "Authorization: Bearer sig_YOUR_KEY_HERE" \
    --data-urlencode "disposition=maintained" \
    --data-urlencode "limit=20"
  ```

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";

  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const citations = await signa.trademarks.citations("tm_8kLm2nPq", { limit: 20 });

  for (const citation of citations.data) {
    console.log(citation.action_date, citation.cited_ref, citation.disposition);
  }
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://api.signa.so/v1/trademarks/tm_8kLm2nPq/citations",
      headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
      params={"disposition": "maintained", "limit": 20},
  )
  ```
</CodeGroup>

## Counting Without Listing

[Retrieve Trademark](/api-reference/trademarks/retrieve-trademark) returns `citations_count` for the same set of rows. `0` means the office is covered and this mark has no citations. `null` means citations are not counted for that office at all, which is not the same as "no citations exist". Use `capabilities.citations` on [List Offices](/api-reference/reference/list-offices) to tell the two apart.

## 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 Cited By](/api-reference/trademarks/trademark-cited-by): applications this mark was cited against
* [Search Citations](/api-reference/citations/search-citations): cross-mark citation query with office, date, and disposition filters
* [Retrieve Trademark](/api-reference/trademarks/retrieve-trademark): parent mark detail, including `citations_count`
* [Trademark Documents](/api-reference/trademarks/records/documents): the office actions citations are extracted from
