Access & visibility
Allow voice.StartVoiceTest on your API key.
Workspace access by default. Private member data requires approved member delegation through Brigg-Act-As; the key supplies permissions while private ownership and project boundaries remain enforced.
Request fields
Send a JSON object with the following fields. Required fields must be included; omit optional fields you do not need.
inbox_idstringOptionalInbox record ID from List inboxes. Supply this when testing an inbox; use assistant: true instead for the acting member's own assistant.
At least 1 character.
caller_idstring or nullRequiredPerson record ID to simulate a known caller, or null to test an unknown caller. Find a known caller with List people.
selectionsarray of objectOptionalCapabilities to test with, overriding the bound set.
Item fields
offering_keystringRequiredStable key identifying a published voice capability.
At least 1 character.
revisionstringRequiredRevision identifying the version of this capability or configuration.
At least 1 character.
settingsobjectRequiredConfiguration fields defined by this voice capability.
Nested fields
booking_link_idstringOptionalBooking link identifier.
Run a conversation test
Start a test for the intended inbox and retain its test_id. Text clients can use Run voice test turn; an audio connection URL is only needed for an audio client. Keep temporary connection URLs secret.
Pass the simulated caller's utterance and previous conversation history in order. Keep a stable turn_id for a retried turn. Review the returned reply and capability trace; a simulated response is not evidence that a real customer call succeeded. Review voice test accepts the conversation transcript for feedback. End the session when finished; an expired session needs a new start.
Response
Returns 200 OK with a JSON body.
test_idstringRequiredNames this test to voice.RunVoiceTestTurn, voice.ReviewVoiceTest and voice.EndVoiceTest.
expiresnumberRequiredEpoch ms after which the test is no longer accepted.
socket_urlstring or nullRequiredThe audio socket URL, or null on a stage without an audio service.
Errors & retries
Set BRIGG_REQUEST_ID once for each logical action. The samples send it as Idempotency-Key. Reuse the same value and body on retries, including after a timeout; a missing response does not prove the action failed.
For rate limits, follow the server’s retry guidance and back off. See HTTP errors and safe retries and limits.
| HTTP status | Code | What to do |
|---|---|---|
| 400 | invalid_json |
Send a JSON object with Content-Type: application/json. |
| 400 | invalid_input |
Check the request fields and types. Supply a stable Idempotency-Key containing 1–200 characters. |
| 401 | invalid_key |
The workspace API key is missing, invalid or revoked. |
| 403 | forbidden |
Check the key’s operation and resource grants. If Brigg-Act-As is supplied, the key must be authorized to delegate to that member. |
| 404 | not_found |
The requested operation or resource is not available to this credential. |
| 429 | rate_limited |
Wait for Retry-After before retrying. Reuse the original Idempotency-Key. |
Next steps
JSON schemas
Use the complete schemas for validation or client generation.
Full request JSON schema
{
"type": "object",
"properties": {
"inbox_id": {
"type": "string",
"minLength": 1,
"description": "Inbox record ID from [List inboxes](/reference/support/ListInboxes). Supply this when testing an inbox; use assistant: true instead for the acting member's own assistant."
},
"caller_id": {
"anyOf": [
{
"type": "string",
"minLength": 1,
"description": "Person record ID to simulate a known caller, or null to test an unknown caller. Find a known caller with [List people](/reference/customers/ListPeople)."
},
{
"type": "null",
"description": "Person record ID to simulate a known caller, or null to test an unknown caller. Find a known caller with [List people](/reference/customers/ListPeople)."
}
],
"description": "Person record ID to simulate a known caller, or null to test an unknown caller. Find a known caller with [List people](/reference/customers/ListPeople)."
},
"selections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"offering_key": {
"type": "string",
"minLength": 1,
"description": "Stable key identifying a published voice capability."
},
"revision": {
"type": "string",
"minLength": 1,
"description": "Revision identifying the version of this capability or configuration."
},
"settings": {
"type": "object",
"properties": {
"booking_link_id": {
"type": "string",
"description": "Booking link identifier."
}
},
"additionalProperties": false,
"description": "Configuration fields defined by this voice capability."
}
},
"required": [
"offering_key",
"revision",
"settings"
],
"additionalProperties": false
},
"description": "Capabilities to test with, overriding the bound set."
}
},
"required": [
"caller_id"
],
"additionalProperties": false,
"examples": [
{
"inbox_id": "e_inbox_support",
"caller_id": null
}
]
}Full response JSON schema
{
"type": "object",
"properties": {
"test_id": {
"type": "string",
"description": "Names this test to voice.RunVoiceTestTurn, voice.ReviewVoiceTest and voice.EndVoiceTest."
},
"expires": {
"type": "number",
"description": "Epoch ms after which the test is no longer accepted."
},
"socket_url": {
"type": [
"string",
"null"
],
"description": "The audio socket URL, or null on a stage without an audio service."
}
},
"required": [
"test_id",
"expires",
"socket_url"
],
"additionalProperties": false,
"examples": [
{
"test_id": "voice_test_kickoff",
"expires": 1794301800000,
"socket_url": null
}
]
}