Skip to main content
GET
/
v1
/
trademarks
/
{id}
/
changes
Trademark Changes
curl --request GET \
  --url https://api.example.com/v1/trademarks/{id}/changes
{
  "object": "list",
  "data": [
    {
      "version": 4,
      "change_type": "updated",
      "changed_fields": ["status_stage", "status_reason"],
      "old_values": { "status_stage": "examining", "status_reason": null },
      "new_values": { "status_stage": "registered", "status_reason": null },
      "source_data_date": "2025-08-12",
      "office_code": "uspto",
      "created_at": "2025-08-13T03:14:09Z"
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null },
  "livemode": true,
  "request_id": "req_xyz"
}

Overview

Returns the diff log from the trademark_changes table for a single mark, reverse chronological by default. Each entry captures the fields that changed in one ingestion version, the old and new values, and the source data date. Use this when you need an audit trail of how a record evolved (status flips, owner changes, classification edits) rather than the office event timeline you get from /history.

Path Parameters

id
string
required
Trademark ID (tm_...).

Query Parameters

changed_field
string
Restrict to versions whose changed_fields array includes this field name (e.g. status_stage, owner_names, nice_classes).
sort
string
default:"-changed_at"
Sort order. One of -changed_at (newest first, default) or changed_at (oldest first).
limit
integer
default:"20"
Page size (1-100).
cursor
string
Opaque pagination cursor from a previous response.

Response

data
object[]
Array of change records ordered by created_at.
data[].version
integer
Monotonically increasing version number for this trademark.
data[].change_type
string
Change classification (e.g. created, updated, corrected).
data[].changed_fields
string[]
Names of fields touched in this version.
data[].old_values
object
Field-keyed object of values before the change. null for the initial version.
data[].new_values
object
Field-keyed object of values after the change.
data[].source_data_date
string
ISO date the source office published this version, when known.
data[].office_code
string
Lowercase office code that produced the change.
data[].created_at
string
ISO 8601 timestamp when Signa observed and persisted the change.
{
  "object": "list",
  "data": [
    {
      "version": 4,
      "change_type": "updated",
      "changed_fields": ["status_stage", "status_reason"],
      "old_values": { "status_stage": "examining", "status_reason": null },
      "new_values": { "status_stage": "registered", "status_reason": null },
      "source_data_date": "2025-08-12",
      "office_code": "uspto",
      "created_at": "2025-08-13T03:14:09Z"
    }
  ],
  "has_more": false,
  "pagination": { "cursor": null },
  "livemode": true,
  "request_id": "req_xyz"
}

Code Examples

curl "https://api.signa.so/v1/trademarks/tm_abc123/changes?changed_field=status_stage&limit=10" \
  -H "Authorization: Bearer sig_live_YOUR_KEY_HERE"

Errors

StatusTypeDescription
400validation_errorInvalid query parameter
401unauthorizedMissing or invalid API key
404not_foundTrademark ID does not exist
429rate_limitedToo many requests
See Errors for the full envelope.