Skip to main content

Changelog

2026-09-30

  • PUT /v1/agents/{id}/announcer-message accepts an optional source (message or upload) to choose which configuration an announcer agent uses on calls. message is optional when source is upload.
  • Announcer messages and uploaded audio are now stored independently: POST /v1/agents/{id}/announcer-audio/upload, POST /v1/agents/{id}/announcer-audio/generate, and PUT /v1/agents/{id}/announcer-message no longer overwrite each other’s saved content.
  • Announcer agents now return announcerSource, announcerUploadUrl, announcerUploadDuration, announcerUploadFileSize, and announcerUploadFormat.

2026-09-17 — Breaking change: response envelope

Every successful response now has one consistent shape:
A handful of paginated list endpoints (e.g. GET /v1/workflows, GET /v1/billing/credit-history) omit message — data there is the pagination object itself. Check each endpoint’s own documented response for the exact contents of data.Update your integration to read response.success, response.data, and response.meta at the top level. Previously, fields like an endpoint’s own status/message, or a nested data/details key, sat inside the body in inconsistent, per-endpoint shapes — that’s now normalized everywhere.Error responses are unchanged: { "success": false, "error": {...}, "meta": {...} }. See Errors.
  • GET /v1/billing/transactions no longer returns payment_gateway.
  • GET /v1/billing/plan now returns only id, type, index, better_rates, and best_value_badge per plan.
  • Removed the userId field from: GET /v1/widgets, GET /v1/widgets/{id}, GET /v1/billing/credit-history, GET /v1/webhooks/history/{id}, GET /v1/phone/contacts/{id}, POST /v1/phone/contacts, GET /v1/phone/get-schedules/{id}, GET /v1/calls, GET /v1/calls/{id}, POST /v1/calls/phone/initiate, and GET /v1/workflows/{id}.
  • The Workflow feature is on hold: POST /v1/workflows, PATCH /v1/workflows/{id}, DELETE /v1/workflows/{id}, POST /v1/workflows/{id}/run, and POST /v1/workflows/schedule currently return 403 Forbidden and perform no action. Existing workflows remain readable via GET /v1/workflows, GET /v1/workflows/{id}, and the jobs/summary/summary/report/summary/timeline endpoints; POST /v1/workflows/{id}/cancel also remains available. CRM, email, SMS, calendar, webhook, and reporting integrations are unaffected.
  • Added GET /v1/phone/get-schedules/{id} to list call schedules (campaigns) for a purchased number, with search by campaign name and filters for status, date range, and timezone
  • Added POST /v1/phone/duplicate-call-schedule/{id} to duplicate an existing call schedule (campaign) with the same contacts, phone number, message, and timezone, scheduled for a new date
  • Added GET /v1/phone/bulk-call-summary/{id} to download a PDF/DOCX bulk call summary report for a completed call schedule

2026-09-08

  • Added announcer agent management to the Agents API: POST /v1/agents/announcer, GET /v1/agents/announcer-templates, POST /v1/agents/{id}/announcer-template, PUT /v1/agents/{id}/announcer-message, POST /v1/agents/{id}/announcer-audio/generate, POST /v1/agents/{id}/announcer-audio/upload
  • Documented that announcer agents can’t be attached to widgets (400 on POST /v1/widgets / PATCH /v1/widgets/{id})
  • Documented that announcer agents aren’t supported on Vonage-provisioned numbers in workflows (400 on the agent module of POST /v1/workflows / PATCH /v1/workflows/{id})

2026-06-02

  • Added Mintlify documentation structure for Developer API
  • Added generated OpenAPI export flow for v1 developer endpoints
  • Published initial guides: quickstart, authentication, rate limits, errors, and webhooks

For breaking changes, publish migration notes here before release.