Sales Engine
API documentation
Getting started

Sales Engine API

Every action the dashboard can take is an HTTP call. Source a lead list, research a company, write and launch a campaign from your own mailboxes, read the replies, price every provider call: the same 361 operations, from a script, a CI job, a terminal, or an agent such as Claude Code.

The dashboard, the CLI and the MCP server call one service layer, so a number this API returns is the number the dashboard shows. Nothing is computed twice.

Base URL

Base URL
https://crm.ashwanth.dev/api/v1

Your first call

Create a key in Settings, Developer API, Create key, then read your workspace settings:

curl
curl https://crm.ashwanth.dev/api/v1/settings \
  -H "Authorization: Bearer se_YOUR_KEY"

A 200 with your workspace under data means everything else will work. A 401 means the key was mistyped or revoked; see Authentication.

What you can do

The reference in the rail lists all 361 operations across 25 groups. Each page carries a curl example, the CLI form, and a panel to run it against your own workspace.

Conventions

  • Every JSON response is an envelope: the result under data, or an error object with a stable code. See Errors.
  • Ids are UUIDs. Timestamps are ISO 8601 in UTC. Money is USD.
  • List endpoints take limit and offset where paging applies; the reference page says which.
  • Anything that takes longer than a request (sourcing, research, generation, launch, scans) returns a job. See Jobs and polling.
  • Exports (leads, companies, a list) return text/csv, not JSON.
  • Send x-sales-engine-client: your-tool if you like; it shows against each call in Settings, Developer API, Calls.

The machine-readable spec

OpenAPI 3.1
https://crm.ashwanth.dev/api/v1/openapi.json

Public and generated from the same registry as these pages. Point a code generator, Postman or an agent at it; every operation carries x-scope, the key scope it needs.