Getting started with the REST API
Crispy exposes 28 curated REST endpoints at /api/v1/. Every endpoint runs through the same executor as the MCP server, so a REST call and an MCP tool call behave identically: same validation, same rate limits, same safety checks.
Authentication
Create an API key in the dashboard under API Keys, then send it on every request:
Authorization: Bearer crispy_...Discovering endpoints
The OpenAPI 3.1 spec lives at /api/v1/openapi.json. Import it into Postman, Swagger UI, or your codegen tool, it documents every path, method, and schema. If you call a path that does not exist, the 404 response points you back to the spec.
What is covered
The surface maps to the core workflows: people and company search, profiles, network and invitations, inbox conversations, contacts and imports, lists, campaigns, analytics, webhooks, and warm-up. A few examples:
- POST /api/v1/search/people
- GET /api/v1/campaigns
- POST /api/v1/contacts/import
- GET /api/v1/inbox/conversations
Response conventions
Every response carries an X-API-Version: 1 header plus rate-limit headers (see the rate limits article). Errors return a consistent JSON shape with error, retryable, and suggestion fields so your client can decide whether to retry or surface the message.
Send request bodies as JSON objects. A body that is an array or a primitive is rejected with a 400 and a pointer to the schema, and malformed JSON gets an explicit parse error instead of being silently ignored.