Get Webhook Deliveries
curl --request GET \
--url https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries \
--header 'X-Api-Key: <x-api-key>'import requests
url = "https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries"
headers = {"X-Api-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>'}};
fetch('https://api.pro.daya.co/public/v1/webhooks/{id}/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://api.pro.daya.co/public/v1/webhooks/{id}/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 => [
"X-Api-Key: <x-api-key>"
],
]);
$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://api.pro.daya.co/public/v1/webhooks/{id}/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries")
.header("X-Api-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Delivery logs retrieved successfully",
"data": [
{
"id": "880e8400-e29b-41d4-a716-446655440000",
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"event_type": "order.filled",
"status": "delivered",
"attempts": 1,
"max_attempts": 10,
"response_status_code": 200,
"last_error": null,
"last_attempt_at": "2024-01-15T10:30:01Z",
"next_retry_at": null,
"delivered_at": "2024-01-15T10:30:01Z",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440001",
"event_id": "550e8400-e29b-41d4-a716-446655440001",
"event_type": "order.cancelled",
"status": "retrying",
"attempts": 3,
"max_attempts": 10,
"response_status_code": 500,
"last_error": "Internal Server Error",
"last_attempt_at": "2024-01-15T10:35:00Z",
"next_retry_at": "2024-01-15T10:40:00Z",
"delivered_at": null,
"created_at": "2024-01-15T10:00:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440002",
"event_id": "550e8400-e29b-41d4-a716-446655440002",
"event_type": "trade.executed",
"status": "failed",
"attempts": 10,
"max_attempts": 10,
"response_status_code": 0,
"last_error": "Connection timeout",
"last_attempt_at": "2024-01-14T22:00:00Z",
"next_retry_at": null,
"delivered_at": null,
"created_at": "2024-01-14T08:00:00Z"
}
],
"timestamp": "2024-01-15T10:35:00Z"
}
Webhooks API
Get Webhook Deliveries
Get delivery logs for a webhook
GET
/
public
/
v1
/
webhooks
/
{id}
/
deliveries
Get Webhook Deliveries
curl --request GET \
--url https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries \
--header 'X-Api-Key: <x-api-key>'import requests
url = "https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries"
headers = {"X-Api-Key": "<x-api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<x-api-key>'}};
fetch('https://api.pro.daya.co/public/v1/webhooks/{id}/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://api.pro.daya.co/public/v1/webhooks/{id}/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 => [
"X-Api-Key: <x-api-key>"
],
]);
$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://api.pro.daya.co/public/v1/webhooks/{id}/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<x-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries")
.header("X-Api-Key", "<x-api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pro.daya.co/public/v1/webhooks/{id}/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<x-api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Delivery logs retrieved successfully",
"data": [
{
"id": "880e8400-e29b-41d4-a716-446655440000",
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"event_type": "order.filled",
"status": "delivered",
"attempts": 1,
"max_attempts": 10,
"response_status_code": 200,
"last_error": null,
"last_attempt_at": "2024-01-15T10:30:01Z",
"next_retry_at": null,
"delivered_at": "2024-01-15T10:30:01Z",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440001",
"event_id": "550e8400-e29b-41d4-a716-446655440001",
"event_type": "order.cancelled",
"status": "retrying",
"attempts": 3,
"max_attempts": 10,
"response_status_code": 500,
"last_error": "Internal Server Error",
"last_attempt_at": "2024-01-15T10:35:00Z",
"next_retry_at": "2024-01-15T10:40:00Z",
"delivered_at": null,
"created_at": "2024-01-15T10:00:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440002",
"event_id": "550e8400-e29b-41d4-a716-446655440002",
"event_type": "trade.executed",
"status": "failed",
"attempts": 10,
"max_attempts": 10,
"response_status_code": 0,
"last_error": "Connection timeout",
"last_attempt_at": "2024-01-14T22:00:00Z",
"next_retry_at": null,
"delivered_at": null,
"created_at": "2024-01-14T08:00:00Z"
}
],
"timestamp": "2024-01-15T10:35:00Z"
}
Overview
Retrieve the delivery history for a specific webhook. Use this to monitor webhook delivery status, debug failures, and track retry attempts.Authentication
Your API key with Write scope
X-Api-Key: daya_sk_YOUR_API_KEY
Path Parameters
Webhook ID (UUID)Example:
770e8400-e29b-41d4-a716-446655440000Query Parameters
Number of logs to returnDefault:
50Range: 1 to 100Offset for paginationDefault:
0Request Examples
curl --request GET \
--url 'https://api.pro.daya.co/public/v1/webhooks/770e8400-e29b-41d4-a716-446655440000/deliveries?limit=20' \
--header 'X-Api-Key: daya_sk_YOUR_API_KEY'
const webhookId = '770e8400-e29b-41d4-a716-446655440000';
const response = await fetch(
`https://api.pro.daya.co/public/v1/webhooks/${webhookId}/deliveries?limit=20`,
{
headers: { 'X-Api-Key': 'daya_sk_YOUR_API_KEY' }
}
);
const data = await response.json();
console.log('Delivery logs:', data.data);
import requests
webhook_id = '770e8400-e29b-41d4-a716-446655440000'
headers = {'X-Api-Key': 'daya_sk_YOUR_API_KEY'}
response = requests.get(
f'https://api.pro.daya.co/public/v1/webhooks/{webhook_id}/deliveries',
headers=headers,
params={'limit': 20}
)
logs = response.json()
print(f"Delivery logs: {logs['data']}")
package main
import (
"encoding/json"
"fmt"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.pro.daya.co/public/v1/webhooks/770e8400-e29b-41d4-a716-446655440000/deliveries?limit=20", nil)
req.Header.Set("X-Api-Key", "daya_sk_YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println("Delivery logs:", result["data"])
}
Response
Indicates if the request was successful
Human-readable response message
Array of delivery log objects
Show delivery log properties
Show delivery log properties
Unique delivery log identifier (UUID)
Event identifier (UUID)
Type of eventValues:
order.created, order.filled, order.partially_filled, order.cancelled, order.rejected, trade.executed, deposit.completed, crypto.deposit.completedDelivery statusValues:
pending, delivered, failed, retryingNumber of delivery attempts made
Maximum delivery attempts allowed
HTTP response status code from your endpoint (if any)
Last error message (if any)
Timestamp of last delivery attempt (ISO 8601)
Timestamp of next retry attempt (ISO 8601, if retrying)
Timestamp when successfully delivered (ISO 8601)
ISO 8601 creation timestamp
Success Response
{
"success": true,
"message": "Delivery logs retrieved successfully",
"data": [
{
"id": "880e8400-e29b-41d4-a716-446655440000",
"event_id": "550e8400-e29b-41d4-a716-446655440000",
"event_type": "order.filled",
"status": "delivered",
"attempts": 1,
"max_attempts": 10,
"response_status_code": 200,
"last_error": null,
"last_attempt_at": "2024-01-15T10:30:01Z",
"next_retry_at": null,
"delivered_at": "2024-01-15T10:30:01Z",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440001",
"event_id": "550e8400-e29b-41d4-a716-446655440001",
"event_type": "order.cancelled",
"status": "retrying",
"attempts": 3,
"max_attempts": 10,
"response_status_code": 500,
"last_error": "Internal Server Error",
"last_attempt_at": "2024-01-15T10:35:00Z",
"next_retry_at": "2024-01-15T10:40:00Z",
"delivered_at": null,
"created_at": "2024-01-15T10:00:00Z"
},
{
"id": "880e8400-e29b-41d4-a716-446655440002",
"event_id": "550e8400-e29b-41d4-a716-446655440002",
"event_type": "trade.executed",
"status": "failed",
"attempts": 10,
"max_attempts": 10,
"response_status_code": 0,
"last_error": "Connection timeout",
"last_attempt_at": "2024-01-14T22:00:00Z",
"next_retry_at": null,
"delivered_at": null,
"created_at": "2024-01-14T08:00:00Z"
}
],
"timestamp": "2024-01-15T10:35:00Z"
}
Error Responses
{
"success": false,
"message": "Validation error",
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid webhook ID format"
}
}
{
"success": false,
"message": "Webhook not found",
"error": {
"code": "WEBHOOK_NOT_FOUND",
"message": "No webhook found with the specified ID"
}
}
{
"success": false,
"message": "Unauthorized",
"error": {
"code": "API_KEY_INVALID",
"message": "The provided API key is invalid"
}
}
Delivery Status
| Status | Description |
|---|---|
pending | Event queued, not yet attempted |
delivered | Successfully delivered (2xx response) |
retrying | Delivery failed, will retry |
failed | All retry attempts exhausted |
Retry Behavior
Failed deliveries are retried with exponential backoff:| Attempt | Delay After Previous |
|---|---|
| 1 | 10 seconds |
| 2 | 30 seconds |
| 3 | 1 minute |
| 4 | 5 minutes |
| 5 | 15 minutes |
| 6 | 30 minutes |
| 7 | 1 hour |
| 8 | 2 hours |
| 9 | 4 hours |
| 10 | 8 hours |
failed and the webhook may be automatically disabled.
Rate Limits
- 100 requests per minute per API key
Next Steps
Get Webhook
View webhook details
Update Webhook
Update webhook configuration
Webhook Overview
Learn about webhook events
Webhook Verification
Verify webhook signatures
⌘I