# Retrieve Webhook

`GET https://api.inboxjot.com/v1/webhooks/{endpoint_id}`

Retrieves one webhook with its recent deliveries. Needs a Full key. A key limited to one domain answers 403.

Only Create Webhook returns the signing secret. To see it again, copy it from the webhook page in the dashboard.

## Path Parameters

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `endpoint_id` | string | Yes | The webhook id. |

## Response

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string | No | The webhook id. |
| `name` | string | No | The webhook name. |
| `url` | string | No | Where events are sent. |
| `events` | string[] | No | The event types it gets. |
| `status` | string | No | `enabled` or `disabled`. Inboxjot turns a webhook off when deliveries keep failing. |
| `disabled_reason` | string \| null | No | Why the webhook was turned off. |
| `created_at` | string | No | When it was created. |
| `updated_at` | string | No | When it last changed. |
| `deliveries_24h` | integer | No | Deliveries in the last 24 hours. |
| `success_rate` | number \| null | No | The share of recent deliveries that succeeded. |
| `avg_duration_ms` | integer \| null | No | How long your endpoint took to answer, on average. |
| `retrying` | integer | No | Deliveries waiting for another try. |
| `recent_deliveries` | object[] | No | The latest deliveries. |
| `recent_deliveries[].delivery_id` | string | No | The delivery id. |
| `recent_deliveries[].event_id` | string | No | The event id, also in the payload. |
| `recent_deliveries[].event_type` | string | No | The event type. |
| `recent_deliveries[].endpoint_id` | string | No | The webhook the event went to. |
| `recent_deliveries[].email_id` | string | No | The email the event is about. |
| `recent_deliveries[].status` | integer | No | The HTTP status your endpoint answered. |
| `recent_deliveries[].attempt` | integer | No | Which try this was. |
| `recent_deliveries[].duration_ms` | integer | No | How long the answer took. |
| `recent_deliveries[].created_at` | string | No | When the event was first sent. |
| `recent_deliveries[].last_attempt_at` | string | No | When it was last tried. |
| `recent_deliveries[].next_attempt_at` | string \| null | No | When it is tried again, if it failed. |

## Request

cURL:

```bash
curl -X GET https://api.inboxjot.com/v1/webhooks/whk_06d2mfk8r8ja5fv2xn7qe \
  -H "Authorization: Bearer $INBOXJOT_API_KEY"
```

## Responses

| Status | Description |
| --- | --- |
| 200 | Returns the webhook. |
| 400 | A path parameter is invalid. |
| 401 | The API key is missing, revoked or expired. |
| 403 | The key is a Sending key or is limited to one domain, or the request comes from outside its IP allowlist. |
| 404 | The webhook does not exist in this workspace. |
| 429 | Too many requests for this key. Wait for the seconds in the Retry-After header. |
| 500 | Something failed on our side. Retry later. |

200:

```json
{
  "id": "whk_06d2mfk8r8ja5fv2xn7qe",
  "name": "Production",
  "url": "https://api.acme.dev/webhooks/inboxjot",
  "events": [
    "email.delivered",
    "email.bounced",
    "email.complained"
  ],
  "status": "enabled",
  "disabled_reason": null,
  "created_at": "2026-10-21T09:00:00.000Z",
  "updated_at": "2026-10-21T09:00:00.000Z",
  "deliveries_24h": 1540,
  "success_rate": 0.998,
  "avg_duration_ms": 84,
  "retrying": 0,
  "recent_deliveries": [
    {
      "delivery_id": "whd_06d2mfk8r9cz5tb1qh4mv",
      "endpoint_id": "whk_06d2mfk8r8ja5fv2xn7qe",
      "event_id": "evt_06d2mfk8r9bw4sa0pg3lu",
      "event_type": "email.delivered",
      "email_id": "eml_06d2mfk8r4tq9xv2bnc7s",
      "status": 200,
      "attempt": 1,
      "duration_ms": 81,
      "created_at": "2026-10-21T11:42:08.000Z",
      "last_attempt_at": "2026-10-21T11:42:08.000Z",
      "next_attempt_at": null
    }
  ]
}
```

400:

```json
{
  "name": "validation_error",
  "status": 400,
  "message": "length is greater than 100",
  "errors": [
    {
      "message": "length is greater than 100",
      "location": "endpoint_id"
    }
  ],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

401:

```json
{
  "name": "unauthorized",
  "status": 401,
  "message": "Unauthorized",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

403:

```json
{
  "name": "forbidden",
  "status": 403,
  "message": "This key cannot be used from 203.0.113.7",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

404:

```json
{
  "name": "not_found",
  "status": 404,
  "message": "Webhook not found",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

429:

```json
{
  "name": "rate_limit_exceeded",
  "status": 429,
  "message": "Too many attempts. Try again later.",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```

500:

```json
{
  "name": "unknown_error",
  "status": 500,
  "message": "Something went wrong. Please try again later.",
  "errors": [],
  "request_id": "5f0c6a2e-8d1b-4c7a-9e3f-2b6d4a1c8e90"
}
```
