Skip to main content
GET
Screen a Name
Beta. Requires the screening:read scope — granted to design partners during beta. This endpoint provides a risk signal, not legal advice.

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

ParameterTypeNotes
qstringCandidate mark text; 2–200 non-whitespace characters. Exactly one of q or trademark_id is required.
trademark_idstringExisting register record (tm_...) to use as the candidate. Exactly one of q or trademark_id is required.
nice_classesnumber[]Intended Nice classes, 1–45. Sent as a comma-separated list. Acts as a hard class filter.
goods_servicesstringFree-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.
jurisdictionsstring[]Territory codes such as US and EU. Default: all live-coverage jurisdictions.
officesstring[]Registering office codes such as uspto and euipo. Default: all live offices.
includelive | alllive by default; all also includes dead marks.
sensitivitystrict | standard | broadMatch-tier admission threshold. strict admits exact/normalized matches; standard adds close fuzzy and strong phonetic matches; broad adds weaker fuzzy matches.
limitnumberPage size from 1–50. Default: 20.
Array query parameters use comma-separated values, without brackets.

Screen an existing mark

Use trademark_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.
The response echoes the source in 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 in data[] is a screening_hit with one closed risk band:
BandMeaning
highStrongest combination of name match, goods/services overlap, and live status.
mediumA meaningful conflict signal that needs review.
lowA surfaced but lower-priority signal, including admitted dead-mark results.
The leading screening.verdict summarizes the full banded result set, not only the returned page:
VerdictRule
high_riskAt least one high-band conflict exists.
cautionNo high-band conflict exists, but at least one medium-band conflict exists.
clearNo high- or medium-band conflict exists. Clear does not mean registrable.
Hits also explain the coarse classification through 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

  • warnings is 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: true means the analysis horizon was capped. It is separate from has_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.

SDK