The Signa API is a RESTful JSON API for trademark search, retrieval, and reference data. All endpoints are versioned underDocumentation Index
Fetch the complete documentation index at: https://docs.signa.so/llms.txt
Use this file to discover all available pages before exploring further.
/v1/.
Base URL
/v1/. The API follows additive-only evolution: new fields and endpoints may be added, but existing fields are never removed or renamed within v1.
Authentication
All API requests require a Bearer token in theAuthorization header.
Getting Your API Key
Sign up at app.signa.so and navigate to API Keys in the sidebar. Click + Create new key, give it a name, and copy the full key immediately — it is only shown once. Manage all your keys (create, rotate, revoke) from the API Keys dashboard.Key Format
API keys use the formatsig_{48 hex chars}. Unrecognized prefixes are rejected with 401 before any database lookup.
Scopes
Each API key has one or more scopes that control what it can access:| Scope | Grants Access To |
|---|---|
trademarks:read | Trademark search, suggest, entity, reference, and proceeding endpoints |
api-keys:manage | API key creation, rotation, and management |
billing:read | Usage and log endpoints |
Key Rotation
Rotate a key when you suspect it has been compromised, when a team member leaves, or as part of regular security hygiene. You can rotate from the API Keys dashboard (click the … menu on any key and select Rotate key) or programmatically via the Rotate API Key endpoint. Rotation issues a new key and immediately invalidates the old one. Update your environment variables before rotating to avoid downtime.Security Best Practices
- Rotate keys when a key may be compromised
- Use the minimum scopes needed for each key
- Set expiration dates on keys used for temporary integrations
- Use separate keys for different environments and services
- Monitor usage in the dashboard for unexpected patterns
Browser Usage and CORS
The Signa API responds withAccess-Control-Allow-Origin: *, so browser tools, notebooks, the Signa dashboard, and our docs playground can all call it directly. This is safe by design: the API authenticates with a Bearer token that is never read from a cookie, so a permissive CORS header does not expose customer accounts to drive-by requests from third-party origins.
It does, however, mean that anyone with a valid sig_* key can use it from anywhere — including the browser DevTools console of a page where the key is bundled. The threat model is key exposure, not CORS.
If you need to call Signa from a browser context, do one of the following:
- Proxy through your backend — your server holds the API key, your frontend calls your server. This is the standard pattern.
- Issue a dedicated key per environment — create a separate test organization in the dashboard with its own key, and scope/limit it independently.
- Restrict by scope and expiry — for any key that might end up somewhere observable, use the narrowest scopes possible and set an
expires_at.
POST /v1/organization/api-keys/{id}/rotate. Rotation invalidates the old secret atomically.
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: literal strings
trueorfalse(values like1,yes, orTRUEare rejected) - Dates: ISO 8601 (
2026-03-19T12:00:00Z) or date-only (2026-03-19)
Response Format
Single-resource endpoints return the resource at the top level:has_more at the top level and a pagination object:
request_id. Include it when contacting support.
Status Codes
| Code | Description |
|---|---|
200 | Success |
201 | Created |
400 | Bad request (validation error) |
401 | Unauthorized (missing or invalid API key) |
403 | Forbidden (insufficient scopes) |
404 | Not found |
409 | Conflict (idempotency key reused with different body) |
410 | Gone (entity merged — see Errors) |
429 | Rate limited |
500 | Internal server error |
503 | Service unavailable |
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.