Get message delivery attempts
const url = 'https://api.hookbridge.io/v1/messages/01935abc-def0-7123-4567-890abcdef012/attempts';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.hookbridge.io/v1/messages/01935abc-def0-7123-4567-890abcdef012/attempts \ --header 'Authorization: Bearer <token>'Retrieve all delivery attempts for a specific message, including timing breakdown, response details, and connection metadata. Useful for debugging delivery failures.
Response body URLs are only available on Starter plans and above.
Note: If the message ID does not exist or belongs to a different project,
this endpoint returns 200 with an empty data array (not 404). Use
GET /v1/messages/{id} first to verify the message exists.
Note: Results are capped at 200 attempts. If has_more is true in the
response, additional attempts exist but cannot be retrieved yet. Cursor-based
pagination will be added in a future release.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Unique message identifier (UUIDv7)
Example
01935abc-def0-7123-4567-890abcdef012Responses
Section titled “Responses”Attempts retrieved successfully. Returns an empty array if the message has no attempts yet or if the message ID is not found.
object
A single delivery attempt for a webhook message
object
Unique attempt identifier (UUIDv7)
Attempt number (1-based)
HTTP status code from the endpoint
Response latency in milliseconds
Total processing time in milliseconds (outbound attempts only; not populated for inbound attempts)
Error message if the attempt failed
Response headers from the endpoint
object
Type of retry scheduling applied
Seconds until next retry was scheduled
IP address the endpoint hostname resolved to
Request headers sent to the endpoint
object
DNS resolution time in milliseconds
TCP connection time in milliseconds
TLS handshake time in milliseconds
Time to first byte in milliseconds
Response transfer time in milliseconds
Whether the TCP connection was reused
Presigned URL to download the response body (Starter+ plans only, expires in 15 minutes)
Whether the stored response body was truncated. Only present in the response when true; absence means the body was not truncated.
When the attempt was made
object
Unique identifier for this request (useful for support)
Whether more attempts exist beyond the returned set
Example
{ "data": [ { "id": "01935abc-def0-7123-4567-890abcdef001", "attempt_no": 1, "response_status": 500, "response_latency_ms": 245, "error_text": "HTTP 500 Internal Server Error", "retry_type": "slow", "retry_after_seconds": 1800, "dns_ms": 12, "tcp_connect_ms": 25, "tls_handshake_ms": 45, "ttfb_ms": 200, "transfer_ms": 8, "conn_reused": false, "created_at": "2025-12-06T12:00:00Z" }, { "id": "01935abc-def0-7123-4567-890abcdef002", "attempt_no": 2, "response_status": 200, "response_latency_ms": 120, "dns_ms": 0, "tcp_connect_ms": 0, "tls_handshake_ms": 0, "ttfb_ms": 115, "transfer_ms": 5, "conn_reused": true, "created_at": "2025-12-06T12:30:00Z" } ], "meta": { "request_id": "req_xyz123", "has_more": false }}Invalid request
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Examples
Endpoint not found
{ "error": { "code": "ENDPOINT_NOT_FOUND", "message": "endpoint not found" }, "meta": { "request_id": "req_xyz123" }}Invalid endpoint ID format
{ "error": { "code": "INVALID_REQUEST", "message": "endpoint_id must be in format ep_xxx" }, "meta": { "request_id": "req_xyz123" }}Invalid payload
{ "error": { "code": "INVALID_REQUEST", "message": "payload must be valid JSON" }, "meta": { "request_id": "req_xyz123" }}Invalid headers
{ "error": { "code": "INVALID_HEADERS", "message": "header 'Host' is forbidden and cannot be overridden" }, "meta": { "request_id": "req_xyz123" }}Unauthorized - Invalid or missing API key
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Example
{ "error": { "code": "UNAUTHORIZED", "message": "Invalid or missing API key" }, "meta": { "request_id": "req_xyz123" }}Internal server error
object
object
Machine-readable error code
Human-readable error message
object
Unique identifier for this request (useful for support)
Example
{ "error": { "code": "INTERNAL_ERROR", "message": "An internal error occurred" }, "meta": { "request_id": "req_xyz123" }}Enter your credentials to populate code examples throughout the docs.