$SALTY_API as the base URL — set it once and the snippets work as-is.
Authorization: Bearer <token> (an sk_live_… API key, a Supabase JWT, or a salty_oat_… OAuth token). See Authentication.
Conventions
- Identifiers are UUIDs unless noted.
- Timestamps are ISO 8601 strings (
2026-05-24T02:45:46.461Z). - bigint fields (
deals.value_cents) are returned as strings to avoid JS precision loss. - All errors use the Stripe-shaped envelope. See Errors.
- Pagination uses opaque cursors. See Pagination.
- POST is idempotent when you pass
Idempotency-Key. See Idempotency. - Rate limits are per workspace, per plan tier. See Rate limits.
- Custom attributes are validated by the schema engine. See Schema engine.
Interactive explorer
Every endpoint listed here is also available in the Scalar API explorer at$SALTY_API/reference. Paste your key, click an endpoint, send a request, see the real response.
Endpoints in v1
| Group | Endpoints |
|---|---|
| Workspace | GET /workspace, GET /workspace/usage, PATCH /workspace |
| API keys | GET /api-keys, POST /api-keys, DELETE /api-keys/:id |
| People | CRUD + POST /people/search + ?expand=primary_company |
| Companies | CRUD |
| Deals | CRUD + ?expand=primary_company,primary_person |
| Notes | CRUD (parent must be person/company/deal) |
| Tasks | CRUD (parent optional) |
| Activities | CRUD (parent + occurred_at required) |
| Schema | Declare/modify/deprecate attribute definitions |
| Custom Objects | Define new object types + records |
SDK alternative
Every endpoint here is also a method on theSalty class: