Events API

Query your event log to see all API actions across do.dev services

The Events API lets you browse and search your organization's event log. Events are retained for 30 days.

List Events

GET/v1/events

List events for your organization

Requires:platform:events:read

Query Parameters

servicestring
Filter by service (e.g., send, telco, talk)
typestring
Filter by event type (e.g., send.email.sent)
limitnumber
Number of events to return (1-100, default 50)
cursornumber
Pagination cursor (createdAt timestamp from previous response)
List recent events
curl "https://api.do.dev/v1/events?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"events": [
  {
    "eventId": "evt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "type": "send.email.sent",
    "service": "send",
    "data": {
      "messageId": "msg_abc123",
      "from": "hello@example.com",
      "to": ["user@example.com"],
      "subject": "Welcome!"
    },
    "livemode": true,
    "createdAt": 1700000000000
  },
  {
    "eventId": "evt_b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "type": "telco.lookup.completed",
    "service": "telco",
    "data": {
      "tn": "2125551234",
      "npa": "212",
      "nxx": "555",
      "hasCarrier": true,
      "hasInventory": false
    },
    "livemode": true,
    "createdAt": 1699999000000
  }
],
"nextCursor": 1699999000000,
"hasMore": true
}

Pagination

Events are returned newest-first. To page through results, pass the nextCursor value from the response as the cursor parameter in the next request:

# First page
curl "https://api.do.dev/v1/events?limit=50" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Next page (using nextCursor from previous response)
curl "https://api.do.dev/v1/events?limit=50&cursor=1699999000000" \
  -H "Authorization: Bearer YOUR_API_KEY"

When hasMore is false, you've reached the end of the results.

Filtering by Service

# Only send events
curl "https://api.do.dev/v1/events?service=send" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Only telco events
curl "https://api.do.dev/v1/events?service=telco" \
  -H "Authorization: Bearer YOUR_API_KEY"

Filtering by Event Type

# Only email bounce events
curl "https://api.do.dev/v1/events?type=send.email.bounced" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get Event

GET/v1/events/{id}

Get a single event with delivery details

Requires:platform:events:read

Path Parameters

idstringrequired
The event ID (e.g., evt_a1b2c3d4...)
Get a single event
curl "https://api.do.dev/v1/events/evt_a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "Authorization: Bearer YOUR_API_KEY"
Response200
{
"eventId": "evt_a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "send.email.sent",
"service": "send",
"data": {
  "messageId": "msg_abc123",
  "from": "hello@example.com",
  "to": ["user@example.com"],
  "subject": "Welcome!"
},
"livemode": true,
"createdAt": 1700000000000,
"deliveries": [
  {
    "url": "https://example.com/webhooks/dodev",
    "status": "success",
    "httpStatus": 200,
    "responseTimeMs": 145,
    "attemptNumber": 1,
    "maxAttempts": 5,
    "createdAt": 1700000001000
  }
]
}

The deliveries array shows every webhook delivery attempt for this event, including retries.

Event Retention

Events and their delivery records are retained for 30 days. After 30 days, events are automatically deleted. If you need longer retention, export events to your own storage using the Events API or webhook deliveries.