Changelog
All notable changes to the Voicy API will be documented here.September 2026
Webhooks on the Agent API
Agent webhooks can now be managed through the API, so an agent created programmatically no longer needs a trip to the dashboard:POST /v1/agent-createandPATCH /v1/agent-modify/{agent_id}accept awebhooksarray (name, URL, optional signing secret and custom headers). On update it replaces the agent’s list; omit it to leave webhooks unchanged.- Every Agent response now includes
webhooks. Secrets and header values are write-only and never returned — onlyhas_secret/has_headers.
webhooks behave exactly as before.
As with every other field, only prompt-based agents can be modified via the API.
See Webhooks.
June 2026
Agent API (prompt-based agents)
A minimal Agent API is now available:GET /v1/agent-list— list the agents in your accountGET /v1/agent-get/{agent_id}— get an agent and its variable contractPOST /v1/agent-create— create a prompt-based agent (deployed immediately)PATCH /v1/agent-modify/{agent_id}— update a prompt-based agent
agent_id is what
you pass as override_agent_id on Dial.
call-extract removed from the public API
Retrying summary/variable extraction is now a dashboard-only operation. The
POST /v1/call-extract/{call_id} endpoint has been removed and returns 404.
Why: A retry re-runs the full post-call orchestration — it re-fires
notification emails, webhooks, and campaign advancement as side effects — which
is not safe as a self-serve API operation.
Action required: if you were calling this endpoint with an API key, trigger
re-extraction from the dashboard’s call view instead, or contact support.
count-calls removed from the documentation
The POST /v1/count-calls endpoint was documented but never deployed (it
returned 404). It has been removed from the reference. Use the total_count
field already returned by POST /v1/call-list — it reflects the full match
count for your filter_criteria, independent of limit/pagination.
Transcript shape clarified
The publictranscript[] returned by GET /v1/call-get/{call_id} is documented
as exactly { role, content, timestamp_ms }. The role enum is agent,
caller, or system. Internal per-turn fields (latency breakdowns, caller
gender) and flow-agent function_invocation/function_result payloads are not
part of the public API and are not returned to API-key callers. This is a
documentation correction — API-key responses already behaved this way; no
response payloads changed.
May 2026
call-delete removed from the public API
Call deletion has been moved to a dashboard-only operation. The
DELETE /v1/call-delete/{call_id} and POST /v1/call-delete endpoints
no longer exist on api.voicy.co and now return 404.
Why: Deleting a call is now treated as a billing write-off — deleted
calls are excluded from the account’s consumed-minutes balance — so the
action has been restricted to internal/global-admin use via the
dashboard.
Action required: if you were calling these endpoints with an API
key, contact support to delete calls on your behalf.
April 2026
Function-call visibility on transcripts
Thetranscript array returned by GET /v1/call-get/{id} now exposes the HTTP
function invocations that flow-agent function nodes make during a call.
Additive changes — no field removals or behavior changes on existing fields:
- New role
systemontranscript[].role. Previouslyrolewas alwaysagentorcaller; the enum now also includessystemfor flow-agent automation events. The vast majority of consumers (which iterate byrole == 'agent' || role == 'caller') will see no change beyond a few extra entries they silently ignore. - New optional field
transcript[].function_invocationonsystementries — carries the request method, URL, headers (sensitive values redacted), and request body captured just before the HTTP call dispatches. - New optional field
transcript[].function_resultonsystementries — carries the status code, response body, response headers, extracted variables, duration, and any classified error (timeout,non_2xx,ssrf_blocked,bad_response_json,type_validation_failed,invalid_url,network).
system turns (an invocation
and a result), correlated by a shared invocation_id. URL basic-auth
credentials, known-sensitive query parameters (api_key, token,
access_token, etc.), and sensitive request/response headers
(Authorization, Cookie, Set-Cookie, and anything matching
token|secret|password|api_key|bearer) are redacted at capture time, so the
persisted transcript is safe to share.
Action required: if your code uses an exhaustive switch on the role
field (case 'agent': ... case 'caller': ... default: throw), add handling
for 'system' or ignore it.
January 2026
v1.0 Release
Initial public release of the Voicy API.
New Features
- Phone Call API: Create, retrieve, list, update, and delete phone calls
- API Key Authentication: Secure API access with account-scoped keys
- Dual Authentication: Support for both API keys and JWT tokens
- Dynamic Variables: Inject custom data into agent prompts
- Call Metadata: Attach custom metadata to calls for CRM integration
- Transcript Access: Full transcript available via API (text and structured)
- Recording URLs: Signed URLs for call recordings
Endpoints
Coming Soon
Planned Features
- Webhooks: Real-time notifications for call events
- Web Call API: Browser-based voice calls via WebRTC
- Agent API: Manage agents programmatically
- Phone Number API: Manage phone number assignments
- Analytics API: Call statistics and usage metrics
Deprecation Policy
When we deprecate API features:- Announcements made at least 6 months in advance
- Deprecated features marked in documentation
- Migration guides provided
- Old versions remain functional during deprecation period
Subscribe to our status page for real-time updates on API availability.