/v1/.
Base URL
Authentication
Add anAuthorization header with your API key to every request:
Request Format
- Content-Type:
application/jsonfor request bodies - Query params:
snake_case(e.g.,?status_stage=registered) - Arrays: comma-separated values (e.g.,
?jurisdictions=US,EU) - Date ranges: flat underscore operators (e.g.,
?filing_date_gte=2020-01-01&filing_date_lt=2025-01-01) - Booleans: query parameters accept
true,1,yes,toryfor true andfalse,0,no,fornfor false, in any case; any other value returns400. Two take only the literal stringstrueorfalse:partialon the watch attestation andforceon webhook secret rotation - Dates: query date filters such as
filing_date_gtetake a date only (2026-03-19); a datetime returns400. Timestamp filters such asupdated_at_gtealso accept an ISO 8601 datetime (2026-03-19T12:00:00Z), and so do the date ranges in aPOST /v1/trademarksbody
Response Format
Single-resource endpoints return the resource at the top level:object: "list" with the results in data. See Pagination.
Every response includes a top-level request_id, except publicly cached reference data (such as offices, jurisdictions, classifications and design codes), which carries no per-request id so a shared cache never hands one caller’s id to another. Include request_id when contacting support; for a cached reference response, quote the x-amz-cf-id response header and the time of the request instead.
Status Codes
Idempotency
Mutating requests (POST, PATCH, DELETE that create or change a resource) require an Idempotency-Key header: any unique string, 1 to 255 characters of letters, numbers, dashes, and underscores.
- Same key, same URL, same body: the cached response is replayed (safe to retry).
- Same key with a different request body, or against a different URL:
409 conflict. A key is bound to the exact request it first ran, so reusing one key acrossDELETE /v1/watches/wat_1andDELETE /v1/watches/wat_2is a conflict, not a replay. Generate a fresh key per distinct request. - Same key while the original request is still in flight:
409 idempotency_processing; retry shortly.
POST endpoints (search, batch lookup, suggest, watch preview, alert lookup) don’t create anything and are exempt: the header is optional there, though its format is still validated if you send one. See Resilience for the full exemption list.
Next Steps
Pagination
Cursor-based iteration with stable ordering.
Rate Limits & Quotas
Monthly quota pools, per-minute limits, headers, and 429 handling.
Errors
RFC 9457-inspired error format and catalog.