Outcome
Create an open local failure record, optionally linked to an existing scoped call.
Before you start
- Verify the exact authenticated identity, environment and approved organization context before preparing the request.
- The published application permission is workspace:write. Discover a granted canonical Voice workspace and bind its exact id. A supplied id does not grant access.
- Authorize all documented effects before CLI --confirm or MCP confirm:true. Local events, canonical archival and organization erasure have distinct scope.
Discover the target
topolo whoami --json
topolo actions get app_topolo_voice.providers.fail --detail --json
topolo resources topolo-voice --json
topolo workspaces list topolo-voice --json
- Select the actual granted resource id as VOICE_WORKSPACE_ID; synthetic fixture ids authorize no live operation.
- Use a real local call id retained from calls.incoming or recent granted overview. The recent call list is capped at 25; only an independently authorized organization export contains all local provider_call_id values.
Request
POST /api/provider-failures
Save the exact action input as payload.json. Set VOICE_WORKSPACE_ID from granted canonical resource discovery. Validate it and inspect the exact path, query and body before executing.
Inspect and test this action in the signed action console.
Input fields
| Field | Required | Type | Meaning and constraints |
|---|---|---|---|
provider | Required | string | Required nonblank trimmed provider label. {"minLength":1} |
operation | Required | string | Required nonblank trimmed failed-operation label; this action does not run it. {"minLength":1} |
errorCode | Required | string | Required nonblank trimmed provider error string recorded as supplied. {"minLength":1} |
callId | Optional | string | Optional existing call id in the same organization/workspace. Omitted callId is stored as null. {"minLength":1} |
The complete input and response schemas are available in the action console and through CLI/MCP action discovery.
Effects
- Stores provider/operation/errorCode and an optional call link; a supplied callId must exist in the granted workspace.
- Does not change the linked call status, retry a provider, configure credentials or resolve the failure. Repeated requests create additional failure UUIDs.
- Attempts best-effort provider-failure notification after insertion; no durable app outbox or delivery guarantee exists.
Interpret the response
Use $.data.id for the returned provider_failure identifier.
Examples retain complete raw Worker responses. CLI/MCP adds a transport envelope; use CLI --detail for the full result. Delegated Auth projections can vary, and the widget uses the canonical SDK contract.
Retain data.id and confirm status open. Inspect recent workspace providerFailures; an optional call link is independent of that call status.
Worked examples
Actual worker and isolated migrated D1; synthetic Auth identity, nondefault workspace grants and archive transport. Notify and Nexus are disabled. No live telephony, remote audio or transcript hosting/deletion is tested. Refused examples explain boundaries; do not execute them as successful workflows.
minimal · Successful request · HTTP 201
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --confirm --detail --json
MCP tool and arguments:
{
"tool": "topolo_call_action",
"arguments": {
"actionId": "app_topolo_voice.providers.fail",
"input": {
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure"
},
"resourceType": "workspace",
"resourceId": "<id returned by granted resource discovery>",
"confirm": true
}
}
Captured response · HTTP 201:
{
"data": {
"id": "provider_failure_827b7d6a-388f-40b2-ab0c-a2edb1a4b52f",
"status": "open",
"occurredAt": "2026-10-04T07:54:39.298Z"
}
}
HTTP 201. Retain data.id and confirm status open. Inspect recent workspace providerFailures; an optional call link is independent of that call status.
minimal · Refused request · HTTP 404
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_missing"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
Captured response · HTTP 404:
{
"error": "call_not_found"
}
HTTP 404. The actual handler refused this request. Inspect the exact cause and current state before deciding whether to retry.
workflow · Successful request · HTTP 201
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_772a7b3c-7ee3-4295-b44a-8c4a24e47ba3"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --confirm --detail --json
MCP tool and arguments:
{
"tool": "topolo_call_action",
"arguments": {
"actionId": "app_topolo_voice.providers.fail",
"input": {
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_772a7b3c-7ee3-4295-b44a-8c4a24e47ba3"
},
"resourceType": "workspace",
"resourceId": "<id returned by granted resource discovery>",
"confirm": true
}
}
Captured response · HTTP 201:
{
"data": {
"id": "provider_failure_beb51cc6-5a3f-4a4a-85d2-cae9c1329834",
"status": "open",
"occurredAt": "2026-10-04T07:54:40.237Z"
}
}
HTTP 201. Retain data.id and confirm status open. Inspect recent workspace providerFailures; an optional call link is independent of that call status.
workflow · Refused request · HTTP 404
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_missing"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
Captured response · HTTP 404:
{
"error": "call_not_found"
}
HTTP 404. The actual handler refused this request. Inspect the exact cause and current state before deciding whether to retry.
privacy · Successful request · HTTP 201
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_34f3ad97-75be-4c5d-bb06-ae16acb413e9"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --confirm --detail --json
MCP tool and arguments:
{
"tool": "topolo_call_action",
"arguments": {
"actionId": "app_topolo_voice.providers.fail",
"input": {
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_34f3ad97-75be-4c5d-bb06-ae16acb413e9"
},
"resourceType": "workspace",
"resourceId": "<id returned by granted resource discovery>",
"confirm": true
}
}
Captured response · HTTP 201:
{
"data": {
"id": "provider_failure_01db6ecd-8a7b-4753-a145-6a43ca5f741f",
"status": "open",
"occurredAt": "2026-10-04T07:54:41.856Z"
}
}
HTTP 201. Retain data.id and confirm status open. Inspect recent workspace providerFailures; an optional call link is independent of that call status.
privacy · Refused request · HTTP 404
Actual local worker response and migrated D1. Auth identity/grants/archive are simulated. Notify and metering are disabled; no telephony or remote audio/transcript provider is contacted. Fixture identifiers authorize no live action.
Input · payload.json:
{
"provider": "fixture-provider",
"operation": "connect",
"errorCode": "fixture_failure",
"callId": "call_missing"
}
CLI:
topolo actions validate app_topolo_voice.providers.fail --data @payload.json --json
topolo actions plan app_topolo_voice.providers.fail --resource-type workspace --resource-id "$VOICE_WORKSPACE_ID" --data @payload.json --json
Captured response · HTTP 404:
{
"error": "call_not_found"
}
HTTP 404. The actual handler refused this request. Inspect the exact cause and current state before deciding whether to retry.
Verify the result
- Retain data.id and confirm status open. Inspect recent workspace providerFailures; an optional call link is independent of that call status.
Errors and recovery
call_not_found(HTTP 404): The id is absent from this organization/workspace. Discover or retain the actual local call id in the approved context; supplied ids grant no access.organization_required(HTTP 403): The authenticated request has no organization. Stop and establish the approved owning organization; supplied workspace ids do not create membership.
Auth, resource resolution and published input validation can refuse a request before its handler. Retain the actual error, request id and approved context. A plain-text HTTP 500 is surfaced by CLI/MCP as http_error; that transport code is not a structured Voice handler error.
Recovery boundary
No published resolve/update/delete failure action exists. An ambiguous result requires inspecting recent failures or authorized organization export before repetition; the recent array is limited to 25.
Related actions
- Get Voice workspace overview: Read all-workspace counts and the most recent 25 calls and provider failures in one granted Voice workspace.
Evidence
Actual worker and isolated migrated D1; synthetic Auth identity, nondefault workspace grants and archive transport. Notify and Nexus are disabled. No live telephony, remote audio or transcript hosting/deletion is tested.