Skip to main content

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