curl -G "https://api.signa.so/v1/proceedings" \
-H "Authorization: Bearer $SIGNA_API_KEY" \
--data-urlencode "q=Acme Beverages" \
--data-urlencode "party_role=opponent" \
--data-urlencode "office_code=US" \
--data-urlencode "aggregations=outcome,party_role,nice_class,office_code,filed_year,trademark_role" \
--data-urlencode "limit=20"
{
"object": "list",
"data": [
{
"id": "prc_019f34d6-1111-7777-8888-111111111111",
"object": "proceeding",
"trademark_id": "tm_019f34d6-aaaa-7777-8888-111111111111",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91265432",
"status": "decided_granted",
"outcome": "challenger_won",
"duration_days": 184,
"office_code": "US",
"filed_date": "2023-03-01",
"decision_date": "2023-09-01",
"decision_outcome": "Opposition Sustained",
"contested_classes": [9, 42],
"description": "Opposition proceeding",
"created_at": "2023-03-01T10:00:00.000Z",
"updated_at": "2023-09-01T10:00:00.000Z"
},
{
"id": "prc_019f34d6-2222-7777-8888-222222222222",
"object": "proceeding",
"trademark_id": "tm_019f34d6-bbbb-7777-8888-222222222222",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91270001",
"status": "settled",
"outcome": "settled",
"duration_days": null,
"office_code": "US",
"filed_date": "2023-06-12",
"decision_date": null,
"decision_outcome": null,
"contested_classes": [9],
"description": "Opposition proceeding",
"created_at": "2023-06-12T10:00:00.000Z",
"updated_at": "2023-06-12T10:00:00.000Z"
}
],
"has_more": false,
"pagination": { "cursor": null },
"aggregations": {
"outcome": { "challenger_won": 1, "settled": 1 },
"party_role": { "opponent": 2, "respondent": 2 },
"office_code": { "US": 2 },
"filed_year": { "2023": 2 },
"nice_class": { "9": 2, "42": 1 }
},
"request_id": "req_xyz"
}
Proceedings
Search Proceedings
Search trademark proceedings (oppositions, cancellations, appeals) across all marks
GET
/
v1
/
proceedings
curl -G "https://api.signa.so/v1/proceedings" \
-H "Authorization: Bearer $SIGNA_API_KEY" \
--data-urlencode "q=Acme Beverages" \
--data-urlencode "party_role=opponent" \
--data-urlencode "office_code=US" \
--data-urlencode "aggregations=outcome,party_role,nice_class,office_code,filed_year,trademark_role" \
--data-urlencode "limit=20"
{
"object": "list",
"data": [
{
"id": "prc_019f34d6-1111-7777-8888-111111111111",
"object": "proceeding",
"trademark_id": "tm_019f34d6-aaaa-7777-8888-111111111111",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91265432",
"status": "decided_granted",
"outcome": "challenger_won",
"duration_days": 184,
"office_code": "US",
"filed_date": "2023-03-01",
"decision_date": "2023-09-01",
"decision_outcome": "Opposition Sustained",
"contested_classes": [9, 42],
"description": "Opposition proceeding",
"created_at": "2023-03-01T10:00:00.000Z",
"updated_at": "2023-09-01T10:00:00.000Z"
},
{
"id": "prc_019f34d6-2222-7777-8888-222222222222",
"object": "proceeding",
"trademark_id": "tm_019f34d6-bbbb-7777-8888-222222222222",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91270001",
"status": "settled",
"outcome": "settled",
"duration_days": null,
"office_code": "US",
"filed_date": "2023-06-12",
"decision_date": null,
"decision_outcome": null,
"contested_classes": [9],
"description": "Opposition proceeding",
"created_at": "2023-06-12T10:00:00.000Z",
"updated_at": "2023-06-12T10:00:00.000Z"
}
],
"has_more": false,
"pagination": { "cursor": null },
"aggregations": {
"outcome": { "challenger_won": 1, "settled": 1 },
"party_role": { "opponent": 2, "respondent": 2 },
"office_code": { "US": 2 },
"filed_year": { "2023": 2 },
"nice_class": { "9": 2, "42": 1 }
},
"request_id": "req_xyz"
}
Credits: 1 per page.
A
Each item carries
When To Use This
Use this endpoint when you need a cross-mark view of trademark disputes, such as profiling an opponent’s history, checking whether a party usually settles or wins, or building a filtered litigation timeline for a class, office, or date window. At least one filter is required, andaggregations adds bucket maps over the exact same filtered set returned by the list query.
For an end-to-end workflow, see Opposition & Dispute Intelligence.
Which offices have proceedings
Proceedings are returned only for offices whosecapabilities.proceedings is available on List Offices. An office_code naming any other live office returns 422 capability_not_available with capability, capability_state and office_code in the error. No query runs and no credits are charged. An unknown office code, or one for an office that is not live yet, returns 400 validation_error.
Each served office records only some proceeding types:
| Office | Proceeding types |
|---|---|
US | opposition, cancellation, appeal, other |
EM | opposition, cancellation, appeal |
CA | opposition, cancellation |
AU | opposition, cancellation, revocation, invalidity, appeal, non_use_removal, other |
SG | opposition, revocation, invalidity, appeal, other |
proceeding_type that none of these offices records (today court_action), or that the requested office_code does not record, returns an empty page (and empty aggregations buckets) straight away, charged as a normal page.
Query Parameters
At least one of the following must be supplied:contested_class, trademark_id, trademark_role, proceeding_type, status, q, party_owner_id, party_entity_id, entity_id, party_role, office_code, filed_date_gte, filed_date_lt, decision_date_gte, decision_date_lt. aggregations alone does not satisfy the filter requirement.
integer
Nice class involved in the dispute (1-45).
string
Restrict to proceedings on a specific trademark (
tm_...).string
Which side the linked mark is on.
contested returns rows where the proceeding targets the mark (the opposed application, the registration under cancellation, the appealed application). asserted returns rows where the opposer or petitioner pleaded the mark as a prior right. This is the mark’s side, not the party’s: use party_role for opponent, petitioner or respondent.string
Type of proceeding. One of
opposition, cancellation, revocation, invalidity, appeal, non_use_removal, court_action, other.string
Status. One of
pending, decided_granted, decided_rejected, withdrawn, settled, suspended, partial, other.Owner and entity filters match linked parties only. Each proceeding party keeps the name the office recorded. Signa links a party to an existing owner only when the marks in the dispute show which owner it is and the names match with the same company suffix. Parties without a link are not returned by
party_owner_id, party_entity_id or entity_id. These include most Canadian and Australian opponents (they are matched only against the owner of the mark under challenge), a name that matches only without its company suffix (Acme for Acme Inc.), and a recorded name that lists several parties (Acme Inc. and Beta LLC). To match by name, or to be sure nothing is missed, search with q and read each party’s role from parties[].role on Get Proceeding.string
Search party name. Matches a case-insensitive substring of a party name as the office recorded it;
% and _ match literally. It matches names only: it does not resolve related companies, subsidiaries or other spellings, so run one query per name variant you care about. When combined with party_role, party_owner_id or party_entity_id, every party filter must match the same party: q=Acme&party_role=opponent returns proceedings where a party named Acme is the opponent, not proceedings where Acme is the respondent.string
Filter by a party owner ID (
own_...): proceedings where a party is linked to this owner. Parties without a link are not returned; see the note above.string
Filter by a resolved or derived entity ID (
ent_...). The API expands the entity to its member owner IDs and matches proceedings where a party is linked to any member owner. Parties without a link are not returned; see the note above. A malformed ID returns 400, and an entity over the member-owner cap returns 422 entity_too_large.string
Alias for
party_entity_id, with the same matching and validation.string
Filter by party role. One of
opponent, petitioner, respondent, intervener, other. Party roles describe the named parties; trademark_role describes the linked mark. With q, the party whose name matches must hold this role.string
Uppercase ST.3 office code (e.g.
US, EM). Legacy lowercase codes (e.g. uspto, and eu for EUIPO) are accepted as permanent aliases. An office whose capabilities.proceedings is not available returns 422 capability_not_available, uncharged.US (TTAB) dates.
filed_date is set on about 99% of US oppositions and cancellations, loaded from the USPTO TTAB bulk feed. Ex parte appeals do not carry a filing date yet. decision_date is set on only a small share of US rows, so decision_date_gte, decision_date_lt and duration_days undercount TTAB. Treat a null date as “not yet loaded”, not “unknown to the USPTO”.string
Filed date >= (YYYY-MM-DD).
string
Filed date < (YYYY-MM-DD). Must be after
filed_date_gte.string
Decision date >= (YYYY-MM-DD).
string
Decision date < (YYYY-MM-DD). Must be after
decision_date_gte.string
Comma-separated bucket maps to include in the response. Allowed values:
outcome, party_role, nice_class, office_code, filed_year.string
default:"-filed_date"
Sort order. One of
-filed_date, filed_date, -decided_date, decided_date.integer
default:"20"
Page size (1-100).
string
Pagination cursor from a previous response.
Response
object[]
Array of proceeding summary records.
object
Present when requested. Shape:
{ aggregation_name: { bucket_key: count } }.id (prc_...), trademark_id, trademark_role, proceeding_type, proceeding_number, status, outcome, duration_days, office_code, filed_date, decision_date, decision_outcome, contested_classes, and description. One proceeding produces one item per linked mark, so a TTAB opposition with an opposed application and two pleaded registrations returns three items with the same proceeding_number: one contested and two asserted. The nullable item fields are proceeding_number, status, outcome, duration_days, filed_date, decision_date, decision_outcome, contested_classes, and description (trademark_id and office_code are always present). See Get Proceeding for parties, outcome meanings, and the trademark cross-reference.
Aggregation buckets are computed in SQL over the exact filtered proceedings set. outcome, office_code, filed_year, and trademark_role are single-valued dimensions, so their bucket sums reconcile with the filtered list count when their values are present. nice_class counts a proceeding once per contested class, and party_role counts a proceeding once per distinct role represented in its parties, so those bucket sums can be larger than the list count. party_role buckets cover every party on the matching proceedings, not only the party that matched q or party_role: q=Acme&party_role=respondent selects the cases where Acme responded, and its opponent bucket counts the cases that had an opponent.
US (TTAB) outcomes are mostly
other. Most US cases that have ended read outcome: other: the TTAB status Signa reads for them is only “terminated”, and Signa does not yet read how those cases ended, so defaults, withdrawals and settlements are among them. A US win rate built from the decided outcome buckets (challenger_won, challenger_lost, mixed and default_judgment) covers only the small share of cases decided on the record. Report the other count next to it.Example Request
curl -G "https://api.signa.so/v1/proceedings" \
-H "Authorization: Bearer $SIGNA_API_KEY" \
--data-urlencode "q=Acme Beverages" \
--data-urlencode "party_role=opponent" \
--data-urlencode "office_code=US" \
--data-urlencode "aggregations=outcome,party_role,nice_class,office_code,filed_year,trademark_role" \
--data-urlencode "limit=20"
Example Response
{
"object": "list",
"data": [
{
"id": "prc_019f34d6-1111-7777-8888-111111111111",
"object": "proceeding",
"trademark_id": "tm_019f34d6-aaaa-7777-8888-111111111111",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91265432",
"status": "decided_granted",
"outcome": "challenger_won",
"duration_days": 184,
"office_code": "US",
"filed_date": "2023-03-01",
"decision_date": "2023-09-01",
"decision_outcome": "Opposition Sustained",
"contested_classes": [9, 42],
"description": "Opposition proceeding",
"created_at": "2023-03-01T10:00:00.000Z",
"updated_at": "2023-09-01T10:00:00.000Z"
},
{
"id": "prc_019f34d6-2222-7777-8888-222222222222",
"object": "proceeding",
"trademark_id": "tm_019f34d6-bbbb-7777-8888-222222222222",
"trademark_role": "contested",
"proceeding_type": "opposition",
"proceeding_number": "91270001",
"status": "settled",
"outcome": "settled",
"duration_days": null,
"office_code": "US",
"filed_date": "2023-06-12",
"decision_date": null,
"decision_outcome": null,
"contested_classes": [9],
"description": "Opposition proceeding",
"created_at": "2023-06-12T10:00:00.000Z",
"updated_at": "2023-06-12T10:00:00.000Z"
}
],
"has_more": false,
"pagination": { "cursor": null },
"aggregations": {
"outcome": { "challenger_won": 1, "settled": 1 },
"party_role": { "opponent": 2, "respondent": 2 },
"office_code": { "US": 2 },
"filed_year": { "2023": 2 },
"nice_class": { "9": 2, "42": 1 }
},
"request_id": "req_xyz"
}
Code Examples
curl "https://api.signa.so/v1/proceedings?proceeding_type=opposition&status=pending&office_code=US&filed_date_gte=2025-01-01&limit=20" \
-H "Authorization: Bearer sig_YOUR_KEY_HERE"
curl "https://api.signa.so/v1/proceedings?q=Acme%20Beverages&party_role=opponent&office_code=US&aggregations=outcome,party_role,office_code,filed_year,nice_class" \
-H "Authorization: Bearer sig_YOUR_KEY_HERE"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const page = await signa.proceedings.list({
q: "Acme Beverages",
party_role: "opponent",
office_code: "US",
aggregations: ["outcome", "party_role", "office_code", "filed_year", "nice_class"],
limit: 20,
});
import requests
resp = requests.get(
"https://api.signa.so/v1/proceedings",
headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
params={
"q": "Acme Beverages",
"party_role": "opponent",
"office_code": "US",
"aggregations": "outcome,party_role,office_code,filed_year,nice_class",
"limit": 20,
},
)
Related Endpoints
- Retrieve Proceeding: full proceeding detail
- Trademark Proceedings: proceedings scoped to one mark
- Opposition & Dispute Intelligence: workflow for profiling an opposer
- Use Case: Opposition Tracking: monitoring active disputes