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

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

POST/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

  • teamIdstringrequired

    Your Team ID.

  • phonestring· Bodyrequired

    Required. Any format; normalized to the Israeli national format (+972 50-123-4567 becomes 0501234567). At least 7 digits.

  • first_namestring· Body
  • last_namestring· Body
  • emailstring· Body
  • sourcestring· Body

    Where the lead came from (e.g. facebook, google, website). Free text.

  • campaign_idstring· Bodyrequired

    Required. An active campaign ID from Get Active Campaigns.

  • list_idstring· Body

    Optional. 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· Body

    Optional. 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· Body

    Custom 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· Body

    Set to true only 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: false

  • agent_idstring· Body

    Alternative to assigned_user_id: the rep’s ID in your own CRM, translated through the agent mappings in Saleso. assigned_user_id wins when both are sent. An unknown ID still creates the lead, unassigned.

  • agent_systemstring· Body

    Which system agent_id belongs to. Defaults to the generic crm mapping.

Response

7 response fieldsShow
  • successboolean

    Success

  • leadIdstring

    The Saleso lead ID. Note the camelCase key on this endpoint.

  • assigned_user_idstring

    Only when a rep was sent: the rep the lead was assigned to, or null.

  • agent_matchstring

    Only when a rep was sent: matched, unknown (lead created unassigned, manager alerted) or ambiguous.

  • duplicateboolean

    True when a lead with this phone already existed. Not an error: the existing lead is updated and its ID returned.

  • duplicate_actionstring

    Only on duplicates. move (joined the requested campaign) or skip (stayed where it was, e.g. already closed).

  • duplicate_reasonstring

    Only on duplicates. Human-readable reason, currently in Hebrew.

  • Creating a lead fires the dialer_lead_created webhook event with created_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. The error field carries the message.
Request
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"
  }
}'
Response · 200
{
  "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

POST/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

  • teamIdstringrequired

    Your Team ID.

  • campaign_idstring· Bodyrequired
  • list_idstring· Body

    Optional. 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· Body

    Leave 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: false

  • leadsarray of objects· Bodyrequired

    Required. 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 of leads.

    • ↳ phonestringrequired
    • ↳ first_namestring
    • ↳ last_namestring
    • ↳ emailstring
    • ↳ sourcestring
    • ↳ assigned_user_idstring

      Optional. The rep who handles this lead. An unrecognized ID still creates the lead, unassigned, and alerts the manager.

      Values from Get Team Members.

    • ↳ custom_fieldsobject

      Custom 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 fieldsShow
  • successboolean

    Success

  • creatednumber

    Rows that succeeded, including duplicates.

  • duplicatesnumber

    Rows whose phone already belonged to a lead.

  • failednumber

    Rows that were rejected.

  • results[].phonestring

    Phone

  • results[].successboolean

    Success

  • results[].lead_idstring

    Lead ID

  • results[].errorstring

    Only on failed rows.

  • results[].agent_matchstring

    Only when the row named a rep: matched, unknown or ambiguous.

  • results[].duplicateboolean

    Already Existed

  • results[].duplicate_actionstring

    Only on duplicates: move (joined this campaign) or skip (stayed where it was, e.g. already closed).

  • results[].duplicate_reasonstring

    Only on duplicates. Human-readable reason, currently in Hebrew.

  • The response is 200 even when some rows fail: check failed and each row’s success and error.

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. The error field carries the message.
Request
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"
      }
    }
  ]
}'
Response · 200
{
  "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

GET/api/make/leads/find/{teamId}

Finds a lead by phone number or by the lead's ID in your own system.

Used by:
Make: Find Lead · Zapier: Find Lead

Parameters

  • teamIdstringrequired

    Your Team ID.

  • phonestring· Query

    Any format: 05..., 9725..., with or without dashes. Leave empty to search by External ID.

  • external_idstring· Query

    The lead's ID in your own system. If both fields are filled in, this one is used.

  • provider_idstring· Query

    Optional, with external_id: the source system the external ID belongs to, when the same ID exists in more than one.

Response

27 response fieldsShow
  • successboolean

    Always true on a 200.

  • foundboolean

    False when no lead matches. “Not found” is a normal answer, not an error.

  • leadobject

    The lead, or null when not found.

  • lead.idstring

    Lead ID

  • lead.external_idstring

    External ID

  • lead.customer_idstring

    Customer ID

  • lead.campaign_idstring

    Campaign ID

  • lead.campaign_namestring

    Campaign Name

  • lead.list_idstring

    List ID

  • lead.list_namestring

    List Name

  • lead.first_namestring

    First Name

  • lead.last_namestring

    Last Name

  • lead.phonestring

    Phone

  • lead.alt_phonestring

    Alt Phone

  • lead.emailstring

    Email

  • lead.citystring

    City

  • lead.statusstring

    Status

  • lead.status_reasonstring

    Status Reason

  • lead.sourcestring

    Source

  • lead.assigned_user_idstring

    Assigned User ID

  • lead.assigned_user_namestring

    Assigned User Name

  • lead.next_attempt_atdatetime

    Next Attempt At

  • lead.last_call_atdatetime

    Last Call At

  • lead.no_answer_countnumber

    No Answer Count

  • lead.created_atdatetime

    Created At

  • lead.updated_atdatetime

    Updated At

  • lead.custom_fieldsobject

    Custom fields

  • No match returns 200 with {"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 the Retry-After seconds (60).
  • 500Unexpected server error. The error field carries the message.
Request
curl -X GET "https://try.saleso.io/api/make/leads/find/$SALESO_TEAM_ID" \
  -H "x-api-key: $SALESO_API_KEY"
Response · 200
{
  "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

POST/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

  • teamIdstringrequired

    Your Team ID.

  • lead_idstring· Bodyrequired

    The Saleso lead ID. Only have a phone number? Add a Find Lead step first.

  • statusstring· Body

    Optional. A status value from List Statuses. A status that has sub-statuses is rejected; send one of its children. Some statuses require next_attempt_at or status_reason.

  • status_reasonstring· Body

    Optional. Required by statuses whose requires_reason is true.

  • assigned_user_idstring· Body

    Optional. 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_match is unknown.

  • campaign_idstring· Body

    Optional. Moves the lead to this campaign.

    Values from Get Active Campaigns.

  • next_attempt_atstring (ISO 8601 date-time)· Body

    Optional. Callback date and time (ISO 8601).

  • custom_fieldsobject· Body

    Custom 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 fieldsShow
  • successboolean

    Success

  • lead_idstring

    Lead ID

  • agent_matchstring

    Only when assigned_user_id was sent: matched or unknown.

  • 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. The error field carries the message.
Request
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"
  }
}'
Response · 200
{
  "success": true,
  "lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
  "agent_match": "matched"
}

Add Comment to Lead

POST/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

  • teamIdstringrequired

    Your Team ID.

  • lead_idstring· Bodyrequired

    The Saleso lead ID. Only have a phone number? Add a Find Lead step first.

  • commentstring· Bodyrequired

Response

2 response fieldsShow
  • successboolean

    Success

  • lead_idstring

    Lead 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_id or comment, invalid JSON.
  • 404Lead not found.
  • 401The API key is missing, wrong, or belongs to another team (Invalid API key).
  • 500Unexpected server error. The error field carries the message.
Request
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."
}'
Response · 200
{
  "success": true,
  "lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181"
}

Mark Lead as Done

POST/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

  • teamIdstringrequired

    Your Team ID.

  • lead_idstring· Bodyrequired

    The Saleso lead ID. Only have a phone number? Add a Find Lead step first.

  • statusstring· Body

    The 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 fieldsShow
  • successboolean

    Success

  • lead_idstring

    Lead ID

  • statusstring

    Status

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. The error field carries the message.
Request
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"
}'
Response · 200
{
  "success": true,
  "lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
  "status": "Interested"
}

Move Lead to Follow-Up

POST/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

  • teamIdstringrequired

    Your Team ID.

  • lead_idstring· Bodyrequired

    The Saleso lead ID. Only have a phone number? Add a Find Lead step first.

  • statusstring· Body

    The follow-up status to apply, exactly as named in Saleso. Leave empty for "מעקב" (Follow-up).

  • next_attempt_atstring (ISO 8601 date-time)· Body

    Optional. When the lead should be called back.

Response

3 response fieldsShow
  • successboolean

    Success

  • lead_idstring

    Lead ID

  • statusstring

    Status

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. The error field carries the message.
Request
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"
}'
Response · 200
{
  "success": true,
  "lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181",
  "status": "Interested"
}

Reset Lead to Pending

POST/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

  • teamIdstringrequired

    Your Team ID.

  • lead_idstring· Bodyrequired

    The Saleso lead ID. Only have a phone number? Add a Find Lead step first.

Response

2 response fieldsShow
  • successboolean

    Success

  • lead_idstring

    Lead 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. The error field carries the message.
Request
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"
}'
Response · 200
{
  "success": true,
  "lead_id": "7453302d-1c28-4a82-9f7a-dde4b8fd0181"
}

Get Open Leads

GET/api/make/leads/open/{teamId}

Gets the open (active) leads in a campaign, one page at a time.

Used by:
Make: Get Open Leads · Zapier: Get Open Leads

Parameters

  • teamIdstringrequired

    Your Team ID.

  • campaign_idstring· Queryrequired
  • limitinteger· Query

    How many leads to return, 1 to 500. Default 100.

    Default: 100

  • offsetinteger· Query

    How many leads to skip, for paging. Use 0 for the first page.

    Default: 0

Response

26 response fieldsShow
  • leads[].idstring

    Lead ID

  • leads[].external_idstring

    External ID

  • leads[].customer_idstring

    Customer ID

  • leads[].campaign_idstring

    Campaign ID

  • leads[].campaign_namestring

    Campaign Name

  • leads[].list_idstring

    List ID

  • leads[].list_namestring

    List Name

  • leads[].first_namestring

    First Name

  • leads[].last_namestring

    Last Name

  • leads[].phonestring

    Phone

  • leads[].alt_phonestring

    Alt Phone

  • leads[].emailstring

    Email

  • leads[].citystring

    City

  • leads[].statusstring

    Status

  • leads[].status_reasonstring

    Status Reason

  • leads[].sourcestring

    Source

  • leads[].assigned_user_idstring

    Assigned User ID

  • leads[].assigned_user_namestring

    Assigned User Name

  • leads[].next_attempt_atdatetime

    Next Attempt At

  • leads[].last_call_atdatetime

    Last Call At

  • leads[].no_answer_countnumber

    No Answer Count

  • leads[].created_atdatetime

    Created At

  • leads[].updated_atdatetime

    Updated At

  • leads[].custom_fieldsobject

    Custom fields

  • successboolean

    Always true on a 200.

  • countinteger

    Number 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 the Retry-After seconds (60).
  • 500Unexpected server error. The error field carries the message.
Request
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"
Response · 200
{
  "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

GET/api/make/leads/closed/{teamId}

Gets the closed (final-status) leads in a campaign, one page at a time.

Used by:
Make: Get Closed Leads · Zapier: Get Closed Leads

Parameters

  • teamIdstringrequired

    Your Team ID.

  • campaign_idstring· Queryrequired
  • limitinteger· Query

    How many leads to return, 1 to 500. Default 100.

    Default: 100

  • offsetinteger· Query

    How many leads to skip, for paging. Use 0 for the first page.

    Default: 0

Response

26 response fieldsShow
  • leads[].idstring

    Lead ID

  • leads[].external_idstring

    External ID

  • leads[].customer_idstring

    Customer ID

  • leads[].campaign_idstring

    Campaign ID

  • leads[].campaign_namestring

    Campaign Name

  • leads[].list_idstring

    List ID

  • leads[].list_namestring

    List Name

  • leads[].first_namestring

    First Name

  • leads[].last_namestring

    Last Name

  • leads[].phonestring

    Phone

  • leads[].alt_phonestring

    Alt Phone

  • leads[].emailstring

    Email

  • leads[].citystring

    City

  • leads[].statusstring

    Status

  • leads[].status_reasonstring

    Status Reason

  • leads[].sourcestring

    Source

  • leads[].assigned_user_idstring

    Assigned User ID

  • leads[].assigned_user_namestring

    Assigned User Name

  • leads[].next_attempt_atdatetime

    Next Attempt At

  • leads[].last_call_atdatetime

    Last Call At

  • leads[].no_answer_countnumber

    No Answer Count

  • leads[].created_atdatetime

    Created At

  • leads[].updated_atdatetime

    Updated At

  • leads[].custom_fieldsobject

    Custom fields

  • successboolean

    Always true on a 200.

  • countinteger

    Number 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 the Retry-After seconds (60).
  • 500Unexpected server error. The error field carries the message.
Request
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"
Response · 200
{
  "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

GET/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

  • teamIdstringrequired

    Your Team ID.

Response

4 response fieldsShow
  • fields[].keystring

    The key to use in custom_fields.

  • fields[].labelstring

    Display name.

  • fields[].typestring

    Field type, e.g. text, date or multiselect.

  • fields[].optionsarray of string

    Only for fields with fixed options.

Errors

  • 401The API key is missing, wrong, or belongs to another team (Invalid API key).
  • 500Unexpected server error. The error field carries the message.
Request
curl -X GET "https://try.saleso.io/api/make/lead-fields/$SALESO_TEAM_ID" \
  -H "x-api-key: $SALESO_API_KEY"
Response · 200
{
  "fields": [
    {
      "key": "budget",
      "label": "Budget",
      "type": "text"
    },
    {
      "key": "interests",
      "label": "Interests",
      "type": "multiselect",
      "options": [
        "Fleet",
        "Leasing"
      ]
    }
  ]
}

List Statuses

GET/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

  • teamIdstringrequired

    Your Team ID.

  • campaign_idstring· Query

    Optional campaign UUID. Returns that campaign’s statuses plus the shared ones.

Response

14 response fieldsShow
  • successboolean

    Always true on a 200.

  • dispositions[].idstring

    Status ID.

  • dispositions[].namestring

    Display name.

  • dispositions[].codestring

    Optional short code, or null.

  • dispositions[].valuestring

    What to send as status in lead actions.

  • dispositions[].parent_idstring

    Null for a top-level status; otherwise the parent’s id.

  • dispositions[].has_childrenboolean

    True when the status has sub-statuses. Send a child’s value instead.

  • dispositions[].is_saleboolean

    Counts as a sale (closed).

  • dispositions[].is_not_interestedboolean

    Counts as not interested (closed).

  • dispositions[].is_callbackboolean

    A follow-up status.

  • dispositions[].is_dncboolean

    Adds the number to the do-not-call list.

  • dispositions[].requires_noteboolean

    Applying it needs a note.

  • dispositions[].requires_callback_dateboolean

    Applying it needs next_attempt_at.

  • dispositions[].requires_reasonboolean

    Applying 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. The error field carries the message.
Request
curl -X GET "https://try.saleso.io/api/make/dispositions/$SALESO_TEAM_ID" \
  -H "x-api-key: $SALESO_API_KEY"
Response · 200
{
  "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
    }
  ]
}