Choose how you connect
REST API
JSON over HTTPS. Best for backend jobs, data sync and your own product.
MCP server
Ask Claude or another assistant to read and change your Salesfinity data.
OpenAPI description
Every operation, typed. Generate a client or feed it to your tools.
Quickstart: make your first call
1
Get an API key
- In Salesfinity, open Settings → Connections, then the API & Webhooks tab.
- Click Create New API Key.
- Copy the key and store it in your secret manager. Treat it like a password: the dashboard shows it only once. If you lose it, create a new one.
2
Make your first call
Every request sends the key in the
x-api-key header. The cheapest way to test a key is to
read the team it belongs to.3
Check the response
A working key returns your team under
data, with each member’s user record. Keep the member
user._id values: writes that act as a person, such as creating a list or writing a note,
take one as user_id.A missing or wrong key returns 403 with a JSON body, not an HTML page:You’re done when
GET /v1/team returns your team name and its members. Next, list your contact
lists with
GET /v1/contact-lists/csv.Keys are long-lived and do not expire on a schedule. Rotate a key from the same settings screen
when someone with access leaves, or if a key is ever committed to source control.
What you can build
Each card links to the operation or guide that does the job.Load lists from your own data
Create a contact list from your warehouse or CRM export. Creating it also fills its dialing queue.
Sync call outcomes to your warehouse
Page through call logs with date and rep filters, and keep your reporting up to date.
Get calls and replies pushed to you
Webhooks POST call, snooze and Sequencer events to your server as they happen.
Find a phone or email from your app
Start a lookup for a LinkedIn profile and get the result by callback or by polling.
Run sequences from your system
Build a cadence, enroll people and work the task queue end to end. Sequencer is in early access.
Report on your team in Claude
Connect the MCP server and ask questions about calls, reps and lists in plain language.
Build the client
There is no official Salesfinity SDK. The API is fully described by an OpenAPI document, so you can write a thin client by hand or generate one.Generate a client from the OpenAPI description
The description is at/api-reference/openapi.json. Every operation
has a unique operationId, which becomes the method name in most generators.
Conventions worth encoding once
Retries
Retry on 429 and 5xx with exponential backoff and jitter. On a 429, wait at least the number of seconds in theRetry-After header. Do not retry 400, 402, 403, 404, 413 or
422 — none of them succeed on a second identical attempt. Allow at least 60 seconds before
timing out a request: a Sequencer call can take up to 55 seconds before the API answers 504.
Outside the Sequencer, POST endpoints are not idempotent, so cap retries and confirm state with a
GET before retrying a create. Sequencer writes (POST /v2/sequencer/*, except the /preview
endpoints) accept an Idempotency-Key header that makes a retry safe. A write that fails frees its
key, so after a 5xx on a create, check with a GET before retrying. See
Retrying writes safely.
Rate limits
Limits are per team: every API key on the team shares them. Per minute, the Sequencer allows 600 reads and 300 writes, the heavy reporting reads (the call-log and scored-call lists, analytics, and CRM sequences) allow 120, and everything else allows 1200. Every authenticated response carriesX-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, so a bulk job can pace itself
instead of waiting for a 429. See Rate limits for the
routes in each bucket.
Test safely
There is no separate sandbox host.https://client-api.salesfinity.co is the only public API
host, and it works on live data. Build your test plan around that.
Start read-only
Start read-only
GET /v1/team, GET /v1/dispositions, GET /v1/custom-fields and the analytics endpoints
have no side effects. They still count toward the rate limits,
and analytics shares the 120-per-minute heavy-reads budget.Use a test team and a throwaway list
Use a test team and a throwaway list
Generate a key for a team that is not actively dialing, so writes cannot disturb a live queue.
Creating a contact list gives you an isolated target for
add, remove and merge calls that you can
delete afterwards.
Know which writes reach the dialer
Know which writes reach the dialer
Creating a list also creates its dialing queue with the contacts you send.
Reimporting a list replaces its dialing queue with
its saved contacts. Deleting a list deletes its dialing queue, and so does merging with
delete_sources for each source list. Adding, removing and merging contacts change only the
saved list, which reaches the dialing queue at the next reimport.Know which writes send email
Know which writes send email
A Sequencer sequence is created disabled. Enabling it starts the cadence for everyone enrolled,
and its email steps send real email from your team’s mailboxes. The three
/preview endpoints
change nothing, so use them to check an enrollment, a rule set or a template first.Point enrichment callbacks somewhere disposable
Point enrichment callbacks somewhere disposable
Set the enrichment
callback_url to a test endpoint while developing, so results are not
POSTed at a production handler. It must be a public http or https URL: localhost and
private, loopback or link-local IP addresses are rejected with 400. Expose a local handler
through a tunnel or use a request-inspection service.Receive events
Webhooks push call, snooze and Sequencer events to your server as they happen, so you do not have to poll. Create a subscription in the dashboard under Settings → Connections → API & Webhooks. Every delivery carries anx-salesfinity-event-id that stays the same across
retries, so make your receiver skip IDs it has already processed. The events, payload shape and
delivery rules are in Webhooks.
Build with the Sequencer API
The Sequencer API runs outreach end to end: sequences, steps, templates, enrollments, tasks, suppression and rules of engagement. The Sequencer is in early access, so check the changelog for changes that can affect an integration. Start with Run a sequence over the API.Machine-readable resources
The server card describes a server for searching these docs. The Salesfinity MCP server, which
works with your team’s data, is at
https://mcp.salesfinity.ai/mcp; its tools are listed in the
MCP tool reference.
Every documentation page is also available as Markdown. Append .md to the URL, or send an
Accept: text/markdown request header:
Get help
Email [email protected] or visit the help center. When you report an API problem, include therequest_id from the error body (or the X-Request-Id response header), the request path, the
timestamp, and the error and statusCode. Never include your API key.
Next steps
Read the API reference
Authentication, pagination, webhooks and every operation in one place.
Handle errors and retries
What each status means and what your client should do about it.
Connect Claude to Salesfinity
Let an assistant read and change your data through the MCP server.
Run a sequence over the API
Create a cadence, enroll people and work the tasks it makes.