Skip to main content
POST
/
v1
/
reconcile
Reconcile
curl --request POST \
  --url https://api.signa.so/v1/reconcile \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "items": [
    {
      "office": "<string>",
      "application_number": "<string>",
      "registration_number": "<string>",
      "your_fields": {
        "status": "<string>",
        "owner_name": "<string>",
        "mark_text": "<string>",
        "filing_date": "<string>",
        "registration_date": "<string>",
        "expiry_date": "<string>",
        "renewal_due_date": "<string>",
        "registration_number": "<string>",
        "nice_classes": [
          123
        ]
      }
    }
  ]
}
'
{
  "object": "list",
  "data": [
    {
      "object": "reconciliation",
      "office": "uspto",
      "application_number": "88123456",
      "registration_number": null,
      "result": "mismatch",
      "trademark_id": "tm_018f2f1b-2f15-7d4b-9e3c-b8b5a5c9b012",
      "register_last_updated_at": "2026-07-05T12:00:00.000Z",
      "fields": [
        {
          "field": "status",
          "your_value": "active",
          "register_value": "active",
          "match": true
        },
        {
          "field": "owner_name",
          "your_value": "Nike, Inc.",
          "register_value": "Nike Innovate C.V.",
          "match": false
        }
      ],
      "mismatch_count": 1
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null },
  "request_id": "req_bT9kM3nP"
}

Overview

Compare your trademark matter records against Signa’s normalized register copy without persisting data. Docketing/IPMS vendors and corporate IP teams keep their own matter database, but office registers change: statuses drift, owners change, registration numbers appear later, and renewal dates move. Reconciliation diffs your fields against the register, producing the audit workflow that platforms like Equinox, Patricia, and Anaqua sell as a high-value data quality service. Use this endpoint for bulk sync checks, nightly drift reports, onboarding audits, and customer-visible exception queues. Not-found and ambiguous records are per-item outcomes in the response, not request-level failures.

Request Body

items
object[]
required
Records to reconcile, max 100 items. Results are returned in the same order, with one reconciliation per input item.

Response

A standard list response with data: Reconciliation[]. Pagination is not used; data[i] corresponds to items[i].
object
string
Always list.
data
object[]
has_more
boolean
Always false.
pagination
object
Always { "cursor": null }.
request_id
string
Unique request identifier for support and debugging.
not_found is soft: the request still returns HTTP 200, with result: "not_found" for that item and an empty fields array. ambiguous means the identifier lookup resolved to more than one register record, such as an (office, application_number) pair that is not unique; Signa does not silently choose one.
{
  "object": "list",
  "data": [
    {
      "object": "reconciliation",
      "office": "uspto",
      "application_number": "88123456",
      "registration_number": null,
      "result": "mismatch",
      "trademark_id": "tm_018f2f1b-2f15-7d4b-9e3c-b8b5a5c9b012",
      "register_last_updated_at": "2026-07-05T12:00:00.000Z",
      "fields": [
        {
          "field": "status",
          "your_value": "active",
          "register_value": "active",
          "match": true
        },
        {
          "field": "owner_name",
          "your_value": "Nike, Inc.",
          "register_value": "Nike Innovate C.V.",
          "match": false
        }
      ],
      "mismatch_count": 1
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null },
  "request_id": "req_bT9kM3nP"
}

Code Examples

curl "https://api.signa.so/v1/reconcile" \
  -H "Authorization: Bearer sig_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "office": "uspto",
        "application_number": "88123456",
        "your_fields": {
          "status": "active",
          "owner_name": "Nike, Inc."
        }
      }
    ]
  }'

Errors

StatusTypeDescription
400validation_errorMalformed body, missing identifier, empty your_fields, invalid date format, or unknown body field
401unauthorizedMissing or invalid API key
403forbiddenAPI key missing the trademarks:read scope
422batch_too_largeMore than 100 items. The error carries item_count and item_count_limit
429rate_limitedToo many requests