Skip to main content
Everything you need to go from zero to a working Salesfinity integration: getting a key, making your first authenticated call, testing without disturbing live dialing, handling errors and retries, and the machine-readable files your tools can consume directly.

Generate an API key

Dashboard → Settings → Connections & API

OpenAPI description

OpenAPI 3.0.1, 35 operations, typed responses

Error reference

The JSON error envelope and what to do about each status

MCP server

Hosted MCP endpoint for AI assistants

1. Get an API key

  1. Open the Salesfinity dashboard and go to Settings → Connections & API.
  2. Generate a new API key.
  3. Copy it immediately and store it in your secret manager. Treat it like a password.
A key is scoped to a single team. Every request made with it sees only that team’s contact lists, call logs, and analytics. There is no account-wide or cross-team key, so an integration serving several teams needs one key per team.
Keys are long-lived and do not expire on a schedule. Rotate them from the same settings screen when someone with access leaves, or if a key is ever committed to source control.

2. Make your first call

Every endpoint authenticates with the x-api-key request header. The cheapest way to verify a key is to read the team it belongs to.
If the key is missing or invalid you get HTTP 403 and a JSON body, not an HTML error page:

3. Build the client

There is no official Salesfinity SDK. The API is small, uniform, and fully described by an OpenAPI document, so the two supported paths are a thin hand-written client or a generated one.

Generate a client from the OpenAPI description

The description at /api-reference/openapi.json is also served at /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. Do not retry 400, 402, 403, or 404 — none of them succeed on a second identical attempt. POST endpoints are not idempotent, so cap retries and confirm state with a GET before retrying a create. Salesfinity does not currently publish a fixed request quota. Build the 429 path anyway and keep concurrency modest.

4. Test safely

There is no separate sandbox host. https://client-api.salesfinity.co is the only public API host, and it operates on live data, so build your test plan around that:
  • Start read-only. GET /v1/team, GET /v1/dispositions, GET /v1/custom-fields, and the analytics endpoints have no side effects and are safe to hammer during development.
  • Use a dedicated test team. Generate a key for a team that is not actively dialing, so writes cannot disturb a live queue.
  • Use a throwaway contact list. Create a List gives you an isolated target for add, remove, and merge calls that you can delete afterwards.
  • Know which writes reach the dialer. Add a Contact to a List puts the contact into the dialing queue immediately, and Reimport Contacts pushes a whole list into it. Everything else is safe to exercise against a test list.
  • Point the enrichment callback_url somewhere disposable while developing, so test results are not POSTed at a production handler.
Enrichment endpoints spend real credits. POST /v1/api/enrichment/email consumes a credit per lookup, and returns 402 Payment Required when the team’s balance reaches zero. Check Get Enrichment Credits before a bulk run.

5. Pick an integration surface

REST API

35 operations for full programmatic control. Best for backend integrations and data sync.

MCP server

Hosted at https://mcp.salesfinity.ai/mcp. Best for AI assistants and internal tooling.

Use cases

Worked examples for managers, reps, and shared workflows.

Machine-readable resources

Every documentation page is also available as Markdown — append .md to the URL, or send an Accept: text/markdown request header:

Support

Include the request path, the timestamp, and the error and statusCode from the response body when reporting an API problem. Never include your API key.