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
string
required
Your API key with Write scope
X-Api-Key: daya_sk_YOUR_API_KEY
Path Parameters
string
required
Webhook ID (UUID)Example:
770e8400-e29b-41d4-a716-446655440000Query Parameters
integer
Number of logs to returnDefault:
50Range: 1 to 100integer
Offset 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
boolean
required
Indicates if the request was successful
string
required
Human-readable response message
array
required
Array of delivery log objects
Show delivery log properties
Show delivery log properties
string
Unique delivery log identifier (UUID)
string
Event identifier (UUID)
string
Type of eventValues:
order.created, order.filled, order.partially_filled, order.cancelled, order.rejected, trade.executed, deposit.completed, crypto.deposit.completedstring
Delivery statusValues:
pending, delivered, failed, retryinginteger
Number of delivery attempts made
integer
Maximum delivery attempts allowed
integer
HTTP response status code from your endpoint (if any)
string
Last error message (if any)
string
Timestamp of last delivery attempt (ISO 8601)
string
Timestamp of next retry attempt (ISO 8601, if retrying)
string
Timestamp when successfully delivered (ISO 8601)
string
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