Skip to content

Get message delivery attempts

GET
/v1/messages/{id}/attempts

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.

id
required
string format: uuid

Unique message identifier (UUIDv7)

Example
01935abc-def0-7123-4567-890abcdef012

Attempts retrieved successfully. Returns an empty array if the message has no attempts yet or if the message ID is not found.

object
data
required
Array<object>

A single delivery attempt for a webhook message

object
id
required

Unique attempt identifier (UUIDv7)

string format: uuid
Example
01935abc-def0-7123-4567-890abcdef001
attempt_no
required

Attempt number (1-based)

integer
Example
1
response_status

HTTP status code from the endpoint

integer
Example
200
response_latency_ms

Response latency in milliseconds

integer
Example
245
processing_ms

Total processing time in milliseconds (outbound attempts only; not populated for inbound attempts)

integer
nullable
Example
280
error_text

Error message if the attempt failed

string
Example
connection timeout
response_headers

Response headers from the endpoint

object
key
additional properties
string
retry_type

Type of retry scheduling applied

string
Example
slow
retry_after_seconds

Seconds until next retry was scheduled

integer
Example
1800
resolved_ip

IP address the endpoint hostname resolved to

string
Example
203.0.113.42
request_headers

Request headers sent to the endpoint

object
key
additional properties
string
dns_ms

DNS resolution time in milliseconds

integer
Example
12
tcp_connect_ms

TCP connection time in milliseconds

integer
Example
25
tls_handshake_ms

TLS handshake time in milliseconds

integer
Example
45
ttfb_ms

Time to first byte in milliseconds

integer
Example
200
transfer_ms

Response transfer time in milliseconds

integer
Example
8
conn_reused

Whether the TCP connection was reused

boolean
response_body_url

Presigned URL to download the response body (Starter+ plans only, expires in 15 minutes)

string format: uri
response_body_truncated

Whether the stored response body was truncated. Only present in the response when true; absence means the body was not truncated.

boolean
created_at
required

When the attempt was made

string format: date-time
Example
2025-12-06T12:00:00Z
meta
required
object
request_id

Unique identifier for this request (useful for support)

string
Example
req_xyz123
has_more
required

Whether more attempts exist beyond the returned set

boolean
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
error
object
code

Machine-readable error code

string
Example
INVALID_REQUEST
message

Human-readable error message

string
Example
endpoint must be a valid HTTPS URL
meta
object
request_id

Unique identifier for this request (useful for support)

string
Example
req_xyz123
Examples

Endpoint not found

{
"error": {
"code": "ENDPOINT_NOT_FOUND",
"message": "endpoint not found"
},
"meta": {
"request_id": "req_xyz123"
}
}

Unauthorized - Invalid or missing API key

object
error
object
code

Machine-readable error code

string
Example
INVALID_REQUEST
message

Human-readable error message

string
Example
endpoint must be a valid HTTPS URL
meta
object
request_id

Unique identifier for this request (useful for support)

string
Example
req_xyz123
Example
{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or missing API key"
},
"meta": {
"request_id": "req_xyz123"
}
}

Internal server error

object
error
object
code

Machine-readable error code

string
Example
INVALID_REQUEST
message

Human-readable error message

string
Example
endpoint must be a valid HTTPS URL
meta
object
request_id

Unique identifier for this request (useful for support)

string
Example
req_xyz123
Example
{
"error": {
"code": "INTERNAL_ERROR",
"message": "An internal error occurred"
},
"meta": {
"request_id": "req_xyz123"
}
}
Personalize Examples

Enter your credentials to populate code examples throughout the docs.