Skip to content

Events

The ingest endpoint accepts the optional Idempotency-Key header. See Idempotency for duplicate and conflict behavior.

Send, retrieve, and query webhook events.

Ingest Event

POST /e/:endpoint_id

Send an event to a specific endpoint. Just POST JSON with your API key — no signing required.

Headers

HeaderRequiredDescription
AuthorizationYesBearer API key
Idempotency-KeyNoStable key for duplicate-safe delivery and billing (1–255 characters)
X-Event-TypeNoEvent type (auto-detected from event_type in body if omitted)
X-Correlation-IDNoYour tracking ID for this event (max 128 chars, alphanumeric + -_)

Request Body

json
{
  "event_type": "order.created",
  "data": {
    "order_id": "ORD-001",
    "amount": 99.99
  }
}

The body can be any JSON. event_type is extracted from the body or the X-Event-Type header.

Response

HTTP 202 Accepted
json
{
  "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
  "status": "QUEUED"
}

Save the id — use it to check delivery status later.

List Events

GET /api/v1/events

Query Parameters

ParamTypeDefaultDescription
limitinteger50Results per page (max 100)
offsetinteger0Offset for pagination
endpoint_idstringFilter by endpoint
statusstringFilter by status
correlation_idstringFilter by your correlation ID

Response

json
{
  "events": [
    {
      "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
      "endpoint_id": "4e2eba24818c6a8bbbdab486cfad9785",
      "event_type": "order.created",
      "status": "DELIVERED",
      "created_at": 1787822400,
      "updated_at": 1787822400
    }
  ]
}

The response contains the selected page only; it does not include a total count.

Get Event

GET /api/v1/events/:id

Response

json
{
  "event": {
    "id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
    "org_id": "e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
    "endpoint_id": "4e2eba24818c6a8bbbdab486cfad9785",
    "event_type": "order.created",
    "status": "DELIVERED",
    "retry_count": 0,
    "max_retries": 5,
    "is_replay": 0,
    "source_event_id": null,
    "created_at": 1787822400,
    "updated_at": 1787822401
  },
  "delivery_attempts": [
    {
      "id": "da_7a337feef0633bcfa20ae1b0ba3e0372",
      "event_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
      "status_code": 200,
      "duration_ms": 145,
      "error": null,
      "attempted_at": 1787822401
    }
  ]
}

The live response includes additional event and attempt metadata. Timestamps are Unix seconds.

Replay Event

POST /api/v1/events/:id/replay

Creates a new, non-billable delivery event from the stored payload. The original event and its attempt history remain unchanged.

Response

json
{
  "id": "f1e2d3c4b5a697886970615043322110",
  "status": "QUEUED",
  "source_event_id": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
}

Released under the MIT License.