Get Call
curl --request GET \
--url https://api.flowiq.live/v1/calls/{call_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/calls/{call_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/calls/{call_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flowiq.live/v1/calls/{call_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flowiq.live/v1/calls/{call_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flowiq.live/v1/calls/{call_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/calls/{call_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"id": "wacid.HBgLMjc4MjAwMDAwMDAVAgARGBI2RjQ3QkU1RjA5Q0UyMkEzQjQA",
"channel": "whatsapp",
"direction": "inbound",
"status": "ringing",
"answered_by": "api",
"started_at": "2023-11-07T05:31:56Z",
"answered_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"duration_seconds": 70,
"end_reason": "completed",
"transcript": "<string>",
"has_recording": true,
"recording_url": "<string>",
"contact": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_id": "27820000000",
"name": "Jane Doe"
},
"from": "<string>",
"to": "<string>",
"biz_opaque_callback_data": "<string>",
"events": [
{
"type": "ringing",
"at": "2023-11-07T05:31:56Z",
"status": "<string>",
"via": "api"
}
],
"session": {
"sdp_type": "offer",
"sdp": "<string>"
}
}
}{
"error": "Request failed",
"message": "Parameter value is not valid"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}{
"error": "Request failed",
"message": "Contact has not granted callback permission"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}Calls
Get Call
One call with every event FlowIQ recorded for it. Scope: read.
GET
/
v1
/
calls
/
{call_id}
Get Call
curl --request GET \
--url https://api.flowiq.live/v1/calls/{call_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flowiq.live/v1/calls/{call_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flowiq.live/v1/calls/{call_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flowiq.live/v1/calls/{call_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.flowiq.live/v1/calls/{call_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.flowiq.live/v1/calls/{call_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flowiq.live/v1/calls/{call_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"data": {
"id": "wacid.HBgLMjc4MjAwMDAwMDAVAgARGBI2RjQ3QkU1RjA5Q0UyMkEzQjQA",
"channel": "whatsapp",
"direction": "inbound",
"status": "ringing",
"answered_by": "api",
"started_at": "2023-11-07T05:31:56Z",
"answered_at": "2023-11-07T05:31:56Z",
"ended_at": "2023-11-07T05:31:56Z",
"duration_seconds": 70,
"end_reason": "completed",
"transcript": "<string>",
"has_recording": true,
"recording_url": "<string>",
"contact": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_id": "27820000000",
"name": "Jane Doe"
},
"from": "<string>",
"to": "<string>",
"biz_opaque_callback_data": "<string>",
"events": [
{
"type": "ringing",
"at": "2023-11-07T05:31:56Z",
"status": "<string>",
"via": "api"
}
],
"session": {
"sdp_type": "offer",
"sdp": "<string>"
}
}
}{
"error": "Request failed",
"message": "Parameter value is not valid"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}{
"error": "Request failed",
"message": "Contact has not granted callback permission"
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}{
"error": "<string>",
"code": "<string>",
"message": "<string>",
"request_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"whatsapp_error_code": 123
}One call: the call object plus
A call id that is not on your number answers
events, everything FlowIQ recorded for it in order. While the call is still ringing it also carries session, WhatsApp’s SDP offer, for a server that missed the webhook.
Basic Usage
CALL_ID=$(node -e 'console.log(encodeURIComponent(process.argv[1]))' "wacid.HBgLMjc4MjAwMDAwMDAVAgARGBI2RjQ3QkU1RjA5Q0UyMkEzQjQA")
curl "https://api.flowiq.live/v1/calls/$CALL_ID" \
-H "Authorization: Bearer fiq_YOUR_API_KEY"
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
call_id | string | Yes | The call’s id, URL-encoded (ids contain = and can contain /) |
Response
Success (200)
{
"organization_id": "a4234f32-…",
"data": {
"id": "wacid.HBgLMjc4MjAwMDAwMDAVAgARGBI2RjQ3QkU1RjA5Q0UyMkEzQjQA",
"channel": "whatsapp",
"direction": "inbound",
"status": "completed",
"answered_by": "inbox",
"started_at": "2026-10-26T20:48:04.097Z",
"answered_at": "2026-10-26T20:48:41.000Z",
"ended_at": "2026-10-26T20:49:51.000Z",
"duration_seconds": 70,
"end_reason": "completed",
"transcript": null,
"has_recording": true,
"recording_url": "https://auth.flowiq.live/storage/v1/object/sign/call-recordings/…",
"contact": { "id": "9b8a7c6d-…", "whatsapp_id": "27820000000", "name": "Jane Doe" },
"events": [
{ "type": "ringing", "at": "2026-10-26T20:48:04.097Z" },
{ "type": "answered", "at": "2026-10-26T20:48:41.947Z" },
{ "type": "ended", "at": "2026-10-26T20:49:53.018Z", "status": "COMPLETED" }
]
}
}
A call id that is not on your number answers
404 Call not found.
