List audio
curl --request GET \
--url https://api-eg.olimi.ai/api/v2/tts \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api-eg.olimi.ai/api/v2/tts"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api-eg.olimi.ai/api/v2/tts', 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-eg.olimi.ai/api/v2/tts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <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-eg.olimi.ai/api/v2/tts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<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-eg.olimi.ai/api/v2/tts")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-eg.olimi.ai/api/v2/tts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "Text-to-speech records fetched successfully",
"meta": {
"totalItems": 12,
"itemCount": 10,
"itemsPerPage": 10,
"totalPages": 2,
"currentPage": 1
},
"data": [
{
"id": "457ede41-97c7-44c6-bdd8-b9e4ca37f812",
"name": "greeting",
"input": "أهلاً بيك، إزيك النهارده؟",
"status": "completed",
"duration": 2,
"responseFormat": "pcm",
"languageId": "2cdab2de-310d-59a3-ad68-b85b4526e37b",
"voiceId": "118d2470-de1d-5093-86b3-f2d8adec3183",
"attachment": {
"id": "d853213e-03da-49af-8d7b-81a818d1a296",
"originalName": "greeting.wav",
"mimeType": "audio/wav",
"fileSize": "128684",
"url": "https://<storage-host>/tts/d853213e-03da-49af-8d7b-81a818d1a296?X-Amz-Expires=3600&X-Amz-Signature=…"
},
"language": {
"code": "ar-EG",
"name": "Arabic - Egyptian"
},
"voice": {
"id": "118d2470-de1d-5093-86b3-f2d8adec3183",
"name": "Farida",
"voiceKey": "Kore"
},
"createdAt": "2026-09-29T09:05:44.045Z",
"updatedAt": "2026-09-29T09:05:47.310Z"
}
]
}{
"statusCode": 404,
"errorCode": "agent_not_found",
"message": "Agent not found"
}Text to Speech
List audio
Returns the audio you’ve created, newest first, one page at a time.
GET
/
api
/
v2
/
tts
List audio
curl --request GET \
--url https://api-eg.olimi.ai/api/v2/tts \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api-eg.olimi.ai/api/v2/tts"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api-eg.olimi.ai/api/v2/tts', 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-eg.olimi.ai/api/v2/tts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <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-eg.olimi.ai/api/v2/tts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<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-eg.olimi.ai/api/v2/tts")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-eg.olimi.ai/api/v2/tts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"message": "Text-to-speech records fetched successfully",
"meta": {
"totalItems": 12,
"itemCount": 10,
"itemsPerPage": 10,
"totalPages": 2,
"currentPage": 1
},
"data": [
{
"id": "457ede41-97c7-44c6-bdd8-b9e4ca37f812",
"name": "greeting",
"input": "أهلاً بيك، إزيك النهارده؟",
"status": "completed",
"duration": 2,
"responseFormat": "pcm",
"languageId": "2cdab2de-310d-59a3-ad68-b85b4526e37b",
"voiceId": "118d2470-de1d-5093-86b3-f2d8adec3183",
"attachment": {
"id": "d853213e-03da-49af-8d7b-81a818d1a296",
"originalName": "greeting.wav",
"mimeType": "audio/wav",
"fileSize": "128684",
"url": "https://<storage-host>/tts/d853213e-03da-49af-8d7b-81a818d1a296?X-Amz-Expires=3600&X-Amz-Signature=…"
},
"language": {
"code": "ar-EG",
"name": "Arabic - Egyptian"
},
"voice": {
"id": "118d2470-de1d-5093-86b3-f2d8adec3183",
"name": "Farida",
"voiceKey": "Kore"
},
"createdAt": "2026-09-29T09:05:44.045Z",
"updatedAt": "2026-09-29T09:05:47.310Z"
}
]
}{
"statusCode": 404,
"errorCode": "agent_not_found",
"message": "Agent not found"
}Each item has the fields described in Audio fields.
attachment.url is only present for audio that’s completed, and expires after one hour.
Use meta.totalPages to know when you’ve fetched every page.Authorizations
Query Parameters
Page number, starting at 1.
Required range:
x >= 1Items per page.
Required range:
x >= 1Matches audio whose text, name, voice name or voice key contains this. Not case-sensitive.
Only audio spoken by this voice: its exact name or voiceKey. A voice id isn't accepted.