Get results after a call
You can read a call by ID or receive a webhook when it ends. A webhook is an HTTP request that Resia sends to your server. Both paths use the same call result shape.
Find a call
Complete Get access first.
An outbound call request returns the call id immediately.
For incoming calls, use the call list to find the new record:
read -r -p 'Call Agent id: ' CALL_AGENT_ID
curl --fail-with-body --silent --show-error --get \
"$RESIA_API_BASE/v1/calls" \
--header "Authorization: Bearer $RESIA_API_KEY" \
--data-urlencode "call_agent_id=$CALL_AGENT_ID" \
--data-urlencode 'limit=10' \
--output recent-calls.json
jq '.items[] | {id, status, created_at, from_phone_number, to_phone_number}' recent-calls.json
Choose the call that matches the time and phone numbers of your test.
The list puts the newest records first. Follow next_cursor if the call is on a later page.
read -r -p 'Call id: ' CALL_ID
curl --fail-with-body --silent --show-error \
"$RESIA_API_BASE/v1/calls/$CALL_ID" \
--header "Authorization: Bearer $RESIA_API_KEY" \
--output call-result.json
jq '{id, status, transcript, analysis, failure}' call-result.json
Expected result: HTTP 200 with the call record.
While the call is active, the transcript and analysis can be incomplete or absent.
Read the result again after the call ends.
Check failure when the status is error. Check the transcript and analysis to confirm the customer's actual result.
The status completed alone does not prove that a human answered or that the task succeeded.
API reference: List calls and Read a call.
Receive a result notification
- Prepare an HTTPS endpoint on your server to receive JSON requests.
- Follow Change what an agent says to prepare a complete agent update.
- Set
call_ended_webhook_urlto your endpoint inagent-update.json. - Submit that complete update.
- Place or receive a new test call with the agent.
Resia sends a call.ended event when a call reaches completed, error, or canceled.
The following example shows the event with the required call fields. Actual events can include additional call details.
{
"type": "call.ended",
"call": {
"id": "01K1SA3F7M8QW2V5C9H4YTB0KD",
"call_agent_version_id": "01K1S9V9Q0RS7X4T2N6BJ8ZDE5",
"call_agent_id": "01K1S7RA9M8QW2V5C9H4YTB0AG",
"call_agent_name": "Front desk",
"status": "completed",
"created_at": "2026-09-15T14:00:00.000+00:00"
}
}
Read the record under call, not data. Its id is the same ID used by GET /v1/calls/{call_id}.
The record reflects the data available when Resia sends the event.
- Return a
2xxresponse after you accept the event. - Treat a repeated
call.idas a duplicate. Do not repeat your business action for that call. - Expect retries after a failed delivery: Resia makes up to six attempts over about 8.6 hours.
- Protect the complete webhook URL. Delivery uses HTTPS and URL secrecy; it has no signature header.
You can put your own verification token in the URL. Resia stores and logs that URL, so restrict access to those records. Never use your Resia API key as the webhook token.
The result webhook differs from inbound_input_webhook_url, which supplies inputs before an incoming call answers.
You can use either webhook without the other.
API reference: Call ended event.
Diagnose a missing notification
curl --fail-with-body --silent --show-error \
"$RESIA_API_BASE/v1/request-logs?kind=webhook&limit=10" \
--header "Authorization: Bearer $RESIA_API_KEY"
Each webhook attempt has a request log. Read a log's details to inspect its request and response. Check your server's availability and response status if a delivery fails. If all attempts fail, use the call read operation to recover the result. For support, include the call ID and request ID. Do not send keys or private call content.
API reference: Request logs.

