דלג לתוכן הראשי
Reference indexShow

API reference

Automate Saleso from any tool

The Saleso API lets you add leads to your dialer, update them as they move, send call recordings for AI analysis, read calls and customers, and get an HTTP request the moment something happens. It is the same API the Saleso apps for Make and Zapier use, so anything they do, your own code can do too.

POSTMethod
https://try.saleso.ioBase URL
/api/make/create-lead/Endpoint
{teamId}Your Team ID
x-api-key: slso_••••••••Header · your API key
Every endpoint follows this shape: your Team ID in the path, your key in a header, JSON in and out.

Authentication

Each request needs two credentials from your Saleso team:

  • Team ID, in the URL path where the reference shows {teamId}.
  • API key, in the x-api-key header. Authorization: Bearer <key> is accepted too.

A team manager finds both in Saleso under Settings › Integrations › Zapier (or Make.com), or in the dialer under Settings › Connections › Automations. The key is checked against that Team ID only: a key from another team is rejected with 401.

Your team has one key. Make, Zapier and your own code all use it, so generating a new key disconnects every one of them until they are given the new key. Keep it out of client-side code and public repositories.

To check a Team ID and key before you use them, call Test Connection.

Test your credentials
curl "https://try.saleso.io/api/make/health/$SALESO_TEAM_ID" \
  -H "x-api-key: $SALESO_API_KEY"

Requests & responses

  • All requests go to https://try.saleso.io over HTTPS.
  • Send GET and DELETE parameters in the query string, and POST and PATCH bodies as JSON with Content-Type: application/json. The one file upload uses multipart/form-data.
  • Responses are JSON. Dates are ISO 8601 strings in UTC.
  • IDs are UUIDs, except list IDs (your dialer's own list IDs) and webhook subscription IDs (wh_…).
  • Phone numbers are accepted in any format and matched as Israeli numbers: +972 50-123-4567 and 0501234567 are the same lead.
  • List endpoints page with limit and offset. Where the response has has_more, keep going while it is true; otherwise stop at a short page.
  • Statuses, lead fields and agent names are your team's own and are often in Hebrew. Read them from List Statuses and List Lead Fields instead of typing them.

Errors

Errors use standard HTTP status codes and a JSON body with an error message. Some add a hint, or the value that was rejected.

Messages that come from the dialer's own rules (for example a status that needs a callback date) are in Hebrew. Those errors also carry a stable machine-readable code, such as LEAD_NOT_FOUND, CALLBACK_DATE_REQUIRED or CAMPAIGN_INACTIVE. Branch on the HTTP status and the code, never on the message text.

  • 200Success. The body is the endpoint's result. Some list endpoints answer 200 with "found": false or per-row errors; check the body.
  • 400The request is missing a required field or a value is invalid. error says which.
  • 401Missing API key or Invalid API key: the key is absent, wrong, revoked, or belongs to another team.
  • 403The feature is turned off for your team (for example customer documents).
  • 404The record does not exist in your team (a customer, a lead for comments, a set of call IDs).
  • 413Your team's document storage is full.
  • 429Over the per-minute budget for that endpoint. Wait for Retry-After (60 seconds).
  • 500Unexpected server error. Safe to retry reads; check before retrying writes.
Error · 400
{
  "error": "Missing required field: campaign_id"
}
Error · 400 with hint
{
  "error": "Customer not found",
  "hint": "Provide at least one of customer_id, customer_phone, or customer_email"
}

Rate limits

Limits are counted per team, per minute, and only on the endpoints below. Over the limit, the request is answered 429 with Retry-After: 60. Requests rejected for a bad key do not count.

Rate-limited endpoints
EndpointRequests per minute, per team
Send Call Recording30
Run AI Agent30
Find Lead300
Get Open Leads300
Get Closed Leads300

Endpoints with the same limit share one budget: Send Call Recording and Run AI Agent together get 30 a minute, because each request starts paid processing, and the lead lookups together get 300. Other endpoints have no per-minute limit today; usage is monitored, so keep polling reasonable and prefer webhooks to frequent polling.