---
title: "Dedicated endpoint events"
method: POST
path: "endpointEvent"
tags: ["Webhooks"]
---

# Dedicated endpoint events

`POST endpointEvent` (webhook)

Sent when one of your dedicated inference endpoints changes state, to each enabled webhook that lists the event, usually within seconds of the change.
endpoint.ready: the endpoint serves requests, after it was created or enabled. endpoint.disabled: the endpoint was disabled and its requests are refused; an endpoint deleted before this was sent sends it first. endpoint.deleted: the endpoint was deleted, its last event. Listing an endpoint event needs endpoint read access. Delivery is at least once: the same change can occasionally arrive twice, with the same event id. Each delivery is attempted on its own, so events can arrive out of order: order an endpoint's events by data.at.

## Headers

- `X-OpenRelay-Signature` string, required
- `X-OpenRelay-Event` string, required
- `X-OpenRelay-Delivery` string, uuid, required
- `User-Agent` 'OpenRelay-Webhook/1.0', required
- `X-VectorLay-Signature` string, required
- `X-VectorLay-Event` string, required
- `X-VectorLay-Delivery` string, uuid, required

## Payload

- EndpointWebhookEvent: The body of an endpoint.ready, endpoint.disabled or endpoint.deleted delivery.
  - `created_at` string, date-time, required: When the endpoint entered the state, RFC 3339 in UTC to the second.
  - `data` object, required
    - `at` string, date-time, required: When the change happened, RFC 3339 in UTC to the nanosecond. It orders an endpoint's events, which created_at, to the second, can leave tied.
    - `endpoint_id` string, required: The dedicated endpoint's id.
    - `model_id` string, required: The model id clients send as `model` for this endpoint.
    - `state` string, required: The state the endpoint entered: ready or disabled, or deleted for endpoint.deleted.
    - `version` integer, required: The endpoint version the state reflects; the last version for endpoint.deleted.
  - `id` string, required: The event's id, evt_ followed by a UUID. It derives from the endpoint, the state and when the endpoint entered it, so the same change recorded twice is one event. A retry of a delivery carries the same id.
  - `type` 'endpoint.ready' | 'endpoint.disabled' | 'endpoint.deleted', required

## Acknowledgement `2XX`

Delivered. Any 2xx status within 10 seconds counts, and its body is not kept.

## Other responses

- `default`: Any other final status, a connection error, or no answer within 10 seconds fails the attempt, and up to the first 1000 bytes of the response body are kept in the delivery's error message. Redirects are followed, at most 9 (10 requests in all), each hop held to the webhook URL's rules (https, no credentials, no internal address), and the last status counts. A failed delivery is tried at most 3 times: the second attempt about 10 seconds after the first and the third about 60 seconds after the second, each run by a scheduler that checks every 30 seconds, so a retry can come up to 30 seconds later. A retry that comes due while the webhook is disabled or deleted is dropped.

---

[API](https://skmtc.dev/openrelay/apis/openrelay-api.md) - [All operations](https://skmtc.dev/openrelay/apis/openrelay-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openrelay/apis/openrelay-api/revisions/7fe59d94a9f5?raw)
