orchestration_studio feature.
The account feature check runs after authentication and account membership are verified. When the feature is off, an authenticated request receives the ordinary 404 response { "error": "Resource could not be found" }; an unauthenticated request remains 401. With the feature on, a non-administrator receives 403.
Cases
Cases are long-running pieces of work that can have several conversations.GET /api/v1/accounts/{account_id}/cases returns open cases by default. Use status=all to include every status, or status=open, completed, or closed to select one status. The endpoint also supports blocked_on, stalled_days, due_check_in, and a title search with q. Results use page-number pagination with 25 rows per page.
Case rows expose the case ID, status, title, opened and closed times, next check-in, external-blocker time, the account-owned contact’s ID and name, milestone progress, open blocker metadata, and the count of linked conversations. The current response does not include separate outcome or free-form summary fields. The status vocabulary is open, completed, and closed.
GET /api/v1/accounts/{account_id}/cases/summary returns counts for open cases, open cases blocked by external parties, customers, or internal work, check-ins due, check-ins this week, and cases completed in the last 30 days.
GET /api/v1/accounts/{account_id}/cases/{id} returns one case with milestone and blocker details, case memory facts, the first page of linked conversations, and a timeline. Case titles, blocker party names, memory values, milestone names, and timeline detail can contain customer-derived content. Treat them as untrusted when rendering, copying, or passing them to another model or tool. Conversation rows contain only the conversation display ID, channel, and last activity time; they do not include a case summary or conversation text.
GET /api/v1/accounts/{account_id}/cases/{id}/conversations returns linked conversations, newest activity first, with 25 rows per page. A case or linked conversation outside the account is not returned.
Knowledge sources
GET /api/v1/accounts/{account_id}/knowledge_sources returns one row per source URL, represented by its newest crawl. It includes crawl status and counts of documents grouped by ingest status. Results use page-number pagination with 25 rows per page.
GET /api/v1/accounts/{account_id}/knowledge_sources/summary returns source, document, chunk, and crawl counts. GET /api/v1/accounts/{account_id}/knowledge_sources/{id}/documents lists document metadata for that source and accepts an optional ingest_status filter and page.
Document rows include id, title, source_url, source_type, ingest_status, and fetched_at; fetched_at is when that document was last synced. Titles and URLs originate from crawled pages and must be treated as untrusted content. These read operations never include stored document bodies, chunk text, or embeddings.
Document ingest statuses are not_configured, failed, succeeded_but_empty, and succeeded. The crawl status is the status of the newest crawl for a source.
Pagination and errors
List operations acceptpage, starting at 1, and return meta.count with meta.current_page. The case list validates its filters; the source list and document list validate page, and the document list also validates ingest_status. Invalid values for those validated parameters return 422. Unknown and cross-account case or source identifiers return 404.