Documentation Index
Fetch the complete documentation index at: https://docs.signa.so/llms.txt
Use this file to discover all available pages before exploring further.
The references namespace provides access to the lookup tables and classification systems used across the trademark world. These endpoints are useful for building filter UIs, validating user input, and understanding how Signa normalizes data across offices.
Nice Classifications
The Nice Classification system divides goods and services into 45 classes (1-34 for goods, 35-45 for services).
List All Classes
const classes = await signa.references.classifications();
for (const cls of classes.data) {
console.log(`Class ${cls.class_number}: ${cls.title}`);
}
Search Classes
const classes = await signa.references.classifications({ q: 'software' });
Class Detail
Retrieve a single class with its full description:
const class9 = await signa.references.classification(9);
console.log(class9.title);
console.log(class9.description);
Suggest Classes for a Business Description
Turn a natural-language description into ranked Nice classes with confidence and rationale. Use this when you just need to know which classes apply — for filter UIs, watch setup, clearance pre-screening, or portfolio analysis. Billed as 1 unit per call.
const result = await signa.references.suggestClassifications({
description: 'e-commerce company selling sneakers',
jurisdiction_code: 'US',
});
for (const c of result.classes) {
console.log(`Class ${c.class_number} (${c.confidence}) — ${c.rationale}`);
}
if (result.ambiguous) {
console.log(`Clarify: ${result.clarification_question}`);
}
Ambiguous descriptions like "coffee company" come back with ambiguous: true and a clarifying question, plus all plausible class interpretations. Identical request bodies are cached server-side for 24 hours.
See the Suggest Classifications API reference for the full response shape.
Goods & Services
The pre-approved-terms catalog (Harmonised Database + USPTO ID Manual) and AI-assisted goods/services specification drafting.
Search the Term Catalog
Browse or search the aggregated term library. At least one of q or class must be provided.
// Scoped — autocomplete inside Class 9
const terms = await signa.goodsServices.list({
q: 'software',
class: 9,
});
for await (const term of terms) {
console.log(term.term, term.accepted_offices);
}
// Cross-class — which classes accept the term "poster"?
const poster = await signa.goodsServices.list({ q: 'poster' });
for await (const term of poster) {
console.log(`Class ${term.class_number}: ${term.term}`);
}
// Browse all terms in a class (no q)
const allClass25 = await signa.goodsServices.list({ class: 25, limit: 50 });
Filter for internationally harmonised terms only:
const terms = await signa.goodsServices.list({
q: 'computer',
class: 9,
harmonised_only: true,
});
Draft a Goods/Services Specification
Turn a natural-language description into ranked Nice classes with filing-ready wording per class. Every returned term is validated against the Harmonised Database + USPTO ID Manual — no invented wording. Billed as 2 units per call.
const spec = await signa.goodsServices.suggest({
description: 'e-commerce company selling sneakers',
jurisdiction_code: 'US',
});
for (const c of spec.classes) {
console.log(`Class ${c.class_number} — ${c.title}`);
for (const term of c.accepted_terms) {
console.log(` • ${term.term}`);
}
}
Pass class_number to refine wording for a single class the applicant has already chosen:
const refined = await signa.goodsServices.suggest({
description: "men's running shoes for marathon training",
class_number: 25,
});
See the Suggest Goods & Services API reference for the full response shape.
Offices
Trademark offices that Signa ingests data from.
List All Offices
const offices = await signa.references.offices();
for (const office of offices.data) {
console.log(office.code, office.name, office.country_code);
// "uspto", "United States Patent and Trademark Office", "US"
}
Office Detail
const office = await signa.references.office('uspto');
console.log(office.name);
console.log(office.website);
console.log(office.supported_features);
Include the office’s status code mappings (how raw office codes map to Signa’s normalized statuses):
const office = await signa.references.office('uspto', {
include: ['status_mappings'],
});
for (const mapping of office.status_mappings) {
console.log(mapping.raw_code, '→', mapping.normalized_status);
}
Jurisdictions
Jurisdictions represent the legal territories where trademarks have effect. A single office may cover multiple jurisdictions (e.g., EUIPO covers all EU member states, WIPO covers Madrid Protocol members).
List All Jurisdictions
const jurisdictions = await signa.references.jurisdictions();
for (const j of jurisdictions.data) {
console.log(j.code, j.name);
// "US", "United States"
// "EU", "European Union"
}
Jurisdiction Detail
const us = await signa.references.jurisdiction('US');
console.log(us.name);
console.log(us.offices); // offices that cover this jurisdiction
console.log(us.renewal_period); // renewal cycle info
Deadline Rules
List maintenance deadline rules (renewals, declarations of use, incontestability filings) across modeled jurisdictions. Each rule is self-contained — it carries the parent jurisdiction’s renewal_period_years and statutory sources denormalized onto it.
const rules = await signa.references.deadlineRules({ jurisdiction: 'US' });
for (const rule of rules.data) {
console.log(rule.name, rule.due_year, rule.consequence_if_missed);
for (const src of rule.sources) {
console.log(' ', src.citation, src.url);
}
}
Useful for building deadline calculators, surfacing statutory citations alongside an alert, or exposing what your customers can expect for a given jurisdiction. The Signa API covers deadline rules for 21 jurisdictions.
Opposition Rules
List opposition window rules — the statutory windows during which third parties may oppose a published mark. Each rule includes the office’s local time zone, holiday calendar, statutory citations, and any common (non-statutory but routine) extension.
const rules = await signa.references.oppositionRules({ office: 'euipo' });
for (const rule of rules.data) {
console.log(
rule.office_code,
rule.filing_route,
rule.window_months ?? rule.window_days,
);
}
The same rule corpus powers the opposition_window field on a trademark detail response. Composite key for a rule is (office_code, filing_route, trigger_event).
Statuses
Signa normalizes the hundreds of raw status codes from different offices into a canonical status system. Use this endpoint to understand the mapping.
List All Statuses
const statuses = await signa.references.statuses();
for (const s of statuses.data) {
console.log(s.primary, s.stage, s.reason);
}
Filter by Office
See how statuses are used at a specific office:
const usStatuses = await signa.references.statuses({ office: 'uspto' });
Event Types
The event type codes used in trademark prosecution history:
const eventTypes = await signa.references.eventTypes();
for (const et of eventTypes.data) {
console.log(et.code, et.label, et.description);
}
Vienna Design Codes
The Vienna Classification system categorizes figurative elements (logos, designs) in trademarks.
List Codes
// Top-level categories
const categories = await signa.references.designCodes({ depth: 1 });
// Divisions within a category
const divisions = await signa.references.designCodes({ depth: 2, category: '03' });
Code Detail
Retrieve a specific code with its children:
const code = await signa.references.designCode('03.05');
console.log(code.code); // "03.05"
console.log(code.description); // "Leaves of trees and plants"
console.log(code.children); // sub-codes at the next depth level