Changelog
July 25, 2026: Jurisdiction protection scope
A precision fix to whatjurisdictions means, plus honest screening verdicts
when register coverage is incomplete. This is a behavior change: the same
request can now return more results and, for screening, a new verdict value.
Because it changes result sets during beta, read this before upgrading.
jurisdictions now selects rights that protect, or seek protection, in a
territory, not just literal territory legs. Previously jurisdictions=FR
matched only French national filings and Madrid designations of France. It now
also matches regional rights whose membership covers France, so a EU trade mark
(which protects France) is included. See
Search Trademarks and the
glossary.
- Result counts grow. A country-scoped filter picks up the regional rights
that protect it. On production data,
jurisdictions=FRroughly doubles once EU trade marks are counted. Countries with no live national office but active EU coverage (for exampleDE) go from a handful of Madrid hits to full EUTM coverage. territory_match=directrestores the old behavior. Pass it to match only literal territory legs, byte-for-byte the pre-July-2026 result set. The default isterritory_match=protection. Requesting a regional code (EU) stays strict on search: it matches EUTMs and IRs designating the EUIPO, not member-state national marks.- Why results grew is now explained. Under the default
protectionmode, each hit returned with ajurisdictionsfilter carriesterritory_matches[], mapping the requested code to the territory it matched on and the basis (directleg orregional_membership). The field is absent underterritory_match=direct.search_meta.territory_matchechoes the mode that ran. - Suggest and image search grow too.
GET /v1/trademarks/suggestandPOST /v1/trademarks/search/imageapply the same protection-scope expansion and acceptterritory_match. Suggest now also matches Madrid designations of a requested territory (an international registration designating France is suggested underjurisdictions=FR), and image search echoes the applied mode assearch_meta.territory_match. - Member-country codes are newly accepted. Benelux member states (
BE,LU,NL) and OAPI member states (for exampleSN) had no jurisdiction row of their own and previously returned400. They are now validjurisdictionsvalues, sojurisdictions=BEselects Benelux and EU rights that protect Belgium. - Saved searches replay under the new semantics automatically. A stored
search with
jurisdictions=FRis re-executed against the current matcher, so it now returns EU trade marks it did not before, with no change on your side. If you need a saved search to keep the old literal-leg behavior, re-save it withterritory_match=direct. - Breaking for pagination. Because the query shape of a jurisdiction-filtered
search changed, pagination cursors minted before this release on such a query
now return
400 cursor_invalid. Clients holding a stale cursor must restart pagination from the first page. - During the rolling deploy, expect a brief mixed window. While the release
rolls out, requests may land on either old or new instances, so a
jurisdiction-filtered query can alternate between the old and new result sets,
and
territory_matchmay return400from a not-yet-updated instance. Stale jurisdiction-filtered cursors invalidate as above. The window closes once every instance is on the new release; retry the request if you hit it.
needs_review when register coverage is incomplete.
A clearance verdict is only trustworthy if Signa can actually see the marks that
protect a requested territory. When the register that would carry a conflict is
not connected live, a zero-conflict screen must not read as clear.
- New verdict value.
GET /v1/screeningverdicts are nowhigh_risk/caution/needs_review/clear.needs_reviewis a would-beclearthat could not be confirmed because a requested territory’s register is dark or stale. Handle it as “we could not rule this out”, not as a weaker clear. Found conflicts still band high or medium exactly as before, observed risk is never suppressed. - Why this is deliberate. Before this change, screening a common brand in a
class scoped to a territory whose national register was not yet connected could
return
clearwith zero conflicts, even though real national marks existed and were simply invisible to us. Returningclearthere is a false negative on a clearance product. We would rather tell you the corpus was incomplete than imply a name is safe. - A new
coverageblock on the screening response reports which registers gated the verdict (offices axis in ST.3 codes, territories axis in jurisdiction codes) and acomplete_for_clearboolean. See Screen a Name. - Check a Listing gets the same protection-scope expansion, and an incomplete
requested register forces a would-be
cleartocaution(the listing verdict enum is unchanged). - Screening responses are no longer client-cacheable. They are served
Cache-Control: private, no-store. Re-run a screen rather than replaying a stored response. screening_idvalues changed at this epoch. The identifier now folds the coverage inputs that can flip a verdict, so ids minted before this release do not correspond to ids minted after. Do not treat a pre-releasescreening_idas stable across this boundary.- Watches are unchanged. Monitoring keeps office-based scoping and does not
apply the protection-scope expansion, so a watch scoped to a country still
watches that country’s office only (a
DEwatch does not surface EU trade marks). See Create Watch.
July 14, 2026
- Compare (beta):
POST /v1/compare, its TypeScript SDK resource, and its developer guide complete the public-facing Intelligence surface alongside Screening. Compare scores one candidate against up to 10 selected conflicts.