has_proceedings=true when you need marks that have any proceeding history.
Prerequisites
- A Signa API key with
trademarks:read - The opposer’s name as the office records it (the notice of opposition names it)
- The contested trademark ID, if you are already responding to a specific opposition
US (TTAB) dates.
filed_date is set on about 99% of US oppositions and cancellations, so filed_date_gte, sort=filed_date and filed_year count them correctly. Ex parte appeals do not carry a filing date yet, and decision_date is set on only a small share of US rows, so avoid decision-date filters for TTAB.1
Start with the named opposer
Search proceedings where a party with the opposer’s name appeared as the challenger. There is a second way in when you hold the opposer’s mark rather than its name. Every proceeding is linked to each mark involved, on both sides: Because
q matches a case-insensitive substring of the party name the office recorded, and when you add party_role=opponent that same party must be the opponent. For TTAB oppositions, the challenger is usually the opponent.q finds every proceeding where the name appears. party_owner_id and party_entity_id return only parties Signa has linked to that owner or entity. A link requires the party’s name, company suffix included, to match an owner of the marks in the dispute, so a merely similar name is not linked. Parties without a link are not returned, such as most Canadian and Australian opponents (they are matched only against the owner of the mark under challenge) and names that match only without a company suffix. Use the owner or entity filter when you hold the opposer’s own_ or ent_ ID and want only that company; use q to search by name or when you need every case.trademark_role=contested is the mark the proceeding targets, trademark_role=asserted is a mark the opposer pleaded. So GET /v1/trademarks/{id}/proceedings?trademark_role=asserted on the opposer’s registration lists the oppositions that registration has been used to file, and GET /v1/proceedings/{id} returns trademarks[] with every mark in the case and its role. party_role is about the named parties; trademark_role is about the marks.outcome is from the challenger perspective, challenger_won and default_judgment are wins for the opposer when party_role=opponent. The party_role buckets count every party on the matching cases, so a respondent bucket next to opponent is expected: it counts the applicants the opposer went after. challenger_lost is a loss. settled, withdrawn, and pending are not win/loss buckets, so keep them out of win-rate denominators.2
Cover the opposer's other names
q matches a substring of one recorded party name. It does not establish that two names belong to the same business, and it does not expand to a parent, subsidiaries or affiliates. A shorter substring such as Acme Bev catches spelling and suffix variants (Acme Beverages Inc., ACME BEVERAGES LLC) but can also catch unrelated parties, so check the names on each case with Get Proceeding before counting it. If the opposer also files under a different name (a parent company, a former name, a regional subsidiary), run one query per name and merge the results yourself, deduplicating by id. Drop office_code to see every office that records proceedings.8 + 1 + 3 = 12, and challenger wins are 8 + 1 = 9, so the opposer’s decided win rate is 75%. The duration_days field on each returned proceeding lets you compute case length over the full paginated set. nice_class can sum above the proceeding count because one multi-class proceeding contributes to each contested class.3
Inspect the contested mark
Use the per-mark proceedings endpoint when you need the dispute history attached to the application you are defending.This mark-level view is the quickest way to confirm the active parties, the case number, and whether the mark has any prior opposition or cancellation history beyond the current matter.
4
Find other marks with proceeding history
Use trademark search with After you find the relevant marks, call Trademark Proceedings for each mark that needs party-level detail.
has_proceedings=true to find marks in a portfolio that already have one or more proceedings. This is useful when you want comparable marks, repeat disputes, or a portfolio-level risk queue.Decision Checklist
- Compare outcomes across the opposer’s name variants. One recorded name may understate a corporate group’s dispute pattern, and
qdoes not add related companies for you. - Treat
default_judgmentas a challenger win, but keep it visible because it means the respondent defaulted. - Exclude
settled,withdrawn, andpendingwhen calculating a decided win rate. - Review
duration_daysacross decided proceedings to estimate how long a fight may run. - Use
nice_classandoffice_codebuckets to see whether the opposer concentrates in the classes and offices that matter to your mark.