| 400 | validation_error | A parameter or body field is missing or invalid. errors[] lists each problem. See request format. |
| 400 | id_type_mismatch | The ID has the wrong prefix for this endpoint, e.g. a tm_ ID where an own_ ID is expected. |
| 400 | cursor_expired | The cursor is empty, malformed, from another endpoint, or no longer valid. Restart from the first page. |
| 400 | cursor_invalid | The cursor no longer matches the request, because a filter or the sort changed, the search index was rebuilt, or the ranking changed (search_meta.ranking_version). Restart from the first page. |
| 400 | cursor_window_exceeded | The cursor points past the 10,000-row search window. |
| 401 | unauthorized | The API key is missing, invalid, expired or revoked. |
| 403 | forbidden | The API key lacks the scope this endpoint needs. |
| 403 | plan_gated | Your plan doesn’t include this feature. |
| 403 | plan_limit_exceeded | The request goes beyond your plan’s limit, such as log retention. |
| 403 | plan_upgrade_required | Buying extra credits isn’t available on your plan. |
| 403 | edge_rejected | Blocked by our security rules before reaching the API, including a GET query string over 2 KB. Send long lists, such as many trademark_ids, by POST. |
| 404 | not_found | The resource doesn’t exist. |
| 409 | conflict | The Idempotency-Key was already used for a different request. |
| 409 | idempotency_processing | A request with this Idempotency-Key is still running. Retry shortly. |
| 409 | resource_quota_exceeded | You’ve reached your plan’s limit on portfolios, managed marks or watches. |
| 409 | external_ref_conflict | The external_ref is already used by another trademark in this portfolio. |
| 409 | portfolio_in_use | Webhook endpoints still reference this portfolio. |
| 410 | entity_merged | The owner or entity was merged into another. Use the ID in merged_into. |
| 410 | attestation_expired | The attestation period is older than the 25-month retention window. |
| 410 | replay_window_expired | The after checkpoint is older than the 30-day retention window. |
| 413 | payload_too_large | The request body is over 8 KB. Trademark search (POST /v1/trademarks) and batch and compute endpoints, such as POST /v1/trademarks/batch and POST /v1/deadlines/compute, accept up to 64 KB; image search uploads accept up to 8 MB. Split larger batches. |
| 422 | entity_too_large | The entity, entity group or family graph is too large for this request. Query a member directly, or retry an include_family=true request with include_family=false. |
| 422 | portfolio_too_large | Deadline computation is limited to portfolios of 5,000 marks. |
| 422 | batch_too_large | The batch has more items than the endpoint accepts. item_count_limit gives the limit. |
| 422 | attestation_period_open | The attestation period is the current month. Pass partial=true for an interim artifact. |
| 422 | capability_not_available | Signa doesn’t serve this data for the requested office, for example proceedings for an office whose capabilities.proceedings is not available. Carries capability, capability_state and office_code. Not charged. |
| 422 | attestation_unsupported_scope | Signa doesn’t cover any office in the watch’s scope. |
| 422 | period_before_watch | The attestation period ended before the watch was created, so there is no monitoring to attest. Request the month the watch was created in, or a later one. |
| 429 | rate_limited | Too many requests. Wait retry_after seconds. See Rate limits. |
| 429 | daily_credit_cap_exceeded | You’ve reached your daily credit cap. It resets at UTC midnight. |
| 429 | insufficient_credits | Your credit balance is used up. |
| 500 | internal_error | Something went wrong on our side. |
| 502 | upstream_error | A backend service failed to respond. |
| 503 | service_unavailable | A backend service is temporarily down or overloaded, or a search timed out before it finished. |
| 504 | timeout | The request took too long. Retry, or narrow your filters. |
| 504 | preview_timeout | The watch preview was too heavy to run. Narrow the query. |