Migrating from JSON-RPC API

What’s new in the REST API v2?

The new REST API includes major improvements:

  • RESTful design with predictable, resource-oriented URLs
  • Standard HTTP verbs (GET, POST, DELETE, etc.)
  • Clean JSON request/response formats
  • Consistent object schemas aligned with Callr Actions
  • Authentication with API keys via standard headers
  • Full OpenAPI 3.1 support — autocompletion in Postman, Swagger, Insomnia, etc.
  • Simplified number ordering
    No more cryptic area code IDs — just use simple query parameters like:
    • prefix (e.g., +33)
    • area (e.g., paris or lyon)
🤚

Attention

Make sure you read Introduction and REST API v2 is Here!


🪨 Rosetta Stone

JSON-RPCREST API v2
actions.startPOST /actions/{sid}/runs
apps.assign_did
  • PUT /actions/{sid}/numbers/{number}
  • PUT /numbers/{number}/scenario/{sid}
  • PATCH /numbers/{number}
apps.createPOST /actions
apps.deleteDELETE /actions/{sid}
apps.editPATCH /actions/{sid}
apps.remove_did
  • DELETE /actions/{sid}/numbers/{number}
  • DELETE /numbers/{number}/scenario/{sid}
  • PATCH /numbers/{number}
apps.searchGET /actions
billing.get_prepaid_creditGET /billing/credit
cdr.export_asyncPOST /calls/export
did/areacode.countriesGET /numbers/store/countries
did/areacode.get_listGET /numbers/store/prefixes
did/areacode.typesGET /numbers/store/types
did.searchGET /numbers
did/store.buy_orderPOST /numbers/store/{token}
did/store.cancel_orderDELETE /numbers/store/{token}
did/store.cancel_subscriptionDELETE /numbers/{number}
did/store.reservePOST /numbers/store
jobs.cancelDELETE /tasks/{taskid}
jobs.getPOST /tasks/{taskid}
list.destinationsGET /billing/destinations
media/library.createPOST /audio-files
media/library.deleteDELETE /audio-files/{sid}
media/library.getGET /audio-files/{sid}
media/library.get_phone_idPUT /audio-files/{sid}/phone-id
media/library.searchGET /audio-files
media/library.set_content_from_filePUT /audio-files/{sid}/file
media/library.set_namePATCH /audio-files/{sid}
media/recording.delete_async
  • DELETE /recordings/{sid}
  • DELETE /recordings
media/recording.mark_as_read_asyncPATCH /recordings/{sid}
media/recording.mark_as_unread_asyncPATCH /recordings/{sid}
media/recording.searchGET /recordings
sms.searchGET /sms
sms.getGET /sms/{sid}
sms.sendPOST /sms
webhooks.disablePATCH /webhooks/{sid}
webhooks.enablePATCH /webhooks/{sid}
webhooks.get_listGET /webhooks/search
webhooks.subscribePOST /webhooks
webhooks.unsubscribeDELETE /webhooks/{sid}

📌 Migration Notes

  • hashis nowsid
    Unique IDs previously named hash (e.g. ABCDEF12) are now referred to as sid in the REST API. They use the same value, but in lowercase (abcdef12).

  • DIDis nowPhone number

  • Phone numbers no longer have a unique ID distinct from the number itself
    For example, to manage +33199001020, simply call PATCH /numbers/+33199001020. No more hash to remember!

  • Constant values are now lowercase
    Enum values (like sms.status) are now lowercase:
    SENTsent, FAILEDfailed, etc.

  • Only Callr Actions are supported
    REST API v2 only supports scenarios built with Callr Actions (formerly called apps).
    If you were using legacy apps like CALLTRACKING10, CLICKTOCALL10, or REALTIME10, you must migrate to Callr Actions.

  • Date format changed to RFC 3339
    JSON-RPC used: YYYY-MM-DD HH:MM:SS.sss
    REST API uses: YYYY-MM-DDTHH:MM:SS.sssZ (ISO 8601 / RFC 3339, section 5.6)

  • Jobs are now called Tasks
    JSON-RPC "jobs" are now referred to as tasks in REST v2. See the /tasks endpoint for details.

  • Media library items are now called Audio Files
    Tags are no longer supported.

  • No official SDKs (yet)
    We currently do not provide SDKs for the REST API.
    You can:

    • Use our OpenAPI spec to generate your own SDKs
    • Or call the REST endpoints directly with any HTTP client

❓ FAQ

Is there a 1:1 feature mapping between theJSON-RPC and REST APIs?

No, and that’s intentional.
The REST API was designed to be simpler and more consistent — not a direct mirror of the JSON-RPC structure.

  • We’ve removed some legacy fields (like hash identifiers for phone numbers)
  • Methods like number ordering have been greatly streamlined
  • Dates are now consistently formatted using RFC 3339 (YYYY-MM-DDTHH:MM:SSZ)
  • Several feature names and parameters have been renamed for clarity

The result is a more modern, predictable, and human-friendly API.

Are "real-time" (REALTIME10) apps deprecated?

Yes. Real-time apps are deprecated and replaced by Callr Actions.