All pages

Guides

The event feed

Every event of the last 30 days, in order — to catch up on webhooks you missed, or instead of receiving them at all.

View as Markdown

Every event the platform sends to webhook receivers is also kept for 30 days in a feed you can read: the same events, with the same ids, whether or not anybody received them. Use it to catch up after your receiver was down, or read it instead of running a receiver at all. Reading needs conversations:read.

Read the event feed
#!/bin/sh
# Read the event feed. Keep the last page's next_cursor and send it back as cursor= next time.
curl -sS --fail-with-body -X GET "https://api.aigently.ai/v1/events?type=conversation.ended&limit=50" \
  -H "Authorization: Bearer $AIGENTLY_API_KEY"

Read it in order

Events come oldest first. Read until has_more is false, keep the last page's next_cursor, and next time send it back as cursor: you get every event since, once. Events from the last minute wait for a later page, so one still being written is never skipped.

Each event is what a receiver would have been sent:

{
  "object": "event",
  "id": "0f9a7c2e-5b1d-4e8a-9c3f-2d6b8e1a4c7f",
  "event": "conversation.ended",
  "created_at": "2026-10-07T09:14:03.120394+00:00",
  "livemode": true,
  "revision": 6,
  "data": { "object": "conversation", "id": "5f0c9a52-…", "status": "completed", "…": "…" }
}

An event you already received through a webhook has the same id here, so keep the ids you have handled and skip them. As with webhooks, keep the conversation with the higher revision.

Narrow it

Parameter
type One event type, like conversation.ended. Repeat it for several.
conversation_id Only the events about one conversation.
created_after Only events from this time on — where to start the first time.

What a key sees

The feed follows the same rules as everything else a key reads: its own projects and agents, and its own side of test mode. conversation.transcript events are listed only for a key with transcripts:read.