Gravv docs
Docs Agent Sign in Get API keys

Get webhook event details

Returns one delivery record with the stored payload, the delivery state and your endpoint's last response. Use it to see what was sent and why a delivery failed. The response does not include request headers.

GEThttps://api.gravv.xyz/v1/webhooks/event/{id}

Path Parameters

The delivery record id from the history list. It is not the event_id in the delivered body.

Responses

Status Description
200 The delivery record
400 The request failed. An unknown ID, or one from another business or environment, returns event not found. If your endpoint's last response was JSON but not an object, this route returns failed to process event data.

200 response

Delivery record ID

As in the history list. The API leaves it out when there is none.

The event's event_group_id, the same value as the X-Event-ID header. It is not the event_id in the payload. Deduplicate on payload.event_id.

The event category, such as transfer or cards. The full event type is in payload.event_type.

Delivery status. A delivery moves from pending to processing, then to sent on a 2xx or to retrying on a failure. After the last allowed attempt it is failed.

Possible values: pending, processing, sent, failed, retrying

URL path of your endpoint. Empty before the first attempt.

Possible values: POST

A stored copy of the event body. Its keys are in a different order from the bytes your endpoint received, so you cannot check a signature against it.

Headers your endpoint returned on the last attempt

Last HTTP status from your endpoint. Null until your endpoint responds. 0 when an attempt failed before Gravv made any call, for example because no webhook URL is set or the URL is not https.

Your endpoint's last response body, up to 64 KiB. Gravv wraps a body that is not JSON as {"error": "Invalid JSON response", "raw": "..."}.

Failed attempts so far. A successful delivery does not add to it.

Total attempts allowed

Time of the last failed attempt. The API leaves it out until one fails.

When the next retry may run. The API leaves it out when none is due.

{
"data": {
"id": "0b3c2f4e-7c1a-4e0e-9a51-2f7d1c9e8a10",
"transaction_id": "5d1e7a3b-2c4f-4b8e-9d6a-1f0e3c2b7a95",
"event_id": "9a7c1e52-6b3d-4f0a-8e21-7d5c4b3a2f10",
"event_type": "transfer",
"status": "sent",
"path": "/hooks/gravv",
"http_method": "POST",
"payload": {
  "event_category": "transfer",
  "event_data": {
    "amount": "100.5",
    "associated_transactions": [
      "5d1e7a3b-2c4f-4b8e-9d6a-1f0e3c2b7a95"
    ],
    "client_reference": "inv-2291",
    "reference": "9a7c1e52-6b3d-4f0a-8e21-7d5c4b3a2f10",
    "status": "completed",
    "transfer_status": "completed"
  },
  "event_group_id": "9a7c1e52-6b3d-4f0a-8e21-7d5c4b3a2f10",
  "event_id": "e4b1c0d2-3f5a-4e6b-8c7d-9a0b1c2d3e4f",
  "event_type": "transfer.status.completed",
  "idempotency_key": "9a7c1e52-6b3d-4f0a-8e21-7d5c4b3a2f10:4",
  "timestamp": "2026-10-13T09:15:02.481263Z",
  "transaction_id": "5d1e7a3b-2c4f-4b8e-9d6a-1f0e3c2b7a95"
},
"response_headers": {
  "Content-Type": [
    "application/json"
  ]
},
"response_status_code": 200,
"response_body": {
  "received": true
},
"attempts": 0,
"max_retries": 50,
"created_at": "2026-10-13T09:15:02.512004Z",
"updated_at": "2026-10-13T09:15:31.004417Z"
},
"error": null
}

400 response

{
"data": null,
"error": "event not found"
}

Authorization

  • ApiKeyAuth
Was this page helpful?
ESC