SK CRM · Developers

The spec is generated from the code.
CI makes sure it stays true.

SK CRM is the suite's most battle-hardened API: Zod validators generate the OpenAPI spec, CI fails on drift, every mutation takes an idempotency key, and the voice ingestion contract that powers SK Voice is the same public surface you get.

Fig 01 · the call-session lifecycle (the contract SK Voice uses)
open sessioncaller matched or new read contextbundle: history · fields collect fieldsincremental, mid-call finalize · atomiclead+interest+call+appt events outwebhooks, signed the same five-step contract powers SK Voice, SK Chat, and anything you build
✓ Drift-checked. The OpenAPI spec is generated from the Zod validators in the codebase, and CI fails the build if spec and implementation diverge. What the reference says is what the server does — by construction, not by diligence.
Quickstart

Create a lead in one request.

Bearer keys, prefixed ULIDs, cursor pagination, and an idempotency key on every mutation — the platform conventions, everywhere.

curl -X POST https://api.softknack.com/crm/v1/leads \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: 9f2c-...-d41a" \
  -H "Content-Type: application/json" \
  -d '{
    "contact": { "name": "Priya Raghavan", "phone": "+91XXXXXXXXXX" },
    "source": "website",
    "interests": [{ "catalog_item_id": "itm_01J9X...", "note": "1.5T split AC" }]
  }'

# → 201 · { "id": "ld_01J9X...", "contact_id": "ctc_01J9X...", "stage": "new" }
Events

The webhooks that matter.

lead.created

From any door — agent finalize, API, manual. Source attribution included.

lead.stage_changed

Guarded transition committed — from, to, actor, and whether it was a revival.

call.finalized

The atomic write completed: lead, interest, call and appointment IDs in one payload.

contact.updated

Field-level diff — what changed, by whom. Append-only on the timeline.

sequence.step_executed

Which step, which channel, delivery outcome from SK Notifications.

deal.won / deal.lost

Stage, value, owner — the events your dashboards and bonuses run on.

Platform guarantees

The conventions, everywhere.

Signed webhooks HMAC-SHA256

At-least-once with the platform retry schedule (1s → 4s → 16s → 1m → 5m → 30m → 2h) and dead-letter replay.

Idempotency 24h replay

Same key + same body replays the original result; same key + different body is rejected with 409.

Prefixed ULIDs ld_ · ctc_ · apt_

Sortable, copy-paste-debuggable IDs, consistent across the entire suite.

MCP tools mcp.softknack.com

Leads, contacts, context bundles and pipeline moves exposed as scoped MCP tools — your agents, same powers as ours.

Full reference

Auth, errors, pagination, tenancy and the complete schemas — written once for the platform, linked from every product.

docs.softknack.com/crm →

Build on the record everything else trusts.

Test keys are free — and the spec can't lie to you.

Start free