> ## 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.

# Get Proceeding

> Retrieve a single trademark proceeding with parties, classes, and decision metadata

## When To Use This

Use this endpoint when you already have a proceeding ID and need the full dispute record for docket review, risk analysis, or client reporting. For example, an IP litigation team can fetch a decided TTAB opposition to see the parties, contested classes, office decision summary, normalized outcome, and how long the case ran.

For an end-to-end workflow, see [Opposition & Dispute Intelligence](/guides/opposition-dispute-intelligence).

## Path Parameters

<ParamField path="id" type="string" required>
  Proceeding ID (`prc_...`).
</ParamField>

## Response

<ResponseField name="id" type="string">
  Proceeding ID (`prc_...`).
</ResponseField>

<ResponseField name="object" type="string">
  Always `proceeding`.
</ResponseField>

<ResponseField name="trademark_id" type="string | null">
  Parent trademark ID (`tm_...`), when available.
</ResponseField>

<ResponseField name="proceeding_type" type="string">
  Type (`opposition`, `cancellation`, `appeal`, etc.).
</ResponseField>

<ResponseField name="proceeding_number" type="string | null">
  Office-issued proceeding identifier, when available.
</ResponseField>

<ResponseField name="status" type="string | null">
  Current status, when available.
</ResponseField>

<ResponseField name="outcome" type="string | null">
  Normalized outcome from the challenger perspective, or `null` when not available.
</ResponseField>

| Value              | Meaning                                                            |
| ------------------ | ------------------------------------------------------------------ |
| `challenger_won`   | The challenger prevailed, derived from `decided_granted`.          |
| `challenger_lost`  | The challenger did not prevail, derived from `decided_rejected`.   |
| `mixed`            | The decision was partial or text indicates an in-part disposition. |
| `settled`          | The proceeding status is `settled`.                                |
| `withdrawn`        | The proceeding status is `withdrawn`.                              |
| `default_judgment` | The challenger won through a default or procedural failure signal. |
| `pending`          | The proceeding is still `pending` or `suspended`.                  |
| `other`            | The status is `other` or does not map to a more specific outcome.  |

<ResponseField name="duration_days" type="integer | null">
  Number of days between `filed_date` and `decision_date`. `null` when either date is missing.
</ResponseField>

<ResponseField name="office_code" type="string | null">
  Lowercase office code for the parent trademark, when available.
</ResponseField>

<ResponseField name="filed_date" type="string | null">
  ISO date the proceeding was initiated, when available.
</ResponseField>

<ResponseField name="decision_date" type="string | null">
  ISO date of decision when concluded, when available.
</ResponseField>

<ResponseField name="decision_outcome" type="string | null">
  Outcome string when decided.
</ResponseField>

<ResponseField name="parties" type="object[]">
  Array of parties. Each has `owner_id`, `name`, `role` (`opponent`, `petitioner`, `respondent`, `intervener`, `other`), and `country_code`.
</ResponseField>

<ResponseField name="contested_classes" type="integer[] | null">
  Nice classes contested in the proceeding, when known.
</ResponseField>

<ResponseField name="description" type="string | null">
  Free-text summary, when provided.
</ResponseField>

<ResponseField name="trademark" type="object | null">
  Summary of the parent trademark (`id`, `object`, `mark_text`, `serial_number`, `office_code`), or `null` when unavailable.
</ResponseField>

<ResponseField name="created_at" type="string">
  ISO timestamp for when Signa created the proceeding record.
</ResponseField>

<ResponseField name="updated_at" type="string">
  ISO timestamp for the latest Signa update to the proceeding record.
</ResponseField>

## Example Request

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/proceedings/prc_019f34d6-aaaa-7777-8888-aaaaaaaaaaaa" \
    -H "Authorization: Bearer $SIGNA_API_KEY"
  ```
</RequestExample>

## Example Response

<ResponseExample>
  ```json theme={null}
  {
    "id": "prc_019f34d6-aaaa-7777-8888-aaaaaaaaaaaa",
    "object": "proceeding",
    "trademark_id": "tm_019f34d6-2000-7777-8888-000000000001",
    "proceeding_type": "opposition",
    "proceeding_number": "91265432",
    "status": "decided_granted",
    "outcome": "challenger_won",
    "duration_days": 231,
    "office_code": "uspto",
    "filed_date": "2024-01-18",
    "decision_date": "2024-09-05",
    "decision_outcome": "Opposition Sustained",
    "contested_classes": [9, 42],
    "description": "Opposition proceeding",
    "created_at": "2024-01-18T10:00:00.000Z",
    "updated_at": "2024-09-05T10:00:00.000Z",
    "parties": [
      {
        "owner_id": "own_019f34d6-1111-7777-8888-111111111111",
        "name": "Apex Outdoor Group LLC",
        "role": "opponent",
        "country_code": "US"
      },
      {
        "owner_id": "own_019f34d6-2222-7777-8888-222222222222",
        "name": "Meridian Labs Inc.",
        "role": "respondent",
        "country_code": "US"
      }
    ],
    "trademark": {
      "id": "tm_019f34d6-2000-7777-8888-000000000001",
      "object": "trademark",
      "mark_text": "MERIDIAN CORE",
      "serial_number": "98123456",
      "office_code": "uspto"
    },
    "request_id": "req_xyz"
  }
  ```
</ResponseExample>

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/proceedings/prc_019f34d6-aaaa-7777-8888-aaaaaaaaaaaa" \
    -H "Authorization: Bearer sig_YOUR_KEY_HERE"
  ```

  ```typescript TypeScript theme={null}
  import { Signa } from "@signa-so/sdk";

  const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });

  const proceeding = await signa.proceedings.retrieve("prc_019f34d6-aaaa-7777-8888-aaaaaaaaaaaa");
  ```

  ```python Python theme={null}
  import requests

  resp = requests.get(
      "https://api.signa.so/v1/proceedings/prc_019f34d6-aaaa-7777-8888-aaaaaaaaaaaa",
      headers={"Authorization": "Bearer sig_YOUR_KEY_HERE"},
  )
  ```
</CodeGroup>

## Errors

| Status | Type               | Description                |
| ------ | ------------------ | -------------------------- |
| 400    | `validation_error` | Invalid proceeding ID      |
| 401    | `unauthorized`     | Missing or invalid API key |
| 404    | `not_found`        | Proceeding not found       |
| 429    | `rate_limited`     | Too many requests          |

## Related Endpoints

* [List Proceedings](/api-reference/proceedings/list-proceedings): search proceedings with filters
* [Trademark Proceedings](/api-reference/trademarks/trademark-proceedings): proceedings scoped to a mark
* [Opposition & Dispute Intelligence](/guides/opposition-dispute-intelligence): workflow for profiling an opposer
