> ## Documentation Index
> Fetch the complete documentation index at: https://opentrain.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List Webhook Endpoints

> List the webhook endpoints registered on the current install, newest first, including delivery health.

Lists every [webhook endpoint](/docs/developers/annotation-platforms/webhooks) registered on the calling token's install, newest first. Use it to monitor delivery health — a non-zero `consecutiveFailures` or a `DISABLED` status means your receiver needs attention.

**Requirements:** `webhooks:manage` scope.

## Request

No parameters.

## Response

<ResponseField name="webhookEndpoints" type="object[]">
  Array of webhook endpoints, newest first. The signing secret is never included — it is only returned once, by [create](/docs/developers/annotation-platforms/api-reference/webhook-endpoints/create).

  <Expandable title="WebhookEndpoint fields">
    <ResponseField name="id" type="string">
      Endpoint ID.
    </ResponseField>

    <ResponseField name="url" type="string">
      The delivery URL.
    </ResponseField>

    <ResponseField name="eventTypes" type="string[]">
      Subscribed [event types](/docs/developers/annotation-platforms/lifecycle-events).
    </ResponseField>

    <ResponseField name="status" type="string">
      `ACTIVE` or `DISABLED`. Deliveries are only attempted while `ACTIVE`.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 creation timestamp.
    </ResponseField>

    <ResponseField name="consecutiveFailures" type="integer">
      Failed deliveries in a row. Resets to `0` on any successful delivery; at 10 the endpoint is auto-disabled.
    </ResponseField>

    <ResponseField name="disabledAt" type="string | null">
      When the endpoint was disabled, or `null`.
    </ResponseField>

    <ResponseField name="disabledReason" type="string | null">
      Why the endpoint was disabled, or `null`.
    </ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | `code`         | Meaning                            |
| ------ | -------------- | ---------------------------------- |
| `401`  | `UNAUTHORIZED` | Missing, invalid, or revoked token |
| `403`  | `FORBIDDEN`    | Token lacks `webhooks:manage`      |

<RequestExample>
  ```bash curl theme={null}
  curl -sS https://app.opentrain.ai/api/partner/v1/webhook-endpoints \
    -H "Authorization: Bearer $OT_PARTNER_TOKEN"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "webhookEndpoints": [
      {
        "id": "<ENDPOINT_ID>",
        "url": "https://your-platform.example.com/webhooks/opentrain",
        "eventTypes": ["contract.started", "contract.ended"],
        "status": "ACTIVE",
        "createdAt": "2026-06-12T10:00:00.000Z",
        "consecutiveFailures": 0,
        "disabledAt": null,
        "disabledReason": null
      }
    ]
  }
  ```
</ResponseExample>
