Docs

Start here

List your threads, newest first

GET/v1/chat/conversationson https://api.auray.ai/v1

The threads held by the account this key belongs to — made here, by POST /chat, or in the desktop.

The threads held by the account this key belongs to — made here, by POST /chat, or in the desktop. A thread costs nothing and prints no charge; each answer's job_id is what GET /jobs/{id} reads a turn's cost by. It needs chat:read: a thread holds what a person typed, so neither text:write nor the older chat:write, which submit turns and start threads, reads one back, and Account offers chat:read unticked.

#Authentication

Authorization: Bearer auray_sk_… — chat:read — not jobs:read, and not text:write or the older chat:write, which submit turns and start threads but do not read one back.

#Request

#Query parameters

NameTypeRequiredDescription
limitintegernoClamped to 100. Anything but a whole number of at least 1 is 400 invalid_limit. 1 to 100.
beforestringnoThe older cursor, still accepted: feed back the next_before from the previous page, and the next page starts strictly older than it — a thread made in the same microsecond as the page's last one is skipped. Prefer cursor.
cursorstringnoCursor. Feed back the next_cursor from the previous page, unchanged; the next page starts right after the last thread it listed, so a thread that shares its created_at is never skipped. Not with before: sending both is 400 invalid_cursor, as is a cursor no page answered.
archivedstringnoInclude archived threads. One of "true".

#Example request

curl https://api.auray.ai/v1/chat/conversations \
  -H "Authorization: Bearer $AURAY_API_KEY"

#Responses

#200 OK

OK

FieldTypeRequiredDefaultDescription
objectstringno—One of "list".
dataobject[]no—
data[].idstringno—
data[].objectstringno—One of "conversation".
data[].modelstringno—The chat model the thread was made with, and the default for its turns, by the name a turn prints: a slot by its own name, or a catalogue language model by its published address (auray-serverless/model/…). One of "glm-5-3-flash", "deepseek-v4-1-flash", "kimi-k3", "qwen3-8", "glm-5-3", "auray-serverless/model/openai-gpt-5-nano", "auray-serverless/model/openai-gpt-5-mini", "auray-serverless/model/openai-gpt-5-4-nano", "auray-serverless/model/openai-gpt-5-4-mini", "auray-serverless/model/openai-gpt-5-4", "auray-serverless/model/openai-gpt-5-5", "auray-serverless/model/anthropic-claude-haiku-4-5", "auray-serverless/model/anthropic-claude-sonnet-4-6", "auray-serverless/model/anthropic-claude-opus-4-7", "auray-serverless/model/anthropic-claude-opus-4-8", "auray-serverless/model/anthropic-claude-fable-5", "auray-serverless/model/google-gemma-4-31b", "auray-serverless/model/google-gemini-3-1-flash-lite", "auray-serverless/model/google-gemini-3-flash", "auray-serverless/model/google-gemini-3-5-flash", "auray-serverless/model/google-gemini-3-1-pro", "auray-serverless/model/xai-grok-4-3", "auray-serverless/model/minimax-m3", "auray-serverless/model/zai-glm-5-1".
data[].titlestringno—Empty until the first message names it.
data[].originstringno—Null for an ordinary thread; explore for one made in Playground, api for one /openai/v1 made. One of "explore", "api", null. May be null.
data[].archivedbooleanno—Archived threads — every one /openai/v1 made is born archived — are listed only with archived=true.
data[].created_atstringno—
data[].updated_atstringno—
has_morebooleanno—
next_beforestringno—The created_at of the last thread on this page, or null when has_more is false: the older cursor, passed back as before. May be null.
next_cursorstringno—Pass it back as cursor, unchanged, for the next page: it names the last thread on this one to the microsecond, so a thread sharing its created_at is never skipped. Null when has_more is false. May be null.

Headers:

HeaderDescription
RateLimit-LimitBurst capacity.
RateLimit-Remaining
RateLimit-ResetSeconds until refill.
X-RateLimit-Limit
X-RateLimit-Remaining
X-RateLimit-ResetUnix seconds. The X- spelling is what client libraries read.
X-Request-Id

#400 Bad Request

#401 Unauthorized

#403 Forbidden

#429 Too Many Requests

#500 Internal Server Error

#503 Service Unavailable

#Status codes

StatusMeaning
200OK
400Bad Request
401Unauthorized
403Forbidden
429Too Many Requests
500Internal Server Error
503Service Unavailable

Every refusal names its code, and every code is explained at Errors.

Start typing to search every page of the documentation.

Up arrow Down arrow to moveEnter to openEscape to close