For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
SupportDashboard
GuidesAPI Reference
GuidesAPI Reference
  • Endpoints
      • GETTab counts for the loads list
      • GETGet calls for a load
      • GETGet failed carrier verifications for a load
      • GETGet active escalations for a load
      • GETList webhook endpoints
      • POSTRegister a webhook endpoint
      • GETGet a webhook endpoint
      • DELDelete a webhook endpoint
      • PATCHUpdate a webhook endpoint
      • POSTRotate the signing secret
      • GETList delivery attempts for an endpoint
      • GETList attempts for a logical message
      • POSTReplay a delivery
      • GETList subscribable event types
LogoLogo
SupportDashboard
EndpointsAPI

List attempts for a logical message

GET
/webhooks/messages/:message_id/attempts
GET
/api/v1/webhooks/messages/:message_id/attempts
$curl https://tryenvoy.ai/api/v1/webhooks/messages/message_id/attempts \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json"
1[
2 {
3 "id": "atmp_3f9a1c2b-7d4e-4f8a-9b2d-1e2f3a4b5c6d",
4 "message_id": "msg_8a7b6c5d-4e3f-2a1b-9c8d-7e6f5a4b3c2d",
5 "endpoint_id": "ep_1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
6 "attempt": 2,
7 "max_attempts": 5,
8 "status": "FAILED",
9 "next_attempt_at": "2024-04-10T14:45:00Z",
10 "response_status_code": 503,
11 "response_body_excerpt": "Service Unavailable",
12 "error_message": "Timeout while connecting to endpoint",
13 "duration_ms": 1200,
14 "delivered_at": null,
15 "created_at": "2024-04-10T14:30:00Z",
16 "payload": {
17 "id": "evt_12345678-90ab-cdef-1234-567890abcdef",
18 "type": "shipment.updated",
19 "timestamp": "2024-04-10T14:29:59Z",
20 "data": {
21 "shipment_id": "shp_98765432-10fe-dcba-4321-fedcba098765",
22 "status": "in_transit",
23 "location": "Chicago, IL"
24 }
25 }
26 }
27]

A ‘message’ is identified by the event id and spans all endpoints subscribed at the time the event was emitted. Returns every recorded attempt for this org’s endpoints.

Authentication: Supports API key and bearer token authentication.

Was this page helpful?
Previous

Replay a delivery

Next
Built with

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

message_idstringRequiredformat: "uuid"

Headers

X-Organization-IDstring or nullOptional

Response

Successful Response
idstringformat: "^atmp_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
message_idstringformat: "^msg_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"

Stable per (event, endpoint) — same across retries.

endpoint_idstringformat: "^ep_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
attemptinteger
max_attemptsinteger
statusenum

Per-attempt delivery state.

SENDING is the transient state that prevents double-sends: the delivery task atomically flips PENDING → SENDING (compare-and-set on the row) before doing the outbound POST, so any other worker that picks up the same row from the sweeper backs off cleanly. Always a terminal status (SUCCEEDED/FAILED/DEAD) by the time the task returns.

Allowed values:
next_attempt_atdatetime or null
response_status_codeinteger or null
response_body_excerptstring or null
error_messagestring or null
duration_msinteger or null
delivered_atdatetime or null
created_atdatetime
payloadmap from strings to any or null

The envelope as delivered (id, type, timestamp, data).

Errors

401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
422
Unprocessable Entity Error
429
Too Many Requests Error