Webhooks
Get Webhook Deliveries
Returns the delivery history of your webhooks: every attempt Kravata made to notify your endpoints, its status and the last error. Use it to audit notifications and to detect events your server did not receive.
Request
| Field | Type | Required | Description |
|---|---|---|---|
| Authorization | Header | Yes | Bearer <access_token> obtained from POST /api/v1/client/token. |
| fromDate | Query | No | Start of the range (ISO 8601). Defaults to 7 days before toDate. |
| toDate | Query | No | End of the range (ISO 8601). Defaults to now. The range can span at most 90 days. |
| endpointId | Query | No | Only deliveries of this webhook endpoint (id from GET /api/v1/integration-endpoints). |
| event | Query | No | Only deliveries of this event, e.g. operation.status_updated. |
| status | Query | No | PENDING, SUCCESS, FAILED or RETRYING. |
| correlationId | Query | No | Only deliveries of this correlation ID. |
| page | Query | No | Page number, starting at 1. Send it together with pageSize. |
| pageSize | Query | No | Records per page (1-1000). Without page and pageSize, the first 50 records are returned. |
Results are ordered from newest to oldest.
Response
A paginated envelope (items, total, page, pageSize, orderBy, orderDirection). Each item contains:
| Field | Description |
|---|---|
| id | Identifier of the delivery. |
| endpointId | Webhook endpoint that was notified. |
| event | Event that triggered the delivery. |
| status | PENDING (queued), SUCCESS (your server answered 2xx), RETRYING (failed, a new attempt is scheduled) or FAILED (all attempts failed). |
| attempts / maxAttempts | Attempts made and maximum allowed (retryConfig.max_attempts of the endpoint). |
| nextRetryAt | When the next attempt will be made, for RETRYING. |
| lastError | Error of the last failed attempt, e.g. a timeout or an HTTP status from your server. |
| payload | Event data that was sent. |
| correlationId | Identifier that groups the deliveries of the same event. |
| registerDate | When the delivery was created. |
Errors
| Status | When |
|---|---|
| 400 | fromDate is after toDate, or the range is longer than 90 days. |
| 401 | Missing, invalid or expired access token. |
GET
/
api
/
v1
/
webhooks
/
deliveries
Get Webhook Deliveries
curl --request GET \
--url https://test-api-kore.kravata.co/api/v1/webhooks/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://test-api-kore.kravata.co/api/v1/webhooks/deliveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-api-kore.kravata.co/api/v1/webhooks/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-api-kore.kravata.co/api/v1/webhooks/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3f1c2a9e-7b4d-4e2a-9c1f-0a8b6d5e4c21",
"endpointId": "a7e5d0b2-1c3f-4b8a-9e6d-2f4c8b1a0d93",
"event": "operation.status_updated",
"status": "RETRYING",
"attempts": 2,
"maxAttempts": 3,
"nextRetryAt": "2026-10-01T15:42:10",
"lastError": "HTTP 503: Service Unavailable",
"payload": {
"id": "9d0ba2b6-6b84-4474-a0fd-456e3967eb4d",
"status": "COMPLETED",
"direction": "WITHDRAWAL"
},
"correlationId": "c0e1f2a3-4b5c-6d7e-8f90-a1b2c3d4e5f6",
"registerDate": "2026-10-01T15:37:02"
},
{
"id": "8b2d4e6f-1a3c-4d5e-9f70-b1c2d3e4f5a6",
"endpointId": "a7e5d0b2-1c3f-4b8a-9e6d-2f4c8b1a0d93",
"event": "operation.created",
"status": "SUCCESS",
"attempts": 1,
"maxAttempts": 3,
"nextRetryAt": null,
"lastError": null,
"payload": {
"id": "9d0ba2b6-6b84-4474-a0fd-456e3967eb4d",
"status": "PENDING",
"direction": "WITHDRAWAL"
},
"correlationId": "d1e2f3a4-5b6c-7d8e-9f01-b2c3d4e5f6a7",
"registerDate": "2026-10-01T15:36:58"
}
],
"total": 2,
"page": 1,
"pageSize": 50,
"orderBy": null,
"orderDirection": null
}Query Parameters
Get Webhook Deliveries
curl --request GET \
--url https://test-api-kore.kravata.co/api/v1/webhooks/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://test-api-kore.kravata.co/api/v1/webhooks/deliveries', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://test-api-kore.kravata.co/api/v1/webhooks/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://test-api-kore.kravata.co/api/v1/webhooks/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://test-api-kore.kravata.co/api/v1/webhooks/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "3f1c2a9e-7b4d-4e2a-9c1f-0a8b6d5e4c21",
"endpointId": "a7e5d0b2-1c3f-4b8a-9e6d-2f4c8b1a0d93",
"event": "operation.status_updated",
"status": "RETRYING",
"attempts": 2,
"maxAttempts": 3,
"nextRetryAt": "2026-10-01T15:42:10",
"lastError": "HTTP 503: Service Unavailable",
"payload": {
"id": "9d0ba2b6-6b84-4474-a0fd-456e3967eb4d",
"status": "COMPLETED",
"direction": "WITHDRAWAL"
},
"correlationId": "c0e1f2a3-4b5c-6d7e-8f90-a1b2c3d4e5f6",
"registerDate": "2026-10-01T15:37:02"
},
{
"id": "8b2d4e6f-1a3c-4d5e-9f70-b1c2d3e4f5a6",
"endpointId": "a7e5d0b2-1c3f-4b8a-9e6d-2f4c8b1a0d93",
"event": "operation.created",
"status": "SUCCESS",
"attempts": 1,
"maxAttempts": 3,
"nextRetryAt": null,
"lastError": null,
"payload": {
"id": "9d0ba2b6-6b84-4474-a0fd-456e3967eb4d",
"status": "PENDING",
"direction": "WITHDRAWAL"
},
"correlationId": "d1e2f3a4-5b6c-7d8e-9f01-b2c3d4e5f6a7",
"registerDate": "2026-10-01T15:36:58"
}
],
"total": 2,
"page": 1,
"pageSize": 50,
"orderBy": null,
"orderDirection": null
}
