# Get an event

`GET /api/v1/events/{id}`

One event by id — the id from the "Awrora-Event-Id" header or from the envelope. Same per-type scope rules as the list.

Scope: none

## Parameters

- `id` (path, string, required) — Awrora id (UUID) for the event.

## Responses

- `200` — The event.
- `401` — Missing, invalid, revoked or expired API key — codes "api_key_missing", "api_key_invalid", "api_key_revoked", "api_key_expired".
- `403` — The API app is off, the plan does not include the API, or the key lacks the required scope — codes "app_not_enabled", "plan_upgrade_required", "insufficient_scope" (the last carries "required_scope").
- `404` — No such resource. The same response is returned for a resource that belongs to another organization — code "not_found".
- `429` — Rate limit exceeded — code "rate_limited". See the x-ratelimit-* headers.
- `500` — Something went wrong on our side — code "internal_error".

## Response `200`

- `id` (string, required) — Awrora id (UUID) for the event. Stable across retries — use it to deduplicate: the same event may be delivered more than once.
- `type` (string, required) — Event type, e.g. "booking.created". "ping" is only sent by the test endpoint.
- `created_at` (string, required) — When the event happened, ISO 8601 with the organization's offset.
- `api_version` (string, required) — The API version the payload follows. Matches info.version in the OpenAPI document.
- `data` (object, required) — The payload. "object" is always the resource. Some types add fields next to it: "reason" on booking.cancelled, "previous_departure" on booking.rescheduled, "redeemed_amount" and "booking_id" on gift_card.redeemed.
- `resource_type` (string, required) — What kind of thing the event is about: "booking", "customer", "gift_card" or "webhook".
- `resource_id` (string | null, required) — Awrora id of that resource, or null for events without one.

## Example

```bash
curl -X GET "https://your-site.awrora.app/api/v1/events/id_8f2k3n" \
  -H "Authorization: Bearer $AWRORA_API_KEY"
```