WhatsAble

Read an AI bot's long text in pages

gethttps://api.whatsable.app/v1/ai-bots/{id}/text/{field}
Build a request to copy

This page never sends a request. Fill in the fields, then copy the request and run it from your server.

Request
curl -X GET 'https://api.whatsable.app/v1/ai-bots/string/text/mission'

Returns one page of one of an AI bot's long texts, so a text too long to read in one response can be read whole.

This is offset paging over one text, not the cursor paging of a list: offset and limit count characters, not items, as JavaScript counts them (UTF-16 code units). Start at offset 0 and pass each page's next_offset until it is null. A page never splits an emoji or another character written as a surrogate pair, so it can hold one character fewer, or one more, than limit.

label_instructions is label_permissions.instructions and proactive_instructions is proactive.instructions; a path segment cannot nest.

Send the first page's ETag as If-Match with every later page: once the bot has changed, a page answers 412 precondition_failed instead of a page of a different version. Start again from offset 0 then.

Authorization

bearerAuth
headerAuthorizationBearer <nfy_live_<32 characters>>

An API key from Settings > API keys, sent as Authorization: Bearer <key>.

Path Parameters

id*string

The bot id.

Length1 <= length <= 64
field*string

The text to read.

Value in"mission""instructions""knowledge""handoff_instructions""label_instructions""proactive_instructions"

Query Parameters

offset?integer

The character to start at, counted from 0. Pass the previous page's next_offset.

Range0 <= value <= 9007199254740991
Default0
limit?integer

How many characters to return, 1 to 20,000.

Range1 <= value <= 20000
Default10000

Header Parameters

If-Match?string

The ETag of the first page. Once the bot has changed, a page answers 412 precondition_failed; start again from offset 0.

Response Body

One page of the text.

application/json
  1. response

One page of one of an AI bot's long texts.

object*string
bot_id*string
Length1 <= length <= 64
field*|

The text this page is part of.

offset*integer

Where this page starts. One less than the offset sent when that fell inside a character written as a surrogate pair, such as an emoji.

Range0 <= value <= 9007199254740991
total_length*integer

The length of the whole text, in characters as JavaScript counts them (UTF-16 code units). 0 when the field is empty or null.

Range0 <= value <= 9007199254740991
text*string

This page of the text. Empty when offset is at or past the end.

next_offset*|

The offset of the next page, or null on the last page.

updated_at*string

The bot's version this page was read at. Send it with every later page, and with the PATCH that rewrites the field, as If-Match (the ETag header carries the same version).

Formatdate-time
Example Request
curl -X GET 'https://api.whatsable.app/v1/ai-bots/string/text/mission'
Example Response
{  "object": "ai_bot_text",  "bot_id": "cm2v8b1a00001qz8h3j4k5l6m",  "field": "knowledge",  "offset": 20000,  "total_length": 20049,  "text": "Returns within 30 days. Exchanges within 60 days.",  "next_offset": null,  "updated_at": "2026-10-20T19:51:21Z"}