curl --request GET \
--url https://api.onlyx.ai/v1/handoffs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/handoffs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/handoffs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"conversationId": "cnv_3d9e7b1a5c2f4e8d6a0b",
"createdAt": "2026-09-25T21:41:03.000Z",
"creatorId": "cre_8f2c1a9b0d7e4c3f2a1b",
"fanName": "Mike",
"id": "esc_5e1f2a3b4c5d6e7f8a9b",
"label": "Asks for a refund",
"note": "He says the video he bought does not play and wants his money back.",
"reason": "payment_dispute",
"status": "open"
}
],
"hasMore": true,
"nextCursor": "eyJrIjoiY3JlYXRvcnMiLCJwIjp7ImkiOiJjcmVfOGYyYzFhOWIwZDdlNGMzZjJhMWIifX0.Yp3k0Qm7T2vX9aLc4R8sWg"
}List open hand-offs
Lists the open hand-offs, oldest first: conversations where the AI chatter decided a person should take over (a fan in distress, a refund demand, a request to meet, something it must not handle), and the few OnlyX raises itself when paid content did not arrive. The AI is silent in these chats and the fan is waiting, so they are the most time-sensitive items in the inbox. Filter with creatorId; a creator the credential cannot see is 404 CREATOR_NOT_FOUND.
Scope: requires inbox:read.
Rate limit: the general limit of 120 requests per 60 seconds per credential.
curl --request GET \
--url https://api.onlyx.ai/v1/handoffs \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.onlyx.ai/v1/handoffs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.onlyx.ai/v1/handoffs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"conversationId": "cnv_3d9e7b1a5c2f4e8d6a0b",
"createdAt": "2026-09-25T21:41:03.000Z",
"creatorId": "cre_8f2c1a9b0d7e4c3f2a1b",
"fanName": "Mike",
"id": "esc_5e1f2a3b4c5d6e7f8a9b",
"label": "Asks for a refund",
"note": "He says the video he bought does not play and wants his money back.",
"reason": "payment_dispute",
"status": "open"
}
],
"hasMore": true,
"nextCursor": "eyJrIjoiY3JlYXRvcnMiLCJwIjp7ImkiOiJjcmVfOGYyYzFhOWIwZDdlNGMzZjJhMWIifX0.Yp3k0Qm7T2vX9aLc4R8sWg"
}Authorizations
An API key (onx_sk_…) created in OnlyX under Settings → API & MCP, or an OAuth access token (onx_at_…) issued to a connected app. Send it as Authorization: Bearer <credential>. API keys may also be sent as X-API-Key: <key>.
Query Parameters
Only this creator's hand-offs.
40Page size, 1-100. Default 25.
1 <= x <= 100Opaque cursor from the previous page's nextCursor. Omit for the first page.
1024