List transcripts
curl --request GET \
--url https://api-eg.olimi.ai/api/v2/stt \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api-eg.olimi.ai/api/v2/stt"
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/stt', 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/stt",
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/stt"
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/stt")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-eg.olimi.ai/api/v2/stt")
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": "Speech-to-text records fetched successfully",
"meta": {
"totalItems": 12,
"itemCount": 10,
"itemsPerPage": 10,
"totalPages": 2,
"currentPage": 1
},
"data": [
{
"id": "99e12fe7-e8ed-4c61-be38-3f9786662f21",
"attachmentId": "3c63b9cd-208b-498e-a644-6f1d8aa158a1",
"transcript": "Speaker 1: أهلاً بيك، إزيك النهارده؟\n\nSpeaker 2: الحمد لله، كله تمام.",
"status": "completed",
"failureCode": null,
"targetLanguageId": null,
"targetLanguage": null,
"attachment": {
"id": "3c63b9cd-208b-498e-a644-6f1d8aa158a1",
"originalName": "recording.wav",
"mimeType": "audio/wav",
"fileSize": "128684"
},
"createdAt": "2026-09-29T08:14:29.741Z",
"updatedAt": "2026-09-29T08:14:35.291Z"
}
]
}{
"statusCode": 404,
"errorCode": "agent_not_found",
"message": "Agent not found"
}Speech to Text
List transcripts
Returns your transcripts, newest first, one page at a time.
GET
/
api
/
v2
/
stt
List transcripts
curl --request GET \
--url https://api-eg.olimi.ai/api/v2/stt \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api-eg.olimi.ai/api/v2/stt"
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/stt', 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/stt",
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/stt"
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/stt")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-eg.olimi.ai/api/v2/stt")
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": "Speech-to-text records fetched successfully",
"meta": {
"totalItems": 12,
"itemCount": 10,
"itemsPerPage": 10,
"totalPages": 2,
"currentPage": 1
},
"data": [
{
"id": "99e12fe7-e8ed-4c61-be38-3f9786662f21",
"attachmentId": "3c63b9cd-208b-498e-a644-6f1d8aa158a1",
"transcript": "Speaker 1: أهلاً بيك، إزيك النهارده؟\n\nSpeaker 2: الحمد لله، كله تمام.",
"status": "completed",
"failureCode": null,
"targetLanguageId": null,
"targetLanguage": null,
"attachment": {
"id": "3c63b9cd-208b-498e-a644-6f1d8aa158a1",
"originalName": "recording.wav",
"mimeType": "audio/wav",
"fileSize": "128684"
},
"createdAt": "2026-09-29T08:14:29.741Z",
"updatedAt": "2026-09-29T08:14:35.291Z"
}
]
}{
"statusCode": 404,
"errorCode": "agent_not_found",
"message": "Agent not found"
}Each item has the fields described in Transcript fields.
To find the transcript for a file you’ve just uploaded, match its
attachmentId. Newest uploads come first, and search matches the file name, so searching for the name you uploaded narrows it down quickly.
Use meta.totalPages to know when you’ve fetched every page.Authorizations
Query Parameters
Page number, starting at 1. Defaults to 1.
Required range:
x >= 1Transcripts per page. Defaults to 10.
Required range:
x >= 1Matches transcripts whose text or file name contains this. Not case-sensitive.