Add an internal note, or save a customer reply for review
const url = 'https://api.vocapable.com/v1/workspace/cases/example/comments';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"visibility":"internal","body":"example"}'};
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/example/comments \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "visibility": "internal", "body": "example" }'An internal comment stays inside the company. A customer reply is NOT sent here: it becomes a reply awaiting review, sent only after approval through the inbox path.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”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": {} } ]}