Skip to main content

Changelog

All notable changes to the Voicy API will be documented here.

June 2026

Agent API (prompt-based agents)

A minimal Agent API is now available:
  • GET /v1/agent-list — list the agents in your account
  • GET /v1/agent-get/{agent_id} — get an agent and its variable contract
  • POST /v1/agent-create — create a prompt-based agent (deployed immediately)
  • PATCH /v1/agent-modify/{agent_id} — update a prompt-based agent
The API manages prompt-based agents. Flow agents (built in the dashboard) are listable and gettable but cannot be created or modified via the API, and their internal configuration is never returned. An agent’s 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 public transcript[] 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

The transcript 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 system on transcript[].role. Previously role was always agent or caller; the enum now also includes system for flow-agent automation events. The vast majority of consumers (which iterate by role == 'agent' || role == 'caller') will see no change beyond a few extra entries they silently ignore.
  • New optional field transcript[].function_invocation on system entries — carries the request method, URL, headers (sensitive values redacted), and request body captured just before the HTTP call dispatches.
  • New optional field transcript[].function_result on system entries — 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).
Each function-node call produces exactly two 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

EndpointDescription
POST /v1/call-dialInitiate outbound calls
GET /v1/call-get/{id}Retrieve call details
POST /v1/call-listList and filter calls
DELETE /v1/call-delete/{id}Delete calls

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:
  1. Announcements made at least 6 months in advance
  2. Deprecated features marked in documentation
  3. Migration guides provided
  4. Old versions remain functional during deprecation period

Subscribe to our status page for real-time updates on API availability.