Skip to main content
You are an IP litigation associate responsible for monitoring 30 active TTAB (Trademark Trial and Appeal Board) proceedings for your firm’s clients. Some of your clients are opponents; others are respondents. You need to track proceeding status changes, flag new oppositions filed against your clients’ marks, and maintain an overview of all active cases. This guide shows how to build an opposition monitoring system using the Signa API.

Prerequisites

  • A Signa API key with trademarks:read, portfolios:manage, and events:read scopes
  • Client owner IDs or a portfolio of marks to monitor

1

Find all proceedings involving your clients

Start by querying proceedings where your client appears as a party — either as the opponent (your client filed the opposition) or the respondent (someone opposed your client’s mark).
# Find proceedings where your client is the respondent (someone opposed their mark)
curl "https://api.signa.so/v1/proceedings?party_owner_id=own_client01&party_role=respondent&status=pending&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"

# Find proceedings where your client is the opponent (they filed the opposition)
curl "https://api.signa.so/v1/proceedings?party_owner_id=own_client01&party_role=opponent&status=pending&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"
Expected output:
{
  "object": "list",
  "data": [
    {
      "id": "prc_op001",
      "proceeding_type": "opposition",
      "proceeding_number": "91278456",
      "status": "pending",
      "office_code": "uspto",
      "filed_date": "2026-01-10",
      "decision_date": null,
      "parties": [
        { "owner_id": "own_other99", "name": "Apex Global Corp", "role": "opponent" },
        { "owner_id": "own_client01", "name": "Meridian Labs Inc.", "role": "respondent" }
      ],
      "contested_classes": [9, 42],
      "trademark_id": "tm_merid01"
    }
  ]
}
2

Get details on the contested marks

For each proceeding, fetch the full trademark detail to understand what is at stake.
# Get the contested trademark
curl https://api.signa.so/v1/trademarks/tm_merid01 \
  -H "Authorization: Bearer $SIGNA_API_KEY"
3

Monitor for new oppositions against client marks

Set up watches to detect when someone files an opposition against any mark in your client’s portfolio.
# Create a watch for status changes on client marks
curl -X POST https://api.signa.so/v1/watches \
  -H "Authorization: Bearer $SIGNA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: watch-opposition-client01" \
  -d '{
    "name": "Meridian Labs - opposition monitoring",
    "watch_type": "status",
    "criteria": {
      "trademark_ids": ["tm_merid01", "tm_merid02", "tm_merid03"]
    },
    "triggers": ["status_change"],
    "delivery_channels": ["api"],
    "metadata": { "case_manager": "jsmith", "client": "Meridian Labs" }
  }'
Focus watches on marks in the published, opposition_period, and examining stages — these are the ones most vulnerable to new proceedings. Registered marks can still face cancellation petitions but the risk is lower.
4

Check prosecution history for contested marks

Review the event timeline of a contested mark to understand how the opposition fits into the prosecution history.
curl "https://api.signa.so/v1/trademarks/tm_merid01/history?limit=20&sort=-event_date" \
  -H "Authorization: Bearer $SIGNA_API_KEY"
Expected output:
Prosecution timeline:
  2026-01-10 | opposition           | OPPOSITION FILED
             Status -> pending_opposition
  2025-11-15 | publication          | PUBLISHED FOR OPPOSITION
             Status -> published
  2025-09-20 | examination          | APPROVED FOR PUBLICATION
  2025-06-01 | filing               | NEW APPLICATION FILED
             Status -> filed
5

Track proceeding outcomes and filter by type

Query proceedings by type and status to build different views of your case docket.
# All opposition proceedings (any party, any status)
curl "https://api.signa.so/v1/proceedings?party_owner_id=own_client01&proceeding_type=opposition&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"

# Cancellation proceedings only
curl "https://api.signa.so/v1/proceedings?party_owner_id=own_client01&proceeding_type=cancellation&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"

# Decided proceedings (to review outcomes)
curl "https://api.signa.so/v1/proceedings?party_owner_id=own_client01&status=decided_granted&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"
6

Set up alerts for proceeding status changes

Use the event stream to catch proceeding-related changes in near-real-time.
# Check for recent events related to status changes on contested marks
curl "https://api.signa.so/v1/events?event_type[]=trademark.status_changed&since=2026-03-17T00:00:00Z&limit=50" \
  -H "Authorization: Bearer $SIGNA_API_KEY"
Expected output:
{
  "id": 12345,
  "type": "trademark.status_changed",
  "trademark_id": "tm_merid01",
  "version": 5,
  "changed_fields": ["status_stage"],
  "changes": {
    "status_stage": { "before": "pending_opposition", "after": "registered" }
  },
  "office_code": "uspto",
  "created_at": "2026-03-20T14:30:00Z"
}
A status change from pending_opposition to registered means the opposition was resolved in your client’s favor — the mark proceeded to registration. A change to abandoned or refused would indicate the opposite outcome.

Proceeding status reference

StatusMeaning
pendingActive, awaiting decision
decided_grantedDecided in favor of the petitioner/opponent
decided_rejectedDecided in favor of the respondent
withdrawnPetitioner/opponent withdrew the proceeding
settledParties reached a settlement
suspendedProceeding paused (often pending related litigation)
partialMixed outcome — some grounds sustained, others denied
otherCatch-all for unusual outcomes

What’s next

Trademark Clearance

Run clearance searches to avoid triggering oppositions before you file.

Competitor Intelligence

Track competitor filing patterns to anticipate potential opposition actions.

Renewal Management

Ensure contested marks do not lapse during proceedings by tracking their deadlines.