Skip to content
vocapable.Docs

Who would ring for a hypothetical caller (CC1-R7)

POST
/v1/workspace/contact-center/simulate
curl --request POST \
--url https://api.vocapable.com/v1/workspace/contact-center/simulate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "phone_number_id": "example", "queue_id": "example", "contact_id": "example", "caller_e164": "example", "requirements": [ { "skill_id": "example", "min_proficiency": 1, "negate": false } ], "at": "2026-04-15T12:00:00Z" }'
Media typeapplication/json
CcSimulationRequest

A hypothetical caller: a real customer (contact_id) or a number, extra needs (language, product), and when they call (hours and do-not-disturb are evaluated at at; declared presence is today’s).

object
phone_number_id
Any of:
string
>= 1 characters <= 64 characters /^[A-Za-z0-9_-]+$/
queue_id
Any of:
string
>= 1 characters <= 64 characters /^[A-Za-z0-9_-]+$/
contact_id
Any of:
string
>= 1 characters <= 64 characters /^[A-Za-z0-9_-]+$/
caller_e164
Any of:
string
/^\+[1-9][0-9]{6,14}$/
requirements
Requirements
Array<object>
<= 10 items
CcRequirement

skill >= min_proficiency; negate: the agent must NOT hold it at that level.

object
skill_id
required
Skill Id
string
>= 1 characters <= 64 characters /^[A-Za-z0-9_-]+$/
min_proficiency
required
Min Proficiency
integer
>= 1 <= 5
negate
Negate
boolean
at
Any of:
string format: date-time

Successful Response

Media typeapplication/json
CcSimulationResult

The published flow’s answer and, when the draft routes differently, the draft’s, with a one-line difference per step.

object
published
required
Any of:
CcSimulation
object
source
required
Source
string
Allowed values: published draft queue
queue_id
required
Queue Id
string
queue_name
required
Queue Name
string
queue_reason
required
Queue Reason
string
base_priority
required
Base Priority
integer
vip_labels
required
Vip Labels
Array<string>
sticky_name
required
Any of:
string
sticky_reason
required
Any of:
string
strategy
required
Strategy
string
Allowed values: longest_idle most_skilled round_robin ring_all
steps
required
Steps
Array<object>
CcSimulatedStep
object
index
required
Index
integer
after_seconds
required
After Seconds
integer
until_seconds
required
Any of:
integer
requirements
required
Requirements
Array<object>
CcRoutingRequirement
object
skill_id
required
Skill Id
string
name
required
Name
string
min_proficiency
required
Min Proficiency
integer
negate
Negate
boolean
any_of
Any Of
Array<object>
CcRoutingRequirementGroup

An OR group as a trace or simulation shows it: one alternative must hold.

object
alternatives
required
Alternatives
Array<Array<object>>
pool_queues
required
Pool Queues
Array<string>
rings
required
Rings
Array<string>
candidates
required
Candidates
Array<object>
CcSimulatedCandidate
object
user_id
required
User Id
string
name
required
Name
string
outcome
required
Outcome
string
Allowed values: rings next skipped
reason
required
Any of:
string
detail
required
Any of:
string
rank
required
Any of:
integer
explanation
required
Explanation
string
code
Code
string
""
ai_offered
required
Ai Offered
boolean
summary
required
Summary
string
evaluated_at
required
Evaluated At
string format: date-time
elapsed_ms
required
Elapsed Ms
integer
draft
required
Any of:
CcSimulation
object
source
required
Source
string
Allowed values: published draft queue
queue_id
required
Queue Id
string
queue_name
required
Queue Name
string
queue_reason
required
Queue Reason
string
base_priority
required
Base Priority
integer
vip_labels
required
Vip Labels
Array<string>
sticky_name
required
Any of:
string
sticky_reason
required
Any of:
string
strategy
required
Strategy
string
Allowed values: longest_idle most_skilled round_robin ring_all
steps
required
Steps
Array<object>
CcSimulatedStep
object
index
required
Index
integer
after_seconds
required
After Seconds
integer
until_seconds
required
Any of:
integer
requirements
required
Requirements
Array<object>
CcRoutingRequirement
object
skill_id
required
Skill Id
string
name
required
Name
string
min_proficiency
required
Min Proficiency
integer
negate
Negate
boolean
any_of
Any Of
Array<object>
CcRoutingRequirementGroup

An OR group as a trace or simulation shows it: one alternative must hold.

object
alternatives
required
Alternatives
Array<Array<object>>
pool_queues
required
Pool Queues
Array<string>
rings
required
Rings
Array<string>
candidates
required
Candidates
Array<object>
CcSimulatedCandidate
object
user_id
required
User Id
string
name
required
Name
string
outcome
required
Outcome
string
Allowed values: rings next skipped
reason
required
Any of:
string
detail
required
Any of:
string
rank
required
Any of:
integer
explanation
required
Explanation
string
code
Code
string
""
ai_offered
required
Ai Offered
boolean
summary
required
Summary
string
evaluated_at
required
Evaluated At
string format: date-time
elapsed_ms
required
Elapsed Ms
integer
differences
required
Differences
Array<string>
notes
required
Notes
Array<string>
Example
{
"published": {
"source": "published",
"strategy": "longest_idle",
"steps": [
{
"requirements": [
{
"negate": false
}
],
"any_of": [
{
"alternatives": [
[
{
"negate": false
}
]
]
}
],
"candidates": [
{
"outcome": "rings",
"code": ""
}
]
}
]
},
"draft": {
"source": "published",
"strategy": "longest_idle",
"steps": [
{
"requirements": [
{
"negate": false
}
],
"any_of": [
{
"alternatives": [
[
{
"negate": false
}
]
]
}
],
"candidates": [
{
"outcome": "rings",
"code": ""
}
]
}
]
}
}

Validation Error

Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationError
object
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{
"detail": [
{
"loc": [
"example"
],
"msg": "example",
"type": "example",
"input": "example",
"ctx": {}
}
]
}