Record a human's verdict on a reviewed call
const url = 'https://api.vocapable.com/v1/calls/example/disposition';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"code":"completed_goal","sub_code":"example","notes":"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/calls/example/disposition \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "code": "completed_goal", "sub_code": "example", "notes": "example" }'Append a human_review disposition and make it the call’s current one.
An append, never an edit. The agent’s original verdict stays exactly as written - the
dispositions table carries no updated_at for that reason - and this row becomes
what GET /v1/calls/{id} reports. GET /calls/{id}/dispositions shows both.
Reporting only. A disposition authorizes nothing and suppresses nothing: labelling a
call opt_out here does not put the number on the internal DNC list, and labelling it
completed_goal does not make the contact dialable. Suppression is
POST /v1/dnc-entries, which writes the entry, withdraws the consent standing behind
the number, and emits optout.recorded.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”A human’s verdict on a reviewed call (POST /v1/calls/{id}/disposition).
code is the pinned platform vocabulary (CANON fact 28) - the same list the agent
writes, because “what happened on this dial” is one question with one answer set.
This changes the tenant’s own reporting and nothing else. A disposition is not a
compliance control: labelling a call opt_out here records an opinion about the call,
it does not suppress the number. Suppression is POST /v1/dnc-entries, which writes
the DNC entry, withdraws the consent behind the number and emits optout.recorded -
none of which this request can do.
Responses
Section titled “Responses”Successful Response
One row of a call’s disposition history.
dispositions is append-only: a human review adds a row and repoints the call at it
rather than editing the agent’s verdict, so a call whose label was corrected reads as
two rows and set_by says which was which.
object
Terminal outcome of a contact attempt (docs/06-campaign-engine.md).
object
Example
{ "code": "completed_goal", "set_by": "agent_llm"}Validation Error
object
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}