Breaking Change - call.cdr and recording Format Update Coming September 1st, 2025
We're updating the structure of the call.cdr
and recording
object in Callr Actions to align with the CDR
and Recording
format from our REST API v2.
This is a breaking change
The new format will become the default on September 1st, 2025.
What's changing?
- The structure of the
CDR
object insidecall
and$dial
is changing to align with the format used in REST API v2.
This affects any scenario that uses:
call.cdr
(in inbound flows)$dial.cdr
(afterdial@v1
)
- The structure of the
recording
variable is changing to align with theRecording
object used in REST API v2.
⚠️ Examples of Impacted Code
You may be affected if you're using fetch@v2
like this:
- action: fetch@v2
params:
url: https://...
body: |
{
"call": ${{ JSON.stringify(call) }} # <---- call.cdr has changed
...
}
Or referencing CDR properties directly:
- if: call.cdr.duration_answered # <---- becomes durationAnswered (among others)
then:
- ...
Or using dial@v1
from an outbound call:
- action: dial@v1
params:
targets: [...]
result: $dial
- action: fetch@v2
params:
body: |
{
"dial": ${{ JSON.stringify($dial) }} # <---- $dial.cdr changed
...
}
Or using the recording
variable:
- action: fetch@v2
params:
body: |
{
"recording": ${{ JSON.stringify(recording) }} # <---- recording changed
}
Documentation
- Full reference for the new
CDR
format: Call Detail Records (CDR).- OpenAPI
Recording
object definition: Recording.
Why this matters
Aligning with our REST API means:
- More consistent data structures across products
- Easier debugging and integration with external platforms
- Simplified long-term maintenance
But this also means any logic depending on the current structure will need to be updated.
What you need to do
🧪 1. Test with the new format (opt-in)
To preview the new structure today, add this to your scenario:
compat:
version: "2025-09-01"
🛡️ 2. Lock to the current format (temporary)
If you need time to update your logic or integrations, you can lock your scenario to the current format using:
compat:
version: "2024-04-01"
This ensures your scenario won’t break when the new format becomes the default.
🚀 3. Migrate when ready
Once you’ve updated your code to work with the new format, update all your scenarios to:
compat:
version: "2025-09-01"
This ensures you’re aligned with the latest standard and won’t be affected by future defaults.
Want to compare formats side-by-side?
Check the full changelog with before/after examples: 👉 2025-09-01 updates.