API reference
Leads
Leads are the people your reps dial. Every lead belongs to a campaign and has one status at a time; statuses are your team’s own (often in Hebrew), so read them from List Statuses rather than hard-coding them.
Every write is keyed on the Saleso lead_id. If a workflow starts outside Saleso and only has a phone number, call Find Lead first.
Every lead object has the same shape across actions, searches and webhook events: the Saleso id, your own external_id, the campaign and list (with resolved names), contact details, status, the assigned rep (with name), dial attempt counters and custom_fields.
Create Lead
/api/make/create-lead/{teamId}Creates a dialer lead and adds it to a campaign's dialing queue.
- Used by:
- Make: Create Lead · Zapier: Create Lead
Parameters
teamIdstringrequiredYour Team ID.
phonestring· BodyrequiredRequired. Any format; normalized to the Israeli national format (
+972 50-123-4567becomes0501234567). At least 7 digits.first_namestring· Bodylast_namestring· Bodyemailstring· Bodysourcestring· BodyWhere the lead came from (e.g. facebook, google, website). Free text.
campaign_idstring· BodyrequiredRequired. An active campaign ID from Get Active Campaigns.
list_idstring· BodyOptional. Puts the lead on one of your dialer lists. Leave empty to create it without a list.
Values from List Lead Lists.
assigned_user_idstring· BodyOptional. The rep who handles this lead: pick one, or map the Saleso agent ID your system stores. An unrecognized ID still creates the lead, unassigned, and alerts the manager.
Values from Get Team Members.
custom_fieldsobject· BodyCustom lead field values, keyed by field key: an object (
{"budget": "50000"}) or an array of{key, value}pairs. Field keys come from List Lead Fields. Multiselect fields take an array or a comma-separated string.allow_reopenboolean· BodySet to
trueonly to re-contact a lead that is already closed in Saleso (sale, not interested, do-not-call). By default such a lead is updated but stays in the campaign it was closed in.Default:
falseagent_idstring· BodyAlternative to
assigned_user_id: the rep’s ID in your own CRM, translated through the agent mappings in Saleso.assigned_user_idwins when both are sent. An unknown ID still creates the lead, unassigned.agent_systemstring· BodyWhich system
agent_idbelongs to. Defaults to the genericcrmmapping.
Response
7 response fieldsShowHide
successbooleanSuccess
leadIdstringThe Saleso lead ID. Note the camelCase key on this endpoint.
assigned_user_idstringOnly when a rep was sent: the rep the lead was assigned to, or null.
agent_matchstringOnly when a rep was sent:
matched,unknown(lead created unassigned, manager alerted) orambiguous.duplicatebooleanTrue when a lead with this phone already existed. Not an error: the existing lead is updated and its ID returned.
duplicate_actionstringOnly on duplicates.
move(joined the requested campaign) orskip(stayed where it was, e.g. already closed).duplicate_reasonstringOnly on duplicates. Human-readable reason, currently in Hebrew.
- Creating a lead fires the
dialer_lead_createdwebhook event withcreated_via: "make". Leads are deduplicated by phone, so sending the same lead twice does not create a second one.
Errors
400Missing or invalid phone,Missing required field: campaign_id, invalid JSON, or the campaign or list was not found or is inactive (that message is in Hebrew).401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/create-lead/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "0501234567",
"first_name": "Dana",
"last_name": "Levi",
"email": "dana@example.com",
"source": "facebook",
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"list_id": "list-2041",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"custom_fields": {
"budget": "50000"
}
}'{
"success": true,
"leadId": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"agent_match": "matched",
"duplicate": false
}Add Leads to Campaign
/api/make/leads/add-to-campaign/{teamId}Adds one or more leads to a campaign's dialing queue in a single step.
- Used by:
- Make: Add Leads To Campaign · Zapier: Add Leads to Campaign
Parameters
teamIdstringrequiredYour Team ID.
campaign_idstring· BodyrequiredValues from Get Active Campaigns.
list_idstring· BodyOptional. Puts every lead in this batch on one of your dialer lists. Leave empty to add them without a list.
Values from List Lead Lists.
allow_reopenboolean· BodyLeave as False for regular lead intake: a lead already closed in Saleso (sale, not interested, do-not-call) is updated but stays in the campaign it was closed in. Set to True only in a Zap meant to re-contact closed leads.
Default:
falseleadsarray of objects· BodyrequiredRequired. 1 to 500 leads. Each row is created independently, so one bad row never fails the batch. You can also send a single lead as top-level
phone,first_name, … fields instead ofleads.↳ phonestringrequired↳ first_namestring↳ last_namestring↳ emailstring↳ sourcestring↳ assigned_user_idstringOptional. The rep who handles this lead. An unrecognized ID still creates the lead, unassigned, and alerts the manager.
Values from Get Team Members.
↳ custom_fieldsobjectCustom lead field values, keyed by field key: an object (
{"budget": "50000"}) or an array of{key, value}pairs. Field keys come from List Lead Fields. Multiselect fields take an array or a comma-separated string.
Response
12 response fieldsShowHide
successbooleanSuccess
creatednumberRows that succeeded, including duplicates.
duplicatesnumberRows whose phone already belonged to a lead.
failednumberRows that were rejected.
results[].phonestringPhone
results[].successbooleanSuccess
results[].lead_idstringLead ID
results[].errorstringOnly on failed rows.
results[].agent_matchstringOnly when the row named a rep:
matched,unknownorambiguous.results[].duplicatebooleanAlready Existed
results[].duplicate_actionstringOnly on duplicates:
move(joined this campaign) orskip(stayed where it was, e.g. already closed).results[].duplicate_reasonstringOnly on duplicates. Human-readable reason, currently in Hebrew.
- The response is
200even when some rows fail: checkfailedand each row’ssuccessanderror.
Errors
400Missing required field: campaign_id,No leads provided, more than 500 leads, or invalid JSON.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/add-to-campaign/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"list_id": "list-2041",
"allow_reopen": false,
"leads": [
{
"phone": "0501234567",
"first_name": "Dana",
"last_name": "Levi",
"email": "dana@example.com",
"source": "facebook",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"custom_fields": {
"budget": "50000"
}
}
]
}'{
"success": true,
"created": 2,
"duplicates": 1,
"failed": 1,
"results": [
{
"phone": "0501234567",
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"agent_match": "matched"
},
{
"phone": "0527654321",
"success": true,
"lead_id": "0c1e9b52-6a7d-4f30-8e15-3b9d2a4c7f68",
"duplicate": true,
"duplicate_action": "skip",
"duplicate_reason": "הליד כבר נסגר ולכן לא הוחזר לקמפיין"
},
{
"phone": "12",
"success": false,
"error": "Missing or invalid phone"
}
]
}Find Lead
/api/make/leads/find/{teamId}Finds a lead by phone number or by the lead's ID in your own system.
- Rate limit:
- 300 requests / minute
- Used by:
- Make: Find Lead · Zapier: Find Lead
Parameters
teamIdstringrequiredYour Team ID.
phonestring· QueryAny format: 05..., 9725..., with or without dashes. Leave empty to search by External ID.
external_idstring· QueryThe lead's ID in your own system. If both fields are filled in, this one is used.
provider_idstring· QueryOptional, with
external_id: the source system the external ID belongs to, when the same ID exists in more than one.
Response
27 response fieldsShowHide
successbooleanAlways true on a 200.
foundbooleanFalse when no lead matches. “Not found” is a normal answer, not an error.
leadobjectThe lead, or null when not found.
lead.idstringLead ID
lead.external_idstringExternal ID
lead.customer_idstringCustomer ID
lead.campaign_idstringCampaign ID
lead.campaign_namestringCampaign Name
lead.list_idstringList ID
lead.list_namestringList Name
lead.first_namestringFirst Name
lead.last_namestringLast Name
lead.phonestringPhone
lead.alt_phonestringAlt Phone
lead.emailstringEmail
lead.citystringCity
lead.statusstringStatus
lead.status_reasonstringStatus Reason
lead.sourcestringSource
lead.assigned_user_idstringAssigned User ID
lead.assigned_user_namestringAssigned User Name
lead.next_attempt_atdatetimeNext Attempt At
lead.last_call_atdatetimeLast Call At
lead.no_answer_countnumberNo Answer Count
lead.created_atdatetimeCreated At
lead.updated_atdatetimeUpdated At
lead.custom_fieldsobjectCustom fields
- No match returns
200with{"success": true, "found": false, "lead": null}.
Errors
400Provide phone or external_id.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 GET "https://try.saleso.io/api/make/leads/find/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY"{
"success": true,
"found": true,
"lead": {
"id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"external_id": "crm-10482",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"campaign_name": "Website leads",
"list_id": "list-2041",
"list_name": "October import",
"first_name": "Dana",
"last_name": "Levi",
"phone": "0501234567",
"alt_phone": "0527654321",
"email": "dana@example.com",
"city": "Tel Aviv",
"status": "Interested",
"status_reason": "Asked for a quote",
"source": "facebook",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"assigned_user_name": "Noa Cohen",
"next_attempt_at": "2026-10-22T09:30:00.000Z",
"last_call_at": "2026-10-22T09:30:00.000Z",
"no_answer_count": 2,
"custom_fields": {
"budget": "50000"
},
"created_at": "2026-10-22T09:30:00.000Z",
"updated_at": "2026-10-22T09:30:00.000Z"
}
}Update Lead
/api/make/leads/update/{teamId}Updates a lead's status, assigned rep, callback date, campaign, or custom fields. Fields left empty are not changed.
- Used by:
- Make: Update Lead · Zapier: Update Lead
Parameters
teamIdstringrequiredYour Team ID.
lead_idstring· BodyrequiredThe Saleso lead ID. Only have a phone number? Add a Find Lead step first.
statusstring· BodyOptional. A status
valuefrom List Statuses. A status that has sub-statuses is rejected; send one of its children. Some statuses requirenext_attempt_atorstatus_reason.status_reasonstring· BodyOptional. Required by statuses whose
requires_reasonis true.assigned_user_idstring· BodyOptional. Reassign to a rep (a user ID from Get Team Members). An unknown ID does not fail the call: the rest of the update is applied and
agent_matchisunknown.campaign_idstring· BodyOptional. Moves the lead to this campaign.
Values from Get Active Campaigns.
next_attempt_atstring (ISO 8601 date-time)· BodyOptional. Callback date and time (ISO 8601).
custom_fieldsobject· BodyCustom lead field values, keyed by field key: an object (
{"budget": "50000"}) or an array of{key, value}pairs. Field keys come from List Lead Fields. Multiselect fields take an array or a comma-separated string.
Response
3 response fieldsShowHide
successbooleanSuccess
lead_idstringLead ID
agent_matchstringOnly when
assigned_user_idwas sent:matchedorunknown.
- Runs the same rules as a rep changing the lead in the dialer: status routing, required fields, do-not-call blocking, the lead timeline and the dialer webhook events.
Errors
400Missing required field: lead_id, invalid JSON.400The update was rejected: lead not found, a status that needs a callback date, reason or sub-status, or a lead another rep is handling. The message comes from the dialer and may be in Hebrew.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/update/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"status": "Interested",
"status_reason": "Asked for a quote",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"next_attempt_at": "2026-10-22T09:30:00.000Z",
"custom_fields": {
"budget": "50000"
}
}'{
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"agent_match": "matched"
}Add Comment to Lead
/api/make/leads/comment/{teamId}Adds a comment to a lead in the dialer.
- Used by:
- Make: Add New Comment · Zapier: Add Comment to Lead
Parameters
teamIdstringrequiredYour Team ID.
lead_idstring· BodyrequiredThe Saleso lead ID. Only have a phone number? Add a Find Lead step first.
commentstring· Bodyrequired
Response
2 response fieldsShowHide
successbooleanSuccess
lead_idstringLead ID
- A comment added through the API does not fire
dialer_new_comment, so a workflow that watches comments and adds comments cannot loop.
Errors
400Missing required field: lead_idorcomment, invalid JSON.404Lead not found.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/comment/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"comment": "Asked to call back after 5pm."
}'{
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181"
}Mark Lead as Done
/api/make/leads/mark-done/{teamId}Ends a lead's handling by applying a final status. Defaults to "נסגר" (Closed).
- Used by:
- Make: Mark Lead As Done · Zapier: Mark Lead as Done
Parameters
teamIdstringrequiredYour Team ID.
lead_idstring· BodyrequiredThe Saleso lead ID. Only have a phone number? Add a Find Lead step first.
statusstring· BodyThe final status to apply. Leave empty for "נסגר" (Closed). The status's team rules (e.g. do-not-call) apply as well.
Values from List Statuses.
Response
3 response fieldsShowHide
successbooleanSuccess
lead_idstringLead ID
statusstringStatus
Errors
400Missing required field: lead_id, invalid JSON.400The update was rejected: lead not found, a status that needs a callback date, reason or sub-status, or a lead another rep is handling. The message comes from the dialer and may be in Hebrew.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/mark-done/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"status": "Interested"
}'{
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"status": "Interested"
}Move Lead to Follow-Up
/api/make/leads/move-followup/{teamId}Moves a lead to a follow-up status, with an optional callback date and time.
- Used by:
- Make: Move To Followup · Zapier: Move Lead to Follow-Up
Parameters
teamIdstringrequiredYour Team ID.
lead_idstring· BodyrequiredThe Saleso lead ID. Only have a phone number? Add a Find Lead step first.
statusstring· BodyThe follow-up status to apply, exactly as named in Saleso. Leave empty for "מעקב" (Follow-up).
next_attempt_atstring (ISO 8601 date-time)· BodyOptional. When the lead should be called back.
Response
3 response fieldsShowHide
successbooleanSuccess
lead_idstringLead ID
statusstringStatus
Errors
400Missing required field: lead_id, invalid JSON.400The update was rejected: lead not found, a status that needs a callback date, reason or sub-status, or a lead another rep is handling. The message comes from the dialer and may be in Hebrew.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/move-followup/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"status": "Interested",
"next_attempt_at": "2026-10-22T09:30:00.000Z"
}'{
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"status": "Interested"
}Reset Lead to Pending
/api/make/leads/reset-pending/{teamId}Resets a lead to new, clearing its status and scheduled callback so it can be dialed again.
- Used by:
- Make: Reset To Pending · Zapier: Reset Lead to Pending
Parameters
teamIdstringrequiredYour Team ID.
lead_idstring· BodyrequiredThe Saleso lead ID. Only have a phone number? Add a Find Lead step first.
Response
2 response fieldsShowHide
successbooleanSuccess
lead_idstringLead ID
Errors
400Missing required field: lead_id, invalid JSON.400The update was rejected: lead not found, a status that needs a callback date, reason or sub-status, or a lead another rep is handling. The message comes from the dialer and may be in Hebrew.401The API key is missing, wrong, or belongs to another team (Invalid API key).500Unexpected server error. Theerrorfield carries the message.
curl -X POST "https://try.saleso.io/api/make/leads/reset-pending/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181"
}'{
"success": true,
"lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181"
}Get Open Leads
/api/make/leads/open/{teamId}Gets the open (active) leads in a campaign, one page at a time.
- Rate limit:
- 300 requests / minute
- Used by:
- Make: Get Open Leads · Zapier: Get Open Leads
Parameters
teamIdstringrequiredYour Team ID.
campaign_idstring· QueryrequiredValues from Get Active Campaigns.
limitinteger· QueryHow many leads to return, 1 to 500. Default 100.
Default:
100offsetinteger· QueryHow many leads to skip, for paging. Use 0 for the first page.
Default:
0
Response
26 response fieldsShowHide
leads[].idstringLead ID
leads[].external_idstringExternal ID
leads[].customer_idstringCustomer ID
leads[].campaign_idstringCampaign ID
leads[].campaign_namestringCampaign Name
leads[].list_idstringList ID
leads[].list_namestringList Name
leads[].first_namestringFirst Name
leads[].last_namestringLast Name
leads[].phonestringPhone
leads[].alt_phonestringAlt Phone
leads[].emailstringEmail
leads[].citystringCity
leads[].statusstringStatus
leads[].status_reasonstringStatus Reason
leads[].sourcestringSource
leads[].assigned_user_idstringAssigned User ID
leads[].assigned_user_namestringAssigned User Name
leads[].next_attempt_atdatetimeNext Attempt At
leads[].last_call_atdatetimeLast Call At
leads[].no_answer_countnumberNo Answer Count
leads[].created_atdatetimeCreated At
leads[].updated_atdatetimeUpdated At
leads[].custom_fieldsobjectCustom fields
successbooleanAlways true on a 200.
countintegerNumber of leads in this page.
- Sorted by last update, newest first. A full page means there may be more; an empty page means the end.
Errors
400Missing required query param: campaign_id.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 GET "https://try.saleso.io/api/make/leads/open/$SALESO_TEAM_ID?campaign_id=015fc401-4a09-4352-b538-0964b7fec075" \
-H "x-api-key: $SALESO_API_KEY"{
"leads": [
{
"id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"external_id": "crm-10482",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"campaign_name": "Website leads",
"list_id": "list-2041",
"list_name": "October import",
"first_name": "Dana",
"last_name": "Levi",
"phone": "0501234567",
"alt_phone": "0527654321",
"email": "dana@example.com",
"city": "Tel Aviv",
"status": "Interested",
"status_reason": "Asked for a quote",
"source": "facebook",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"assigned_user_name": "Noa Cohen",
"next_attempt_at": "2026-10-22T09:30:00.000Z",
"last_call_at": "2026-10-22T09:30:00.000Z",
"no_answer_count": 2,
"custom_fields": {
"budget": "50000"
},
"created_at": "2026-10-22T09:30:00.000Z",
"updated_at": "2026-10-22T09:30:00.000Z"
}
],
"success": true,
"count": 1
}Get Closed Leads
/api/make/leads/closed/{teamId}Gets the closed (final-status) leads in a campaign, one page at a time.
- Rate limit:
- 300 requests / minute
- Used by:
- Make: Get Closed Leads · Zapier: Get Closed Leads
Parameters
teamIdstringrequiredYour Team ID.
campaign_idstring· QueryrequiredValues from Get Active Campaigns.
limitinteger· QueryHow many leads to return, 1 to 500. Default 100.
Default:
100offsetinteger· QueryHow many leads to skip, for paging. Use 0 for the first page.
Default:
0
Response
26 response fieldsShowHide
leads[].idstringLead ID
leads[].external_idstringExternal ID
leads[].customer_idstringCustomer ID
leads[].campaign_idstringCampaign ID
leads[].campaign_namestringCampaign Name
leads[].list_idstringList ID
leads[].list_namestringList Name
leads[].first_namestringFirst Name
leads[].last_namestringLast Name
leads[].phonestringPhone
leads[].alt_phonestringAlt Phone
leads[].emailstringEmail
leads[].citystringCity
leads[].statusstringStatus
leads[].status_reasonstringStatus Reason
leads[].sourcestringSource
leads[].assigned_user_idstringAssigned User ID
leads[].assigned_user_namestringAssigned User Name
leads[].next_attempt_atdatetimeNext Attempt At
leads[].last_call_atdatetimeLast Call At
leads[].no_answer_countnumberNo Answer Count
leads[].created_atdatetimeCreated At
leads[].updated_atdatetimeUpdated At
leads[].custom_fieldsobjectCustom fields
successbooleanAlways true on a 200.
countintegerNumber of leads in this page.
- “Closed” means a status your team flagged as sale, not interested or do-not-call. Sorted by last update, newest first.
Errors
400Missing required query param: campaign_id.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 GET "https://try.saleso.io/api/make/leads/closed/$SALESO_TEAM_ID?campaign_id=015fc401-4a09-4352-b538-0964b7fec075" \
-H "x-api-key: $SALESO_API_KEY"{
"leads": [
{
"id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
"external_id": "crm-10482",
"customer_id": "8b258f8b-4228-40fa-8d24-5b16428e686d",
"campaign_id": "015fc401-4a09-4352-b538-0964b7fec075",
"campaign_name": "Website leads",
"list_id": "list-2041",
"list_name": "October import",
"first_name": "Dana",
"last_name": "Levi",
"phone": "0501234567",
"alt_phone": "0527654321",
"email": "dana@example.com",
"city": "Tel Aviv",
"status": "Interested",
"status_reason": "Asked for a quote",
"source": "facebook",
"assigned_user_id": "f554b8ba-54c4-43e4-abd9-77c75040fe59",
"assigned_user_name": "Noa Cohen",
"next_attempt_at": "2026-10-22T09:30:00.000Z",
"last_call_at": "2026-10-22T09:30:00.000Z",
"no_answer_count": 2,
"custom_fields": {
"budget": "50000"
},
"created_at": "2026-10-22T09:30:00.000Z",
"updated_at": "2026-10-22T09:30:00.000Z"
}
],
"success": true,
"count": 1
}List Lead Fields
/api/make/lead-fields/{teamId}Lists your team’s custom lead fields, so you can send custom_fields by key.
- Used by:
- Make and Zapier: custom field pickers
Parameters
teamIdstringrequiredYour Team ID.
Response
4 response fieldsShowHide
fields[].keystringThe key to use in
custom_fields.fields[].labelstringDisplay name.
fields[].typestringField type, e.g.
text,dateormultiselect.fields[].optionsarray of stringOnly for fields with fixed options.
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/lead-fields/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY"{
"fields": [
{
"key": "budget",
"label": "Budget",
"type": "text"
},
{
"key": "interests",
"label": "Interests",
"type": "multiselect",
"options": [
"Fleet",
"Leasing"
]
}
]
}List Statuses
/api/make/dispositions/{teamId}Lists your team’s lead statuses (dispositions) with the flags that decide how each one behaves.
- Used by:
- Make and Zapier: status pickers
Parameters
teamIdstringrequiredYour Team ID.
campaign_idstring· QueryOptional campaign UUID. Returns that campaign’s statuses plus the shared ones.
Response
14 response fieldsShowHide
successbooleanAlways true on a 200.
dispositions[].idstringStatus ID.
dispositions[].namestringDisplay name.
dispositions[].codestringOptional short code, or null.
dispositions[].valuestringWhat to send as
statusin lead actions.dispositions[].parent_idstringNull for a top-level status; otherwise the parent’s
id.dispositions[].has_childrenbooleanTrue when the status has sub-statuses. Send a child’s
valueinstead.dispositions[].is_salebooleanCounts as a sale (closed).
dispositions[].is_not_interestedbooleanCounts as not interested (closed).
dispositions[].is_callbackbooleanA follow-up status.
dispositions[].is_dncbooleanAdds the number to the do-not-call list.
dispositions[].requires_notebooleanApplying it needs a note.
dispositions[].requires_callback_datebooleanApplying it needs
next_attempt_at.dispositions[].requires_reasonbooleanApplying it needs
status_reason.
- Hidden (retired) statuses are not returned.
Errors
400campaign_id must be a UUID.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/dispositions/$SALESO_TEAM_ID" \
-H "x-api-key: $SALESO_API_KEY"{
"success": true,
"dispositions": [
{
"id": "6a1f3c2e-9b4d-4e8a-a1c7-2f5d8e0b9c13",
"name": "Interested",
"code": null,
"value": "Interested",
"parent_id": null,
"has_children": false,
"is_sale": false,
"is_not_interested": false,
"is_callback": true,
"is_dnc": false,
"requires_note": false,
"requires_callback_date": true,
"requires_reason": false
}
]
}