Skip to navigation

Pagination

How paged lists work, and how much the other lists return.

Paged lists use cursors. You ask for a page, and the response tells you where the next one starts.

Cursor pages

A paged response is an object with the page’s items and a nextCursor:

{
"items": [
{ "number": 5, "reason": "save", "createdAt": "2026-11-09T14:32:34.155Z", "changedFields": ["voiceConfig"] },
{ "number": 4, "reason": "save", "createdAt": "2026-11-09T14:32:30.168Z", "changedFields": ["voiceConfig"] }
],
"nextCursor": 4,
"latest": 5
}
  • To get the next page, send nextCursor back as the cursor query parameter.
  • nextCursor is null on the last page.
  • Treat a cursor as opaque: pass it back exactly as you got it.
  • limit sets the page size.

Newest items come first.

# First page
curl "https://api.rydhm.ai/v1/agents/$EXPERT_ID/versions?limit=2" \
-H "Authorization: Bearer $RYDHM_API_KEY"
# Next page: pass nextCursor back as cursor
curl "https://api.rydhm.ai/v1/agents/$EXPERT_ID/versions?limit=2&cursor=4" \
-H "Authorization: Bearer $RYDHM_API_KEY"

Paged routes

RoutePage sizeOrder
GET /v1/agents/{id}/versions (an expert’s version history)limit, default 30, at most 100Newest version first

Lists that are not paged

The other lists return everything in one response, up to a fixed cap. Filter them where the route allows it.

RouteWhat it returns
GET /v1/agentsEvery expert the key can see.
GET /v1/agents/{id}/kbEvery document of the expert.
GET /v1/chat/conversationsThe 50 most recently updated conversations that have at least one message. Filter with agentId.
GET /v1/chat/conversations/{id}/messagesEvery message of the conversation, oldest first.
GET /v1/meetingsThe 500 most recent meetings, newest first.
GET /v1/workspace-tools/{id}/callsThe most recent calls of a tool: take sets how many, default 20, at most 100.

To poll a live meeting’s transcript without downloading all of it each time, pass segmentsSince (an ISO 8601 time) to GET /v1/meetings/{id}. Only transcript lines created at or after that time come back.

For events as they happen, instead of polling lists, use webhooks.