API review

Salesloft API review

Enterprise sales engagement platform (cadences, dialer, conversations, deals) with a REST API v2 (~215 endpoints), customer API keys or OAuth apps, a team-wide cost-based rate limit, async bulk upsert jobs, signed webhooks and an official read-only MCP server for Agent-package customers; sales-quoted pricing. Best for integrating with a customer's Salesloft team: people, accounts, cadences, cadence memberships, steps/actions, calls, notes, meetings, conversations.

Verified 25 Oct 2026 · 215 endpoints listed · Official MCP server

Rate limits

Cost-based, per TEAM (shared by all integrations on that team): 600 cost points per minute, default cost 1 per request.

More on limitsLess

Page parameter beyond 100 costs extra: 101-150 = 3, 151-250 = 8, 251-500 = 10, 501+ = 30 points. Headers x-ratelimit-endpoint-cost and x-ratelimit-remaining-minute. Salesloft can adjust per customer/team. MCP server calls route through the API and count against the same limits.

How to get an API key

Salesloft uses OAuth. The steps below follow Salesloft's own docs.

  1. Create a Salesloft account.
  2. Customers: Your Applications -> API Keys -> Create New, pick scopes (keys look like ak_ + 64 hex, act as the issuing user). Partners: create an OAuth app (Authorization Code) or, for private admin use, Client Credentials.
  3. Send it with every request: header: Authorization: Bearer <token>.
  4. Make a first call: List all owned cadences, Cadences are user defined engines to run their outbound process. Keep the key in an environment variable, never in the command.
    curl -X GET "https://api.salesloft.com/public_api/v1/cadences" \
      -H "Authorization: Bearer $SALESLOFT_ACCESS_TOKEN"

Where the docs live

WhatWhere
Documentationdevelopers.salesloft.com/docs/platform/intro
API referencedevelopers.salesloft.com/docs/api
Base URLhttps://api.salesloft.com
MCP serverhttps://mcp.salesloft.com/mcp

Strengths and limits

Where it fits

  • Integrating with a customer's Salesloft team: people, accounts, cadences, cadence memberships, steps/actions, calls, notes, meetings, conversations
  • Signed (HMAC-SHA1) webhooks on 37 event types incl. cadence membership, meeting booked, conversation transcript
  • Async bulk upserts of people/accounts/calendar events via bulk jobs
  • Third-party dialer integrations (Voice Links, call data records)

Where it falls short

  • Self-serve cold email at volume: no public pricing, demo only
  • Partner apps on API keys: partner apps must use OAuth or will not be approved
  • Deep page-number pagination: pages past 100 cost 3-30 rate-limit points each; use an updated_at cursor
  • AI agents that need to write: the official MCP server is read-only (no updates, writes or deletes, no cadence data) and only included with Salesloft Agent packages

Worth knowing

  • Rate limit is per TEAM, not per integration: every connected app shares the same 600 points/min.
  • High page numbers are surcharged (page 501+ costs 30 points); poll with an updated_at cursor instead.
  • Out-of-range per_page/page values are silently reset to defaults instead of erroring.
  • API keys are customer-only; partner apps submitted on API keys are rejected.
  • Client Credentials apps cannot be allowlisted and run with the creating admin's permissions.
9 moreShow fewer
  • Only one bulk job runs at a time per tenant and the queue is shared with teammates; results deleted after 30 days.
  • Webhook retries are short: 3 retries 15 s apart, then failed; a brief outage loses events.
  • Action/step details are only supported for phone-type actions.
  • Turning on Voice Links releases all existing Salesloft phone numbers.
  • Request parameters are rendered client-side on the reference pages, so static downloads carry only method, path and description.
  • The official MCP server is read-only, beta, excludes cadences, needs an admin toggle, and is only included with Salesloft Agent packages.
  • MCP queries are ordinary API calls and spend the same team-wide 600 points/min as every other integration.
  • email_contents is a privileged scope (needed for the email_with_body_and_subject_updated webhook), not an event type.
  • Voice Links and dialer webhooks are switched on per customer by their customer success manager, not self-serve.

Who should use it

Use Salesloft for
Integrating with a customer's Salesloft team: people, accounts, cadences, cadence memberships, steps/actions, calls, notes, meetings, conversations
Look elsewhere for
Self-serve cold email at volume: no public pricing, demo only

If Salesloft is not the answer

Other Email sending tools in this directory, each with its own review.

Before you build

Three things to settle first, each read off Salesloft's own pages.

  • Keep the key out of your codeOAuth. It is sent as: header: Authorization: Bearer <token>.
  • Design around the rate limitCost-based, per TEAM (shared by all integrations on that team): 600 cost points per minute, default cost 1 per request.
  • Know the catch before you scaleRate limit is per TEAM, not per integration: every connected app shares the same 600 points/min.

Want us to build it for you?

Tell us what you want Salesloft to do in your stack. We will show you how we would wire it into your data, outbound or CRM, and what we would check first.

Read from salesloft.com/pricing, developers.salesloft.com/docs/api and developers.salesloft.com/docs/platform/api-basics/rate-limits. Verified 25 Oct 2026.

All 215 endpointsFor developers: method, path, what it does and what it costs.

Base URL: https://api.salesloft.com

Bulk and async: Bulk jobs (account/upsert, person/upsert, calendar/events/upsert) run async, ONE job at a time per tenant, shared team queue, not for time-sensitive work; row results deleted after 30 days.

Webhooks: Events: account_created, account_deleted, account_updated, bulk_job_completed, cadence_created, cadence_deleted, cadence_membership_created, cadence_membership_updated, cadence_updated, call_created, call_data_record_created, call_data_record_updated and 25 more. Retries: Failing webhook retried 3 more times, 15 seconds apart, then marked failed. Payload signed with x-salesloft-signature (HMAC-SHA1 hex).

215 endpoints
MethodPathWhat it doesCost
GET/public_api/v1/cadencesList all owned cadences, Cadences are user defined engines to run their outbound process.Not stated
GET/public_api/v1/callsList all account calls, A call is the data recording the results of a phone interaction with a person.Not stated
POST/public_api/v1/companiesCreate a single company, Companies are unique across a team, so any companies you add will be visible to the entire team.Not stated
GET/public_api/v1/companies/:idFetches a single company, A Company can be looked up by id or domain. Companies are unique by domain across a team, so any edits you make to a Company will be visible to every user on the team. IDs will never change.Not stated
PUT/public_api/v1/companies/:idUpdates a single company, A company can be looked up by id or domain. Companies are unique across teams, so any edits you make to a company will be visible to every user on the team. IDs will never change.Not stated
GET/public_api/v1/meFetches information about a User, User information which can be used to create an account in an integrating system.Not stated
GET/public_api/v1/custom_fieldsList all team custom fields, Custom Fields are used to add additional information to people. They are simple key/value pairs stored on a Person.Not stated
POST/public_api/v1/peopleCreate a single person, People are unique by email address across a team, so any people you add will be visible to the entire team.Not stated
GET/public_api/v1/people/:idFetches a single person, A person can be looked up by id or email. People are unique by email address across a team, so any edits you make to a person will be visible to every user on the team. IDs will never change.Not stated
PUT/public_api/v1/people/:idUpdates a single person, A person can be looked up by id or email. People are unique by email address across a team, so any edits you make to a person will be visible to every user on the team. IDs will never change.Not stated
POST/public_api/v1/people/:person_id/cadence_membershipsAdd a person to a cadenceNot stated
GET/public_api/v1/people/:person_id/cadence_membershipsList all cadences for a person, Results are ordered by cadence_id ASC.Not stated
GET/public_api/v1/successesList all account successes, A success is recorded manually by a user when they take an action that they classify as successful. This could be reaching a prospect, getting a demo, etc. It is important to understand how success isNot stated
GET/public_api/v1/tagsList all tags, Tags are used to organize different entities in the system. Tags are added to a specific entity through the endpoints for that entity.Not stated
GET/v2/account_stagesList account stages, Fetches multiple account stage records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/account_stages/:idFetch an account stage, Fetches an account stage, by ID only.Not stated
GET/v2/account_team_member_rolesList CRM Account Team Member Roles, Fetches multiple CRM Account Team Member Role records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/account_tiersList Account Tiers, Fetches multiple account tier records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/account_tiers/:idFetch an account tier, Fetches an account tier, by ID only.Not stated
GET/v2/account_typesList distinct account types, Fetches distinct account types for the team to be used in filter selections. Returns an array of unique account type values that exist in the team's companies. This endpoint respects user permissionsNot stated
POST/v2/account_upsertsUpsert an account, Upserts an account record. The upsert_key dictates how the upsert will be performed. The create and update behavior is exactly the same as the individual create and update endpoints.Not stated
POST/v2/accountsCreate an account, Creates an account.Not stated
DELETE/v2/accounts/:idDelete an account, Deletes an account. This operation is not reversible without contacting support. This operation can be called multiple times successfully.Not stated
GET/v2/accountsList accounts, Fetches multiple account records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/accounts/:idFetch an account, Fetches an account, by ID only.Not stated
PUT/v2/accounts/:idUpdate an existing Account, Updates an account.Not stated
GET/v2/action_details/call_instructionsList call instructions, Fetches multiple call instruction records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/action_details/call_instructions/:idFetch a call instructions, Fetches a call instruction, by ID only.Not stated
GET/v2/actionsList actions, Fetches multiple action records. The records can be filtered, paged, and sorted according to the respective parameters. Only actions that are currently "in_progess" will be returned by this endpoint.Not stated
GET/v2/actions/:idFetch an action, Fetches an action, by ID only. This endpoint will only return actions that are in_progress or pending_activity. Once an action is complete, the request for that action will return a 404 status code.Not stated
POST/v2/activities/callsCreate a call, Creates a call. The parameters of this endpoint can be used to create an action and ensure that the CRM Task is mapped correctly.Not stated
GET/v2/activities/callsList calls, Fetches multiple call records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/activities/calls/:idFetch a call, Fetches a call, by ID only.Not stated
POST/v2/activitiesCreate an activity, Creates an activity. An activity will mark the associated action as completed. Currently, only certain action types can have an activity explicitly created for them.Not stated
GET/v2/activities/emailsList emails, Fetches multiple email records. The records can be filtered, paged, and sorted according to the respective parameters.Not stated
GET/v2/activities/emails/:idFetch an email, Fetches an email, by ID only.Not stated
GET/v2/activity_historiesList Past Activities, Fetches all of the customer's past activities for your application. Returns all the Activities that are found on the Salesloft Activity Feed.Not stated
POST/v2/audit_reportsCreate a new audit report, Creates a request for a new audit report.Not stated
GET/v2/audit_reportsList generated audit reports, Returns all reports that have been requested by user's tenant_id, paged by 25 recordsNot stated
GET/v2/audit_reports/:idFetch an audit report, Fetch an audit report by ID.Not stated