Call Logs

GET /forwarding/call-logs - page through forwarded calls with who answered, duration, status, outcome, cost and a recording link, and get a fresh recording link for one call.

2 min read

Base URL
https://voice-api.edesy.in/v1/forwarding
Auth
Authorization: Bearer sk_...Get a key
GET/v1/forwarding/call-logs

GET/v1/forwarding/call-logs returns every call that came in on your forwarding numbers, newest first, with the caller, who answered, duration, billed duration, status, outcome, cost and a ready-to-play recording link. Filter by rule, status and date, and page through with page and per_page.

Query parameters#

Name Type Description
rule_id uuid Only calls for this rule
status string initiated, answered, completed, busy, no-answer, canceled or failed
start_date RFC 3339 Calls on or after this time, e.g. 2026-10-01T00:00:00+05:30
end_date RFC 3339 Calls before this time
page integer Page number from 1. Default 1
per_page integer Results per page. Default 20

A date in any other format is ignored, and you get unfiltered results rather than an error.

Example#

curl "https://voice-api.edesy.in/v1/forwarding/call-logs?start_date=2026-10-01T00:00:00Z&per_page=20" \
  -H "Authorization: Bearer sk_your_api_key"
{
  "data": [
    {
      "id": "0c9e7d52-1a3b-4f68-8e24-5b7a9c1d3e60",
      "rule_id": "3f2b8c1e-7d4a-4e59-9b21-6a0c5d8e1f47",
      "caller_number": "9988776655",
      "did_number": "8071387146",
      "connected_number": "9876543210",
      "strategy": "sequential",
      "status": "completed",
      "started_at": "2026-10-16T09:31:02Z",
      "answered_at": "2026-10-16T09:31:09Z",
      "ended_at": "2026-10-16T09:33:15Z",
      "duration_sec": 126,
      "bill_duration_sec": 180,
      "price": 3,
      "price_unit": "INR",
      "recording_url": "https://voice-api.edesy.in/v1/public/recordings/forwarding/CALL_SID?t=SIGNED_TOKEN",
      "created_at": "2026-10-16T09:31:02Z"
    }
  ],
  "meta": { "total": 1, "page": 1, "per_page": 20, "total_pages": 1, "timestamp": "2026-10-16T09:35:00Z" }
}

Fields#

Field Description
id Id of the call log row
rule_id The forwarding rule that handled the call
caller_number The real caller
did_number Your virtual number that was called
connected_number The forward-to number that answered, when known
strategy simultaneous or sequential at the time of the call
status initiated, answered, completed, busy, no-answer, canceled or failed
started_at, answered_at, ended_at UTC timestamps
duration_sec Call length in seconds
bill_duration_sec Billed seconds, rounded up to whole minutes
price, price_unit What the call cost, in INR
recording_url Signed link to the MP3, valid for 1 hour, no API key needed
hangup_cause Why a call did not connect: busy, rejected, no_answer, unavailable, invalid_number, call_blocked, network_timeout, carrier_error, caller_canceled, call_failed
sip_status SIP response code for a call that did not connect
call_outcome Who or what the call ended at: answered, callee, unreachable, invalid_number, network, account, platform
created_at When the row was written

Fields with no value (answered_at, ended_at, connected_number, recording_url, hangup_cause) are left out. A call no destination answered is busy, no-answer or failed even when hold audio played; hangup_cause gives the reason.

GET/v1/forwarding/calls/:call_sid/recording

A fresh, ready-to-play link to one call's recording, valid for 1 hour. call_sid is the call's SID from the call log.

{ "data": { "url": "https://voice-api.edesy.in/v1/public/recordings/forwarding/CALL_SID?t=SIGNED_TOKEN", "call_sid": "CALL_SID" }, "meta": { "timestamp": "2026-10-16T09:35:00Z" } }

404 not_found when there is no such call in your workspace or the call was not recorded.

See also Logs and Recordings.

Was this page helpful?