Open a support case
const url = 'https://api.vocapable.com/v1/workspace/cases';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"contact_id":"example","source_type":"call","source_id":"example","title":"example","summary":"example","urgency":"low","owner_user_id":"example","team":"example","response_due_at":"2026-04-15T12:00:00Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/workspace/cases \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "contact_id": "example", "source_type": "call", "source_id": "example", "title": "example", "summary": "example", "urgency": "low", "owner_user_id": "example", "team": "example", "response_due_at": "2026-04-15T12:00:00Z" }'Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Responses
Section titled “Responses”Successful Response
object
A teammate named on a record: the id the server holds and the name to show.
object
A teammate named on a record: the id the server holds and the name to show.
object
A teammate named on a record: the id the server holds and the name to show.
object
object
A teammate named on a record: the id the server holds and the name to show.
object
A reply to a customer: drafted, reviewed as an exact version, then sent once.
object
A teammate named on a record: the id the server holds and the name to show.
object
object
A teammate named on a record: the id the server holds and the name to show.
object
A teammate named on a record: the id the server holds and the name to show.
object
The call a case was opened from (PRD E10-R6), so its recording and transcript are one tap from the case. Present on a case’s detail only.
kind=workspace: a call your team made or answered - call_id is the conversation’s
first row, which the recording (/calls/{id}/recording) and transcript
(/calls/{id}/transcript) routes take; may_open says whether THIS viewer may open
them (a handler of the call, or recording_access), and only then are recording and
transcript filled. kind=ai_receptionist: the AI receptionist’s call (open it from
the activity record).
object
A teammate named on a record: the id the server holds and the name to show.
object
Example
{ "source_type": "call", "urgency": "low", "status": "draft", "comments": [ { "visibility": "internal", "delivery_state": "pending", "reply": { "channel": "sms", "state": "draft", "approval": { "status": "awaiting_review" }, "origin": "reply", "send_basis": "review", "purpose": "informational", "media": [ { "status": "pending" } ] } } ], "source_call": { "kind": "workspace", "recording": "available", "transcript": "available" }}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}