Screen a Name
Intelligence
Screen a Name
Run a fast, deterministic knockout screen for one candidate name (beta)
GET
Screen a Name
Overview
GET /v1/screening answers “could this candidate name conflict with an
existing mark?” Send a name and, optionally, its intended Nice classes or
goods/services. Screening searches live register coverage, assigns each
surfaced conflict a coarse band, and derives one request-level verdict.
The endpoint is synchronous, deterministic within its rules and corpus
versions, and text-only. It never returns a numeric similarity score. A
clear verdict means that no high- or medium-band conflict was found; it does
not mean that the mark is registrable.
Each request is billed at 10 units.
Request
| Parameter | Type | Notes |
|---|---|---|
q | string | Candidate mark text; 2–200 non-whitespace characters. Exactly one of q or trademark_id is required. |
trademark_id | string | Existing register record (tm_...) to use as the candidate. Exactly one of q or trademark_id is required. |
nice_classes | number[] | Intended Nice classes, 1–45. Sent as a comma-separated list. Acts as a hard class filter. |
goods_services | string | Free-text intended goods/services, up to 2,000 characters. Used for class inference when classes are omitted and for goods/services matching when supported by the active resolver. |
jurisdictions | string[] | Territory codes such as US and EU. Default: all live-coverage jurisdictions. |
offices | string[] | Registering office codes such as uspto and euipo. Default: all live offices. |
include | live | all | live by default; all also includes dead marks. |
sensitivity | strict | standard | broad | Match-tier admission threshold. strict admits exact/normalized matches; standard adds close fuzzy and strong phonetic matches; broad adds weaker fuzzy matches. |
limit | number | Page size from 1–50. Default: 20. |
Screen an existing mark
Usetrademark_id instead of q for register-to-register discovery. Screening
uses the record’s mark text and, when you omit both nice_classes and
goods_services, its own Nice classes as the intended-use profile. The
candidate’s collapsed family is removed before conflicts are banded, so it
cannot appear as its own result.
screening.candidate.trademark_id. Unknown
records return 404 not_found; records without textual mark content, such as
design-only marks, return 422 not_screenable.
Bands and verdicts
Every item indata[] is a screening_hit with one closed risk band:
| Band | Meaning |
|---|---|
high | Strongest combination of name match, goods/services overlap, and live status. |
medium | A meaningful conflict signal that needs review. |
low | A surfaced but lower-priority signal, including admitted dead-mark results. |
screening.verdict summarizes the full banded result set, not only
the returned page:
| Verdict | Rule |
|---|---|
high_risk | At least one high-band conflict exists. |
caution | No high-band conflict exists, but at least one medium-band conflict exists. |
clear | No high- or medium-band conflict exists. Clear does not mean registrable. |
reason_codes,
mark_match, goods_services_match, jurisdiction_match, and a separate
litigation_risk block. Reason codes and warnings are extensible; clients
should tolerate values they do not yet recognize.
Response
screening.rules_version and screening.as_of identify the rules and corpus
freshness behind the result. screening.inferred_nice_classes appears only
when class inference ran (i.e. nice_classes was omitted from the request).
Warnings and limitations
warningsis an open set. Handle known values and safely display or log new values rather than rejecting the response.- A missing goods/services description may produce
no_goods_services; the result then has less context for class and goods/services matching. summary.truncated: truemeans the analysis horizon was capped. It is separate fromhas_more, which describes response pagination.- Screening v1 is text-only. It does not compare logos, designs, Vienna codes, or images.
- Backend failures return an error rather than a partial or false
clear.