Skip to main content
GET
/
v1
/
proceedings
curl -G "https://api.signa.so/v1/proceedings" \
  -H "Authorization: Bearer $SIGNA_API_KEY" \
  --data-urlencode "party_entity_id=ent_019f34d6-3333-7777-8888-333333333333" \
  --data-urlencode "office_code=uspto" \
  --data-urlencode "aggregations=outcome,party_role,nice_class,office_code,filed_year" \
  --data-urlencode "limit=20"
{
  "object": "list",
  "data": [
    {
      "id": "prc_019f34d6-1111-7777-8888-111111111111",
      "object": "proceeding",
      "trademark_id": "tm_019f34d6-aaaa-7777-8888-111111111111",
      "proceeding_type": "opposition",
      "proceeding_number": "91265432",
      "status": "decided_granted",
      "outcome": "challenger_won",
      "duration_days": 184,
      "office_code": "uspto",
      "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",
      "proceeding_type": "opposition",
      "proceeding_number": "91270001",
      "status": "settled",
      "outcome": "settled",
      "duration_days": null,
      "office_code": "uspto",
      "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": { "uspto": 2 },
    "filed_year": { "2023": 2 },
    "nice_class": { "9": 2, "42": 1 }
  },
  "request_id": "req_xyz"
}

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, and aggregations adds bucket maps over the exact same filtered set returned by the list query. For an end-to-end workflow, see Opposition & Dispute Intelligence.

Query Parameters

At least one of the following must be supplied: contested_class, trademark_id, 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.
contested_class
integer
Nice class involved in the dispute (1-45).
trademark_id
string
Restrict to proceedings on a specific trademark (tm_...).
proceeding_type
string
Type of proceeding. One of opposition, cancellation, revocation, invalidity, appeal, non_use_removal, court_action, other.
status
string
Status. One of pending, decided_granted, decided_rejected, withdrawn, settled, suspended, partial, other.
q
string
Search opponent / party name.
party_owner_id
string
Filter by a party owner ID (own_...).
party_entity_id
string
Filter by a resolved or derived entity ID (ent_...). The API expands the entity to its member owner IDs and matches proceedings where any member owner is a party.
entity_id
string
Alias for party_entity_id.
party_role
string
Filter by party role. One of opponent, petitioner, respondent, intervener, other.
office_code
string
Lowercase office code (e.g. uspto, euipo).
filed_date_gte
string
Filed date >= (YYYY-MM-DD).
filed_date_lt
string
Filed date < (YYYY-MM-DD). Must be after filed_date_gte.
decision_date_gte
string
Decision date >= (YYYY-MM-DD).
decision_date_lt
string
Decision date < (YYYY-MM-DD). Must be after decision_date_gte.
aggregations
string
Comma-separated bucket maps to include in the response. Allowed values: outcome, party_role, nice_class, office_code, filed_year.
sort
string
default:"-filed_date"
Sort order. One of -filed_date, filed_date, -decided_date, decided_date.
limit
integer
default:"20"
Page size (1-100).
cursor
string
Pagination cursor from a previous response.

Response

data
object[]
Array of proceeding summary records.
aggregations
object
Present when requested. Shape: { aggregation_name: { bucket_key: count } }.
Each item carries id (prc_...), trademark_id, proceeding_type, proceeding_number, status, outcome, duration_days, office_code, filed_date, decision_date, decision_outcome, contested_classes, and description. 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, and filed_year 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.

Example Request

curl -G "https://api.signa.so/v1/proceedings" \
  -H "Authorization: Bearer $SIGNA_API_KEY" \
  --data-urlencode "party_entity_id=ent_019f34d6-3333-7777-8888-333333333333" \
  --data-urlencode "office_code=uspto" \
  --data-urlencode "aggregations=outcome,party_role,nice_class,office_code,filed_year" \
  --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",
      "proceeding_type": "opposition",
      "proceeding_number": "91265432",
      "status": "decided_granted",
      "outcome": "challenger_won",
      "duration_days": 184,
      "office_code": "uspto",
      "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",
      "proceeding_type": "opposition",
      "proceeding_number": "91270001",
      "status": "settled",
      "outcome": "settled",
      "duration_days": null,
      "office_code": "uspto",
      "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": { "uspto": 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=uspto&filed_date_gte=2025-01-01&limit=20" \
  -H "Authorization: Bearer sig_YOUR_KEY_HERE"

curl "https://api.signa.so/v1/proceedings?party_entity_id=ent_019f34d6-3333-7777-8888-333333333333&office_code=uspto&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({
  party_entity_id: "ent_019f34d6-3333-7777-8888-333333333333",
  office_code: "uspto",
  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={
        "party_entity_id": "ent_019f34d6-3333-7777-8888-333333333333",
        "office_code": "uspto",
        "aggregations": "outcome,party_role,office_code,filed_year,nice_class",
        "limit": 20,
    },
)

Errors

StatusTypeDescription
400validation_errorNo filter supplied, invalid date range, or unsupported parameter value
401unauthorizedMissing or invalid API key
422entity_too_largeparty_entity_id / entity_id resolved to more member owners than the cap (error.reason: member_owners_too_large; carries member_count / member_count_limit)
429rate_limitedToo many requests