Loading API reference…
/organizations/{organizationId}/chatsOrganization identifier.
uuidOpaque cursor returned by the previous page.
Value in
Value in
Value in
Case-insensitive search across chat titles and visible message content.
application/json
application/json
curl -X GET "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats"{ "success": true, "statusCode": 200, "message": "Chats listed.", "data": [ { "id": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "title": "Customer Escalation", "status": "open", "summary": null, "harnessSessionId": null, "settings": { "pinnedTaskIds": [] }, "lastMessageAt": "2026-01-01T00:00:00.000Z", "archivedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "isOnboardingChat": false } ], "pagination": { "cursor": null, "limit": 50, "nextCursor": null, "previousCursor": null, "hasNextPage": false, "hasPreviousPage": false }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chatsOrganization identifier.
uuidapplication/json
TypeScript Definitions
Use the request body type in TypeScript.
application/json
application/json
curl -X POST "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats" \ -H "Content-Type: application/json" \ -d '{ "title": "Customer Escalation" }'{ "success": true, "statusCode": 201, "message": "Chat created.", "data": { "id": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "title": "Customer Escalation", "status": "open", "summary": null, "harnessSessionId": null, "settings": { "pinnedTaskIds": [] }, "lastMessageAt": "2026-01-01T00:00:00.000Z", "archivedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "isOnboardingChat": false }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chats/{id}Organization identifier.
uuidResource identifier.
uuidapplication/json
application/json
application/json
curl -X GET "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "success": true, "statusCode": 200, "message": "Chat found.", "data": { "id": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "title": "Customer Escalation", "status": "open", "summary": null, "harnessSessionId": null, "settings": { "pinnedTaskIds": [] }, "lastMessageAt": "2026-01-01T00:00:00.000Z", "archivedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "isOnboardingChat": false }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 404, "message": "Chat not found.", "error": { "code": "chat_not_found" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chats/{id}Organization identifier.
uuidResource identifier.
uuidapplication/json
TypeScript Definitions
Use the request body type in TypeScript.
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "title": "Customer Escalation" }'{ "success": true, "statusCode": 200, "message": "Chat updated.", "data": { "id": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "title": "Customer Escalation", "status": "open", "summary": null, "harnessSessionId": null, "settings": { "pinnedTaskIds": [] }, "lastMessageAt": "2026-01-01T00:00:00.000Z", "archivedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "isOnboardingChat": false }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 404, "message": "Chat not found.", "error": { "code": "chat_not_found" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 409, "message": "Wait for the active assistant response to finish before archiving this chat.", "error": { "code": "chat_response_active" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chats/{id}Organization identifier.
uuidResource identifier.
uuidapplication/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "success": true, "statusCode": 200, "message": "Chat deleted.", "data": { "id": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "title": "Customer Escalation", "status": "open", "summary": null, "harnessSessionId": null, "settings": { "pinnedTaskIds": [] }, "lastMessageAt": "2026-01-01T00:00:00.000Z", "archivedAt": null, "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z", "isOnboardingChat": false }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 404, "message": "Chat not found.", "error": { "code": "chat_not_found" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 409, "message": "The organization onboarding chat cannot be changed.", "error": { "code": "onboarding_chat_immutable" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chats/{chatId}/eventsStarts with the latest persisted assistant snapshot, then streams revisioned message updates.
Organization identifier.
uuidChat identifier.
uuidLast processed event in assistantMessageId:revision format.
text/event-stream
curl -X GET "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08/events" \ -H "Last-Event-ID: d4ad2b33-d18c-45c2-965d-22a883af9d89:4""id: d4ad2b33-d18c-45c2-965d-22a883af9d89:4\nevent: chat.snapshot\ndata: {\"type\":\"chat.snapshot\"}\n\n"/organizations/{organizationId}/chats/{chatId}/messages/{messageId}/cancelOrganization identifier.
uuidChat identifier.
uuidAssistant message identifier.
uuidapplication/json
application/json
application/json
curl -X POST "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08/messages/497f6eca-6276-4993-bfeb-53cbbbba6f08/cancel"{ "success": true, "statusCode": 200, "message": "Message cancellation requested.", "data": { "id": "380c8d1f-7a6a-4a8d-8dd9-3e9ecda3f4f1", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "chatId": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "replyToMessageId": null, "role": "assistant", "status": "cancelling", "revision": 1, "author": { "kind": "human", "displayName": "Operator" }, "parts": [ { "id": "part-1", "kind": "text", "text": "Create the onboarding plan." } ], "error": null, "completedAt": "2026-01-01T00:00:00.000Z", "createdAt": "2026-01-01T00:00:00.000Z", "updatedAt": "2026-01-01T00:00:00.000Z" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 404, "message": "Assistant message not found.", "error": { "code": "message_not_found" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 409, "message": "Assistant message cannot be cancelled from its current state.", "error": { "code": "message_not_cancellable" }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}/organizations/{organizationId}/chats/{chatId}/attachments/{attachmentId}Stores up to 50 MB of supported reference content under a client-generated, chat-scoped identifier.
Organization identifier.
uuidChat identifier.
uuidClient-generated attachment identifier.
uuidapplication/octet-stream
TypeScript Definitions
Use the request body type in TypeScript.
binaryapplication/json
application/json
application/json
application/json
application/json
curl -X PUT "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08/attachments/497f6eca-6276-4993-bfeb-53cbbbba6f08?fileName=string&mediaType=string" \ -H "Content-Type: application/octet-stream" \ -d 'string'{ "success": true, "statusCode": 201, "message": "Chat attachment stored.", "data": { "version": 1, "id": "31d22752-e70d-42ce-a28a-39dc87dc8fc8", "organizationId": "7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1", "chatId": "0ce65ee0-dcd9-46c2-90a4-243f5d54dc66", "fileName": "project-brief.md", "mediaType": "text/markdown", "sizeBytes": 2048, "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "createdAt": "2026-07-15T09:00:00.000Z", "uri": "oblive://organizations/7d4a6f1d-ff64-4a4f-9e8d-937bfaa0d2f1/chats/0ce65ee0-dcd9-46c2-90a4-243f5d54dc66/attachments/31d22752-e70d-42ce-a28a-39dc87dc8fc8" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}{ "success": false, "statusCode": 400, "message": "Validation failed.", "error": { "code": "validation_failed", "issues": [ { "path": "organizationId", "message": "Must be a valid UUID.", "code": "invalid_format" } ] }, "meta": { "timestamp": "2026-01-01T00:00:00.000Z" }}{ "success": false, "statusCode": 409, "message": "Attachments can only be added to open, non-onboarding chats.", "error": { "code": "attachment_not_allowed" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}{ "success": false, "statusCode": 413, "message": "Attachments cannot exceed 50 MB.", "error": { "code": "attachment_invalid" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}{ "success": false, "statusCode": 415, "message": "Attachment type is unsupported.", "error": { "code": "attachment_invalid" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}/organizations/{organizationId}/chats/{chatId}/attachments/{attachmentId}/contentOrganization identifier.
uuidChat identifier.
uuidClient-generated attachment identifier.
uuidValue in
application/octet-stream
application/octet-stream
application/json
application/json
curl -X GET "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08/attachments/497f6eca-6276-4993-bfeb-53cbbbba6f08/content""string""string"{ "success": false, "statusCode": 404, "message": "Chat attachment not found.", "error": { "code": "attachment_not_found" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}{ "success": false, "statusCode": 416, "message": "Requested byte range is not satisfiable.", "error": { "code": "range_not_satisfiable" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}/organizations/{organizationId}/chats/{chatId}/attachments/{attachmentId}/contentOrganization identifier.
uuidChat identifier.
uuidClient-generated attachment identifier.
uuidValue in
application/octet-stream
application/octet-stream
application/json
application/json
curl -X HEAD "https://example.com/organizations/497f6eca-6276-4993-bfeb-53cbbbba6f08/chats/497f6eca-6276-4993-bfeb-53cbbbba6f08/attachments/497f6eca-6276-4993-bfeb-53cbbbba6f08/content""string""string"{ "success": false, "statusCode": 404, "message": "Chat attachment not found.", "error": { "code": "attachment_not_found" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}{ "success": false, "statusCode": 416, "message": "Requested byte range is not satisfiable.", "error": { "code": "range_not_satisfiable" }, "meta": { "timestamp": "2026-07-15T09:00:00.000Z" }}User-visible title for a general chat.
1 <= length <= 200User-visible title for a general chat.
1 <= length <= 200Open restores a chat; archived archives it using server time.
Value in