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

# Retrieve Event

> Get one event with field-level before/after diffs

<Info>
  **Beta.** The `data` payload is versioned by `payload_version` and its shape is
  not yet frozen. See [List Events](/api-reference/monitoring/events/list).
</Info>

## Overview

Returns the full body for one ledger row — the same body the matching webhook delivery carried, so you can verify or re-read a delivery you already received. Trademark-family events include field-level diffs; `alert.created` renders its stored versioned payload.

Requires the `events:read` scope.

## Path Parameters

<ParamField path="id" type="string" required>Event ID (`evt_*`). A raw numeric ID returns `400 validation_error`; a valid public ID of another type returns `400 id_type_mismatch`.</ParamField>

## Response

Beyond the summary fields on [List Events](/api-reference/monitoring/events/list), the detail body carries:

<ResponseField name="version" type="integer">The aggregate version this event was recorded at.</ResponseField>
<ResponseField name="changed_fields" type="string[]">The fields that changed, in **public trademark field names** — `status`, `mark_text`, `publication_date`, `ir_number`, or a changed child collection (`owners`, `classifications`). Fields Signa does not publish are omitted rather than renamed.</ResponseField>
<ResponseField name="changes" type="object">`{ [field]: { before, after } }`, keyed by the same public names as `changed_fields`.</ResponseField>
<ResponseField name="source_date" type="string | null">The office-reported data date this event is from (`YYYY-MM-DD`), or `null` when the feed reports none. Day precision, and the meaning varies by office: USPTO transaction date, WIPO gazette date, snapshot offices the crawl date. Distinct from `occurred_at`, which is when Signa produced the event.</ResponseField>
<ResponseField name="portfolios" type="object[]">The portfolios the mark belonged to when the event was recorded, each `{ id, external_ref }`, frozen at record time. Empty when the mark was in no portfolio. Absent on `alert.created`.</ResponseField>

## Errors

| Status | `type`                                  | When                                                                              |
| ------ | --------------------------------------- | --------------------------------------------------------------------------------- |
| 400    | `validation_error` / `id_type_mismatch` | Malformed or wrong-type event ID                                                  |
| 403    | `forbidden`                             | Missing `events:read`                                                             |
| 404    | `not_found`                             | Event doesn't exist, has aged out of the 30-day window, or belongs to another org |

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.signa.so/v1/events/evt_3D7rZ9" \
    -H "Authorization: Bearer sig_YOUR_KEY"
  ```

  ```ts TypeScript theme={null}
  const event = await signa.events.retrieve('evt_3D7rZ9');
  ```
</CodeGroup>

## Related Endpoints

* [List Events](/api-reference/monitoring/events/list) - browse or replay the ledger
* [Retrieve Alert](/api-reference/monitoring/alerts/retrieve) - the alert an `alert.created` event wraps
