Skip to main content
The legacy API keeps working, so you can move to API v1 at your own pace. Both APIs read and change the same agents and calls, so you can move one endpoint at a time.

What changes

API v1 also answers every failure with the same error body, and sends every timestamp in one UTC format: 2026-10-07T09:12:03.000000Z.

Endpoint by endpoint

API v1 also covers things the legacy API doesn’t, such as text knowledge sources and your organization’s usage.

Not in API v1 yet

Keep using the legacy API for these:
  • Change an agent’s greeting (greetingMessage in POST /update-agent).
  • Report an issue with a call (POST /report-call-error).
  • Import a phone number (POST /import-number).
  • Generate an agent from a prompt (POST /agent-generations, GET /agent-generations/{generationId}).
Moving an agent to another organization (orgId in POST /update-agent) won’t come to API v1, because an API key acts in one organization. Move agents in the Phonely web app.

Calls

List filters

By default, the API v1 list shows calls whose status is completed, ended, in_progress or in_warm_transfer.

Call fields

Post-call outcome

custom_metadata replaces the whole object stored before. See Updates and concurrency.

Find a call by phone number

The legacy PATCH could take a phone number instead of a call ID. In API v1, find the call first, then update it by ID:
  1. List the agent’s calls for that number. Calls are newest first, so limit=1 returns the latest call:
    Encode the + as %2B, or it arrives as a space.
  2. Update the call with its id:
To update the oldest call for a number instead, page to the end of the list: its last item is the oldest call.
Last modified on November 11, 2026