Skip to main content
This guide walks you through two tiers. The first gets you a search result in 5 minutes. The second adds the TypeScript SDK, filters, pagination, and the enriched owner view.

Tier 1: Your first search (5 minutes)

1

Get an API key

Sign up at app.signa.so and create an API key from the dashboard. Your key will look like this:
All keys use the format sig_{48 hex chars}. For development or CI, create a separate test organization in the dashboard with its own key so it stays isolated from production usage and billing.
2

Set your API key as an environment variable

3

Search for a trademark

Pass q for the query and comma-separated values for array filters.
For complex filter combinations or aggregations, use POST with a JSON body. See Search Trademarks for details.
4

Inspect the response

Search returns a list: results in data, has_more when there’s another page, and a request_id for support.
Switch to POST and add "options": { "aggregations": ["office_code", "status_stage", "nice_classes"] } to the request body to get faceted counts alongside results. This is useful for building filter UIs. Aggregations are POST-only because they don’t fit cleanly in a query string.

Tier 2: SDK, filters, and pagination (15 minutes)

1

Install the TypeScript SDK

Initialize the client:
2

Search with filters

Narrow results by office, Nice class, status, filing date, and filing route. q is ranked through the default similarity channels: identical, fuzzy, embedded, and lookalike. Pass similarity to choose the channels yourself. identical is always on.
The response includes aggregation counts you can use to build filter UIs:
relevance_score (0 to 100) orders the results. It is not a likelihood of confusion. match.tier says how close the hit is (identical, near_identical, similar, or related), and match.via lists the channels that found it.
Similarity channels: identical for the same text after folding case, accents, punctuation, spacing, and trademark notices; fuzzy for spelling edits of one or two letters; embedded for the term inside a longer mark (NIKE in NIKE AIR); phonetic for sound-alikes like “NOVA” / “KNOVA” / “NOWA” (off by default); and lookalike for character substitutions like 0/O or Cyrillic homoglyphs. For a full clearance search, send all five. To filter on the literal text instead of ranking it, use the mark_text_* filters. See Similarity and Text filters.
3

Handle pagination

Results come in pages. The SDK walks them for you; with plain HTTP, pass pagination.cursor from one response into the next request. See Pagination.
4

Get full trademark details

Retrieve a single trademark by ID to get the full record.
The detail level varies by endpoint: GET /v1/trademarks/{id} returns the full record, list endpoints return a slimmer shape with the fields most useful for result cards.
5

Look up an owner

Every trademark detail response includes an owners[] array. Use the owner ID to get the full owner profile, including entity resolution data and filing statistics.

What’s next

Search trademarks

Similarity channels, text filters, exclusions, and aggregations for trademark clearance.

Entity resolution

How Signa normalizes owner names, links corporate parents, and resolves aliases across offices.

Deadline rules

Jurisdiction-aware renewal and declaration deadlines, with every rule listed by GET /v1/deadline-rules.

API Reference

Complete documentation for all endpoints with interactive playground.