Pagination
List endpoints return results one page at a time, in a stable order, with an opaque cursor for the next page.
{
"data": [ { "id": "4cbfdb50-6b7d-45d4-94b3-05a52ce3f4d1", "...": "..." } ],
"pagination": {
"next_cursor": "eyJpZCI6IjRjYmZkYjUwIn0",
"has_more": true
}
}Parameters
page[limit]integerNumber of records to return. Defaults to 50, maximum 100.
page[after]stringThe next_cursor from the previous page. Omit it for the first page.
Response fields
dataarrayRequiredThe records on this page, in stable order.
pagination.next_cursorstring or nullRequiredPass as page[after] to get the next page. null on the last page.
pagination.has_morebooleanRequiredWhether another page exists.
Ordering
Each list endpoint documents its order. Messages are newest first unless you pass order=asc, and group_by=conversation groups them by conversation. Conversations are ordered by latest activity, and users by name. Ties break on ID.
A cursor keeps the order your first request saw, so you can retry a page safely. You never skip or repeat records, even when new messages arrive while you page.
Fetch every page
cURL
curl -g "https://api.bloomtext.com/v1/patient-messages?after=2026-09-21&page[limit]=100&page[after]=eyJpZCI6IjRjYmZkYjUwIn0" \
-H "Authorization: Bearer $BLOOMTEXT_API_KEY"Tips
- Treat cursors as opaque. Don’t parse, build, or store them long-term. A cursor is valid for 24 hours.
- Request large pages.
page[limit]=100uses fewer requests against your rate limit. - Follow new messages with
after, not cursors. Request again withafterset to the newest message you’ve seen. See Read messages.