API reference
Calls
A call is a recording Saleso transcribed and analyzed. Send a recording with Send Call Recording; when the analysis is done, the call_analyzed webhook event fires.
Call types are stored as Hebrew labels: שיחה יוצאת (outgoing) and שיחה נכנסת (incoming). Recording links (file_url) are signed and stay valid for 7 days.
Send Call Recording
/api/make/create-call/{teamId}Sends a call recording to Saleso to be processed and analyzed as a new call.
- Rate limit:
- 30 requests / minute
- Used by:
- Make: Create Call · Zapier: Send Call Recording
Parameters
teamIdstringrequiredYour Team ID.
recording_urlstring· BodyrequiredRequired. A public
httpslink to the audio file that Saleso can download.agent_identifierstring· BodyrequiredThe rep who handled the call. Pick them from the list. You can also map an identifier (phone or extension) you set up in Saleso.
customer_phonestring· BodyOptional. Links the call to the customer with this phone, or creates one.
customer_namestring· BodyOptional. Used as the customer’s name when one is created, and as the call’s client name.
call_typestring· Bodyinboundoroutbound(outgoingis also accepted). Defaultinbound.One of:
inbound,outboundDefault:
inboundcall_datestring (ISO 8601 date-time)· BodyOptional. Defaults to the time the recording is sent.
Response
2 response fieldsShowHide
successbooleanSuccess
call_idstringCall ID
- The response returns as soon as the call is queued. Transcription and analysis run in the background; subscribe to
call_analyzedto get the result. - Calls shorter than your team’s minimum call duration are not analyzed.
Errors
400Missing required fields(with arequiredlist),Invalid recording URL: …, invalid JSON, orAgent identifier not found in mappings(with theagent_identifieryou sent).401The API key is missing, wrong, or belongs to another team (Invalid API key).429The team is over its per-minute budget for this endpoint. Wait for theRetry-Afterseconds (60).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/create-call/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"recording_url": "https://example.com/recordings/call-48213.mp3",
"agent_identifier": "0501112233",
"customer_phone": "0501234567",
"customer_name": "Dana Levi",
"call_type": "inbound",
"call_date": "2026-10-22T09:30:00.000Z"
}'{
"success": true,
"call_id": "b263551b-19d2-42d6-b4dc-ca56ec59b769"
}Get Calls by ID
/api/make/calls/{teamId}Gets one or more calls from Saleso by call ID.
- Used by:
- Make: Get Calls · Zapier: Get Calls by ID
Parameters
teamIdstringrequiredYour Team ID.
call_idstring· QueryrequiredOne call ID, or up to 50 IDs separated by commas.
Response
16 response fieldsShowHide
calls[].idstringCall ID
calls[].file_namestringFile Name
calls[].file_urlstringSigned recording link, valid for 7 days.
calls[].duration_secondsintegerDuration (seconds)
calls[].call_datedatetimeCall Date
calls[].call_typestringCall Type
calls[].analysis_statusstringpending,processing,completedorfailed.calls[].client_namestringClient Name
calls[].assigned_to_namestringAssigned To
calls[].customer_idstringCustomer ID
calls[].transcriptstringThe transcript as plain text, one
speaker: textline per segment.calls[].created_atdatetimeCreated At
calls[].analysis_resultsobjectThe full AI analysis as configured for your team, or null before the analysis finishes.
calls[].client_notesstringNotes on the call, or null.
calls[].assigned_tostringUser ID of the rep.
calls[].updated_atdatetimeLast update.
Errors
400call_id parameter is requiredorMaximum 50 call IDs per request.404No calls found(none of the IDs belong to your team).401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X GET "https://try.saleso.io/api/make/calls/$SALESO_TEAM_ID?call_id=b263551b-19d2-42d6-b4dc-ca56ec59b769" \
-H "x-api-key: $SALESO_API_KEY"{
"calls": [
{
"id": "b263551b-19d2-42d6-b4dc-ca56ec59b769",
"file_name": "make_1761125400000.mp3",
"file_url": "https://try.saleso.io/api/recordings/b263551b-19d2-42d6-b4dc-ca56ec59b769?t=…",
"duration_seconds": 184,
"call_date": "2026-10-22T09:30:00.000Z",
"call_type": "שיחה יוצאת",
"analysis_status": "completed",
"client_name": "Dana Levi",
"assigned_to_name": "Noa Cohen",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"analysis_results": {},
"transcript": "Noa: Hi Dana, this is Noa from Levi Logistics.\nDana: Hi, thanks for calling back.",
"created_at": "2026-10-22T09:30:00.000Z",
"client_notes": null,
"assigned_to": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"updated_at": "2026-10-22T09:30:00.000Z"
}
]
}List Calls
/api/make/calls/list/{teamId}Gets calls filtered by date, rep, customer, or analysis status.
- Used by:
- Make: List Calls · Zapier: List Calls
Parameters
teamIdstringrequiredYour Team ID.
date_fromstring (ISO 8601 date-time)· QueryOptional. Calls on or after this date (ISO 8601).
date_tostring (ISO 8601 date-time)· QueryOptional. Calls on or before this date (ISO 8601).
salesperson_idstring· QueryOptional. The Saleso user ID of the rep.
customer_idstring· QueryFilter by customer UUID.
statusstring· QueryFilter by analysis status.
One of:
completed,processing,pending,failedlimitinteger· QueryResults per page, up to 100. Default 20.
Default:
20offsetinteger· QueryHow many calls to skip, for paging. Use 0 for the first page.
Default:
0
Response
13 response fieldsShowHide
calls[].idstringCall ID
calls[].file_namestringFile Name
calls[].duration_secondsintegerDuration (seconds)
calls[].call_datedatetimeCall Date
calls[].call_typestringCall Type
calls[].analysis_statusstringAnalysis Status
calls[].client_namestringClient Name
calls[].assigned_tostringAssigned To ID
calls[].assigned_to_namestringAssigned To Name
calls[].customer_idstringCustomer ID
calls[].created_atdatetimeCreated At
totalintegerTotal matching calls.
has_morebooleanTrue when another page exists (
offset + limit < total).
- Sorted by call date, newest first. Merged duplicate calls are excluded.
Errors
401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X GET "https://try.saleso.io/api/make/calls/list/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY"{
"calls": [
{
"id": "b263551b-19d2-42d6-b4dc-ca56ec59b769",
"file_name": "make_1761125400000.mp3",
"duration_seconds": 184,
"call_date": "2026-10-22T09:30:00.000Z",
"call_type": "שיחה יוצאת",
"analysis_status": "completed",
"client_name": "Dana Levi",
"assigned_to": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"assigned_to_name": "Noa Cohen",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"created_at": "2026-10-22T09:30:00.000Z"
}
],
"total": 1,
"has_more": true
}Get Calls by Phone Number
/api/make/calls/by-phone/{teamId}Gets all calls with a phone number, each with its analysis (score, summary, and results).
- Used by:
- Make: Search Calls by Phone · Zapier: Get Calls by Phone Number
Parameters
teamIdstringrequiredYour Team ID.
phonestring· QueryrequiredFull phone number in any format (050-1234567, 0501234567, +972501234567). Partial numbers are not supported.
date_fromstring (ISO 8601 date-time)· QueryFilter calls from this date.
date_tostring (ISO 8601 date-time)· QueryFilter calls until this date.
limitinteger· QueryResults per page, up to 50. Default 20.
Default:
20offsetinteger· QueryHow many calls to skip, for paging. Use 0 for the first page.
Default:
0
Response
25 response fieldsShowHide
phonestringNormalized Phone
customer_idsarrayEvery customer holding this number (duplicates are not merged).
calls[].idstringCall ID
calls[].file_namestringFile Name
calls[].file_urlstringSigned recording link, valid for 7 days.
calls[].duration_secondsintegerDuration (seconds)
calls[].call_datedatetimeCall Date
calls[].call_typestringCall Type
calls[].analysis_statusstringAnalysis Status
calls[].client_namestringClient Name
calls[].client_notesstringClient Notes
calls[].assigned_tostringAssigned To ID
calls[].assigned_to_namestringAssigned To Name
calls[].customer_idstringCustomer ID
calls[].customer_namestringCustomer Name
calls[].matched_bystringcustomerwhen the call is linked to a customer with this phone,client_namewhen an unlinked call carries the number in its name.calls[].total_scorenumberTotal Score
calls[].summarystringSummary
calls[].transcriptstringTranscript
calls[].created_atdatetimeCreated At
calls[].updated_atdatetimeUpdated At
totalintegerTotal Count
has_morebooleanHas More
calls[].analysis_resultsobjectAnalysis results
calls[].analysis_resultsobjectThe full AI analysis, or null.
Errors
400phone must be a full phone number (at least 9 digits, any format).401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X GET "https://try.saleso.io/api/make/calls/by-phone/$SALESO_TEAM_ID?phone=0501234567" \
-H "x-api-key: $SALESO_API_KEY"{
"phone": "0501234567",
"customer_ids": [
"8b258f8b-4228-40fa-8d24-5b16428e686d"
],
"calls": [
{
"id": "b263551b-19d2-42d6-b4dc-ca56ec59b769",
"file_name": "make_1761125400000.mp3",
"file_url": "https://try.saleso.io/api/recordings/b263551b-19d2-42d6-b4dc-ca56ec59b769?t=…",
"duration_seconds": 184,
"call_date": "2026-10-22T09:30:00.000Z",
"call_type": "שיחה יוצאת",
"analysis_status": "completed",
"client_name": "Dana Levi",
"client_notes": "string",
"assigned_to": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"assigned_to_name": "Noa Cohen",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"customer_name": "Dana Levi",
"matched_by": "customer",
"total_score": 82,
"summary": "Dana asked for a quote for three vehicles; follow up on Thursday.",
"analysis_results": {},
"transcript": "Noa: Hi Dana, this is Noa from Levi Logistics.\nDana: Hi, thanks for calling back.",
"created_at": "2026-10-22T09:30:00.000Z",
"updated_at": "2026-10-22T09:30:00.000Z"
}
],
"total": 1,
"has_more": true
}