curl --request GET \
--url https://api.usesimple.ai/api/v1/interactions \
--header 'Authorization: <api-key>'import requests
url = "https://api.usesimple.ai/api/v1/interactions"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.usesimple.ai/api/v1/interactions', 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.usesimple.ai/api/v1/interactions",
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: <api-key>"
],
]);
$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.usesimple.ai/api/v1/interactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.usesimple.ai/api/v1/interactions")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usesimple.ai/api/v1/interactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"interactions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "call",
"status": "<string>",
"started_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"transcripts": [
{
"text": "<string>",
"role": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"function_name": "<string>",
"arguments": {}
}
],
"modality": "voice",
"language": "en",
"from_number": "<string>",
"to_number": "<string>",
"transferred": true,
"handoff_metadata": {
"five9": {
"conversation_id": "<string>",
"tenant_name": "<string>",
"campaign_name": "<string>",
"transferred_at": "2023-11-07T05:31:56Z"
}
},
"direction": "<string>",
"tags": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"color": "<string>"
}
],
"ended_at": "2023-11-07T05:31:56Z",
"duration": 123,
"external_identifiers": {},
"params": {},
"recording_presigned_url": "<string>",
"answered_by": "voicemail",
"analyzers": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "<string>",
"output_config": {
"type": "string",
"properties": {}
}
}
],
"analysis_results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"analyzer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "<string>",
"output_config": {},
"result": {}
}
],
"summary": "<string>"
}
],
"total_count": 123,
"page": 123,
"page_size": 123,
"total_pages": 123,
"filters": {
"status": "<string>",
"modality": "voice",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transferred": true,
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z"
},
"sorting": {
"sort_by": "<string>",
"sort_direction": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}List Voice and Text Interactions with the API
List, paginate, and filter Simple AI voice calls and text conversations through one unified interactions API endpoint.
curl --request GET \
--url https://api.usesimple.ai/api/v1/interactions \
--header 'Authorization: <api-key>'import requests
url = "https://api.usesimple.ai/api/v1/interactions"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.usesimple.ai/api/v1/interactions', 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.usesimple.ai/api/v1/interactions",
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: <api-key>"
],
]);
$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.usesimple.ai/api/v1/interactions"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.usesimple.ai/api/v1/interactions")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usesimple.ai/api/v1/interactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"interactions": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "call",
"status": "<string>",
"started_at": "2023-11-07T05:31:56Z",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"transcripts": [
{
"text": "<string>",
"role": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"function_name": "<string>",
"arguments": {}
}
],
"modality": "voice",
"language": "en",
"from_number": "<string>",
"to_number": "<string>",
"transferred": true,
"handoff_metadata": {
"five9": {
"conversation_id": "<string>",
"tenant_name": "<string>",
"campaign_name": "<string>",
"transferred_at": "2023-11-07T05:31:56Z"
}
},
"direction": "<string>",
"tags": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"description": "<string>",
"color": "<string>"
}
],
"ended_at": "2023-11-07T05:31:56Z",
"duration": 123,
"external_identifiers": {},
"params": {},
"recording_presigned_url": "<string>",
"answered_by": "voicemail",
"analyzers": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "<string>",
"output_config": {
"type": "string",
"properties": {}
}
}
],
"analysis_results": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"analyzer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "<string>",
"output_config": {},
"result": {}
}
],
"summary": "<string>"
}
],
"total_count": 123,
"page": 123,
"page_size": 123,
"total_pages": 123,
"filters": {
"status": "<string>",
"modality": "voice",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_version_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"transferred": true,
"created_at_gte": "2023-11-07T05:31:56Z",
"created_at_lte": "2023-11-07T05:31:56Z",
"updated_at_gte": "2023-11-07T05:31:56Z",
"updated_at_lte": "2023-11-07T05:31:56Z"
},
"sorting": {
"sort_by": "<string>",
"sort_direction": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}include_external_channels=true to include external-channel sessions, grouped one per session, alongside native interactions. The type field identifies whether each interaction is a call, conversation, email, sms, or external_channel.Authorizations
Query Parameters
Filter by interaction status. Multiple values can be provided separated by commas.
Filter by interaction modality (voice or text)
voice, text Filter by agent group UUID. Multiple values can be provided separated by commas. Returns interactions from all versions of the specified agent(s).
Filter by specific agent version UUID. Returns interactions from only the specified agent version.
Filter by whether the interaction was transferred
External-channel calls (uploaded or ingested from external sources, grouped as one interaction per session) are excluded by default. Pass true to include them alongside native calls and conversations.
Filter interactions created at or after this datetime (ISO 8601 format). For external-channel interactions this compares against the call (leg start) time rather than the returned created_at ingestion timestamp.
Filter interactions created at or before this datetime (ISO 8601 format). For external-channel interactions this compares against the call (leg start) time rather than the returned created_at ingestion timestamp.
Filter interactions last updated at or after this datetime (ISO 8601 format). Reflects the last change to the interaction record itself. For external-channel interactions this compares against the underlying session's last update time.
Filter interactions last updated at or before this datetime (ISO 8601 format).
Field to sort results by
created_at, updated_at, started_at, ended_at, duration, status Sort direction
asc, desc