> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.conversive.ai/api-sdk-docs/list-calls/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.conversive.ai/_mcp/server. # List Calls GET https://app.beconversive.com/contact-center/v1/calls Fetch paginated call history for the authenticated account. Optionally filter results to calls involving one or more specific customer phone numbers. Reference: https://docs.conversive.ai/api-sdk-docs/list-calls ## Authentication - `Authorization` header (bearer token, required) — Bearer authentication of the form `Bearer `, where token is your auth token. ## Request ### Query parameters - `page` (integer, optional, default: 1) — Page number (1-based). - `page_size` (integer, optional, default: 20) — Number of records per page. Maximum is `100`. - `customer_numbers` (string, optional) — Comma-separated list of customer phone numbers in E.164 format. URL-encode `+` as `%2B` and `,` as `%2C`. ## Response ### 200 Paginated list of call records. - `page` (integer, optional) — Current page number. - `page_size` (integer, optional) — Number of records in this response. - `total` (integer, optional) — Total number of calls matching the query. - `items` (list of CallRecord, optional) ## Errors ### 401 Unauthorized Error Unauthorized — missing or invalid JWT. - `any` ## Types ### CallRecord - `call_id` (string, optional) — Unique call ID. - `account_id` (string, optional) — Account the call belongs to. - `external_call_id` (string, optional, nullable) — External reference ID, if set. - `direction` (enum, optional) — Call direction. - Allowed values: `inbound`, `outbound` - `call_mode` (enum, optional) — Call mode. - Allowed values: `human`, `ai`, `ivr`, `campaign`, `mixed` - `call_type` (enum, optional) — How the agent joined the call. - Allowed values: `browser`, `phone` - `outgoing_number` (string, optional) — The caller-ID number used. - `agent_number` (string, optional, nullable) — Agent phone number, for phone-bridge calls. - `customer_number` (string, optional) — The customer's phone number. - `status` (string, optional) — Latest call status. - `disconnect_reason` (string, optional, nullable) — Final or current disconnect reason. - `started_at` (datetime, optional) — When the call was started. - `answered_at` (datetime, optional, nullable) — When the call was answered. - `ended_at` (datetime, optional, nullable) — When the call ended. - `recording_link` (string, optional, nullable) — Internal storage reference for the recording. - `duration_seconds` (integer, optional, nullable) — Call duration in seconds. - `transcription` (string, optional, nullable) — Call transcription, if available. - `transcription_status` (string, optional, nullable) — Status of transcription processing. - `created_at` (datetime, optional) — Record creation timestamp. - `updated_at` (datetime, optional) — Record last-updated timestamp. ## Examples **Response** ```json { "page": 1, "page_size": 20, "total": 2, "items": [ { "call_id": "550e8400-e29b-41d4-a716-446655440000", "account_id": "152", "external_call_id": null, "direction": "outbound", "call_mode": "human", "call_type": "browser", "outgoing_number": "+912264237758", "agent_number": null, "customer_number": "+919580440262", "status": "completed", "disconnect_reason": "call completed", "started_at": "2026-04-28T10:30:00", "answered_at": "2026-04-28T10:30:10", "ended_at": "2026-04-28T10:35:00", "recording_link": "recordings/file.mp3", "duration_seconds": 290, "transcription": null, "transcription_status": null, "created_at": "2026-04-28T10:30:00", "updated_at": "2026-04-28T10:35:00" } ] } ``` **SDK Code** ```python listCalls_example import requests url = "https://app.beconversive.com/contact-center/v1/calls" querystring = {"customer_numbers":"%2B919580440262"} headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```javascript listCalls_example const url = 'https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go listCalls_example package main import ( "fmt" "net/http" "io" ) func main() { url := "https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby listCalls_example require 'uri' require 'net/http' url = URI("https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java listCalls_example import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262") .header("Authorization", "Bearer ") .asString(); ``` ```php listCalls_example request('GET', 'https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp listCalls_example using RestSharp; var client = new RestClient("https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift listCalls_example import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://app.beconversive.com/contact-center/v1/calls?customer_numbers=%252B919580440262")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```