End Session
curl --request POST \
--url https://api.eka.care/voice/v1/sessions/{session_id}/end \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audio_files_sent": 3
}
'import requests
url = "https://api.eka.care/voice/v1/sessions/{session_id}/end"
payload = { "audio_files_sent": 3 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({audio_files_sent: 3})
};
fetch('https://api.eka.care/voice/v1/sessions/{session_id}/end', 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.eka.care/voice/v1/sessions/{session_id}/end",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'audio_files_sent' => 3
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/voice/v1/sessions/{session_id}/end"
payload := strings.NewReader("{\n \"audio_files_sent\": 3\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/voice/v1/sessions/{session_id}/end")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audio_files_sent\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/voice/v1/sessions/{session_id}/end")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio_files_sent\": 3\n}"
response = http.request(request)
puts response.read_body{
"session_id": "ses_abc123def456",
"status": "processing",
"message": "Session ended. Processing started.",
"audio_files_received": 3,
"audio_files": [
"0.webm",
"1.webm",
"2.webm"
]
}{
"error": {
"code": "invalid_audio_format",
"message": "Audio format 'audio/mp3' is not supported",
"details": {}
}
}{
"error": {
"code": "invalid_audio_format",
"message": "Audio format 'audio/mp3' is not supported",
"details": {}
}
}Sessions
End Session
Finalize the session and start asynchronous processing. After this call no further audio uploads are accepted. The server collects and orders all uploaded chunks, commits the session, and queues it for transcription and template extraction. Poll GET /voice/v1/sessions/{session_id} (or use a webhook) to retrieve results once processing completes.
POST
/
voice
/
v1
/
sessions
/
{session_id}
/
end
End Session
curl --request POST \
--url https://api.eka.care/voice/v1/sessions/{session_id}/end \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"audio_files_sent": 3
}
'import requests
url = "https://api.eka.care/voice/v1/sessions/{session_id}/end"
payload = { "audio_files_sent": 3 }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({audio_files_sent: 3})
};
fetch('https://api.eka.care/voice/v1/sessions/{session_id}/end', 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.eka.care/voice/v1/sessions/{session_id}/end",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'audio_files_sent' => 3
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eka.care/voice/v1/sessions/{session_id}/end"
payload := strings.NewReader("{\n \"audio_files_sent\": 3\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eka.care/voice/v1/sessions/{session_id}/end")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"audio_files_sent\": 3\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eka.care/voice/v1/sessions/{session_id}/end")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"audio_files_sent\": 3\n}"
response = http.request(request)
puts response.read_body{
"session_id": "ses_abc123def456",
"status": "processing",
"message": "Session ended. Processing started.",
"audio_files_received": 3,
"audio_files": [
"0.webm",
"1.webm",
"2.webm"
]
}{
"error": {
"code": "invalid_audio_format",
"message": "Audio format 'audio/mp3' is not supported",
"details": {}
}
}{
"error": {
"code": "invalid_audio_format",
"message": "Audio format 'audio/mp3' is not supported",
"details": {}
}
}Lock the session and start processing — no body required. After this call no more audio is accepted.
On
202 Accepted, poll Get Session (or use a webhook) until the results are ready.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Session ID returned by Create Session
Example:
"ses_abc123def456"
Body
application/json
Optional number of audio chunks/files the client sent, used for reconciliation logging.
Required range:
x >= 0Example:
3
Was this page helpful?

