# One event, with its payload re-rendered from current state

Source: https://docs.usetone.ai/reference/events/get

> ⚠️ The payload is RE-RENDERED from the resource as it stands now, not replayed from the signed bytes that were delivered.

`GET /v1/events/{id}`
⚠️ The payload is RE-RENDERED from the resource as it stands now, not replayed from the signed bytes that were delivered. A transcript that landed after delivery will be present here and absent from what your endpoint received. Use it to understand an event, not to re-verify a signature.

Requires the `read` scope.

## Parameters

| Name | In | | Meaning |
|---|---|---|---|
| `id` | path | required | The event's id. |

## Response

| Field | Type | | Meaning |
|---|---|---|---|
| `createdAt` | string | required | RFC 3339, UTC. Retained 30 days. |
| `delivery` | object | required | This event’s delivery to one endpoint. |
| `delivery.attempts` | integer | required | How many times it has been tried, retries included. |
| `delivery.deliveredAt` | string | null | required | When your endpoint accepted it, RFC 3339 UTC. Null while pending or failed. |
| `delivery.endpointId` | string | required | Which of your webhook endpoints this delivery was for. An event delivered to two endpoints is listed twice, once per endpoint, because each has its own outcome. |
| `delivery.lastStatus` | integer | null | required | The HTTP status your endpoint last answered with. Null if it never responded. |
| `delivery.status` | string | required | Where this delivery stands. Open set — handle an unrecognised value rather than throwing. Today: `pending`, `delivered`, `failed`. |
| `id` | string | required | Also the `x-tone-event-id` header your endpoint received. |
| `payload` | object | null | required | The event body. Null when the subject has since been deleted. |
| `subjectId` | string | required | The subject’s id — fetchable from its own resource route. |
| `subjectType` | string | required | What kind of thing it happened to. Open set — handle an unrecognised value rather than throwing. Today: `call`, `campaign`, `compliance_check`, `document`, `knowledge_base`, `number`, `organization`, `verification`, `wallet`. |
| `type` | string | required | What happened. Open set — handle an unrecognised value rather than throwing. Today: `call.initiated`, `call.answered`, `call.completed`, `call.failed`, `campaign.completed`, `campaign.paused`, `compliance.check.blocked`, `wallet.balance.low`, `number.suspended`, `number.reactivated`, `knowledge.build.completed`, `knowledge.build.failed`. |

### Example response

```json
{
  "data": {
    "createdAt": "2026-08-25T09:14:22Z",
    "delivery": {
      "attempts": 0,
      "deliveredAt": "2026-08-25T09:14:03Z",
      "endpointId": "2b7c1d90-4e5f-4a6b-8c9d-0e1f2a3b4c5d",
      "lastStatus": 0,
      "status": "pending"
    },
    "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451",
    "payload": {
      "created_at": "2026-08-25T09:14:22Z",
      "data": {},
      "id": "evt_01J9Z2K3M4N5P6Q7R8S9T0",
      "links": {
        "recording": "/v1/calls/9f1c2d84-5b6a-4c3d-8e2f-1a0b9c8d7e6f/recording",
        "self": "/v1/calls/9f1c2d84-5b6a-4c3d-8e2f-1a0b9c8d7e6f",
        "transcript": "/v1/calls/9f1c2d84-5b6a-4c3d-8e2f-1a0b9c8d7e6f/transcript"
      },
      "type": "call.completed"
    },
    "subjectId": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451",
    "subjectType": "call",
    "type": "call.initiated"
  }
}
```
