curl --request POST \
--url https://api.example.com/v1/call-analysis \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'external_id=<string>' \
--form 'agent_id=<string>' \
--form 'agent_name=<string>' \
--form 'model_name=<string>' \
--form audio_file='@example-file' \
--form 'additional_parameters=<string>'import requests
url = "https://api.example.com/v1/call-analysis"
files = { "audio_file": ("example-file", open("example-file", "rb")) }
payload = {
"external_id": "<string>",
"agent_id": "<string>",
"agent_name": "<string>",
"model_name": "<string>",
"additional_parameters": "<string>"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('external_id', '<string>');
form.append('agent_id', '<string>');
form.append('agent_name', '<string>');
form.append('model_name', '<string>');
form.append('audio_file', '<string>');
form.append('additional_parameters', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.example.com/v1/call-analysis', 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.example.com/v1/call-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.example.com/v1/call-analysis"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.example.com/v1/call-analysis")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/call-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"external_id": "CALL-2024-001234",
"status": "PENDING",
"enabled": true,
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"agent_id": "AGT-001",
"agent_name": "John Smith",
"model_id": 1,
"error_message": "<string>",
"original_file_name": "support_call_20240115.mp3",
"additional_parameters": {
"campaign": "Q4_Retention",
"department": "Support"
},
"analysis_result": {},
"neurascore_result": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Opening",
"total_score": 45,
"expected_total_score": 50,
"score_percentage": 90,
"expected_score_percentage": 100,
"variables": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "greeting_quality",
"readable_name": "Greeting Quality",
"description": "Evaluates the warmth and professionalism of the agent's greeting",
"score": 8,
"expected_score": 10
}
]
}
],
"total_score": 425,
"expected_score": 500,
"score_percentage": 85,
"summary": "The agent handled a billing inquiry efficiently, resolving the customer's concern about an unexpected charge.",
"insights": [
"Agent demonstrated excellent product knowledge",
"Consider offering proactive follow-up"
],
"keywords": [
"billing",
"refund",
"subscription",
"satisfaction"
],
"updated_at": "2023-11-07T05:31:56Z",
"updated_by": "<string>"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}Crear Análisis
Upload an audio file to create a new call analysis request.
Supported audio formats: MP3, WAV, M4A, FLAC, OGG, WEBM
The analysis process runs asynchronously. Poll the GET endpoint or configure webhooks to receive completion notifications.
Processing stages:
- Audio conversion and validation
- Speech-to-text transcription
- Quality analysis and scoring
- Summary and insights generation
curl --request POST \
--url https://api.example.com/v1/call-analysis \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: multipart/form-data' \
--form 'external_id=<string>' \
--form 'agent_id=<string>' \
--form 'agent_name=<string>' \
--form 'model_name=<string>' \
--form audio_file='@example-file' \
--form 'additional_parameters=<string>'import requests
url = "https://api.example.com/v1/call-analysis"
files = { "audio_file": ("example-file", open("example-file", "rb")) }
payload = {
"external_id": "<string>",
"agent_id": "<string>",
"agent_name": "<string>",
"model_name": "<string>",
"additional_parameters": "<string>"
}
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('external_id', '<string>');
form.append('agent_id', '<string>');
form.append('agent_name', '<string>');
form.append('model_name', '<string>');
form.append('audio_file', '<string>');
form.append('additional_parameters', '<string>');
const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
options.body = form;
fetch('https://api.example.com/v1/call-analysis', 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.example.com/v1/call-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: multipart/form-data"
],
]);
$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.example.com/v1/call-analysis"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://api.example.com/v1/call-analysis")
.header("Authorization", "Bearer <token>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/call-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"external_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_id\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"agent_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"model_name\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"audio_file\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"additional_parameters\"\r\n\r\n<string>\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "550e8400-e29b-41d4-a716-446655440000",
"external_id": "CALL-2024-001234",
"status": "PENDING",
"enabled": true,
"created_at": "2023-11-07T05:31:56Z",
"created_by": "<string>",
"agent_id": "AGT-001",
"agent_name": "John Smith",
"model_id": 1,
"error_message": "<string>",
"original_file_name": "support_call_20240115.mp3",
"additional_parameters": {
"campaign": "Q4_Retention",
"department": "Support"
},
"analysis_result": {},
"neurascore_result": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "Opening",
"total_score": 45,
"expected_total_score": 50,
"score_percentage": 90,
"expected_score_percentage": 100,
"variables": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"key": "greeting_quality",
"readable_name": "Greeting Quality",
"description": "Evaluates the warmth and professionalism of the agent's greeting",
"score": 8,
"expected_score": 10
}
]
}
],
"total_score": 425,
"expected_score": 500,
"score_percentage": 85,
"summary": "The agent handled a billing inquiry efficiently, resolving the customer's concern about an unexpected charge.",
"insights": [
"Agent demonstrated excellent product knowledge",
"Consider offering proactive follow-up"
],
"keywords": [
"billing",
"refund",
"subscription",
"satisfaction"
],
"updated_at": "2023-11-07T05:31:56Z",
"updated_by": "<string>"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}{
"code": "001-001-0001",
"message": "The requested resource was not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Your unique identifier for this call (e.g., CRM call ID)
Identifier of the agent who handled the call
Display name of the agent
Name of the analysis model to use for evaluation
Audio file to analyze (MP3, WAV, M4A, FLAC, OGG, WEBM)
JSON string with custom metadata (e.g., campaign, department)
Response
Successful Response
Complete call analysis result with scores, insights, and metadata
Unique identifier for this analysis
"550e8400-e29b-41d4-a716-446655440000"
Your reference ID for this call
"CALL-2024-001234"
Current processing status: PENDING, PROCESSING, COMPLETED, or FAILED
PENDING, AUDIO_CONVERSION_IN_PROGRESS, AUDIO_CONVERTED, AUDIO_TRANSCRIPTION_IN_PROGRESS, AUDIO_TRANSCRIBED, TRANSCRIPTION_ANALYZE_IN_PROGRESS, TRANSCRIPTION_ANALYZED, TRANSCRIPTION_SUMMARIZE_IN_PROGRESS, TRANSCRIPTION_SUMMARIZED, TRANSCRIPTION_FAILED, PROCESS_COMPLETED, ERROR Whether this record is active
true
Timestamp when analysis was created (UTC)
System identifier that created this record
Identifier of the agent who handled the call
"AGT-001"
Display name of the agent
"John Smith"
ID of the analysis model used for evaluation
1
Error details if status is FAILED
Name of the uploaded audio file
"support_call_20240115.mp3"
Custom metadata provided during submission
{
"campaign": "Q4_Retention",
"department": "Support"
}
Extracted variables and data from the analysis
Detailed scoring breakdown organized by evaluation categories
Show child attributes
Show child attributes
Total achieved score across all categories
425
Maximum possible total score
500
Overall achievement percentage (0-100)
85
AI-generated summary of the conversation
"The agent handled a billing inquiry efficiently, resolving the customer's concern about an unexpected charge."
Key observations and recommendations from the analysis
[
"Agent demonstrated excellent product knowledge",
"Consider offering proactive follow-up"
]
Key topics and themes discussed in the call
[
"billing",
"refund",
"subscription",
"satisfaction"
]
Timestamp of last update (UTC)
System identifier that last updated this record
