May 6, 2026
Read the docsYou can now kick off a sequence for a single contact straight from your own backend. POST to /api/v1/sequences/startwith a template ID, the contact, and a few notes like “Speaks Spanish. Located in Madrid.” — Clarky upserts the contact, generates a bespoke multi-step outreach in the recipient's language, and (optionally) fires the first step immediately. Built for inbound lead automation: a prospect submits your form, your backend pings Clarky, and the contact's phone rings ~60 seconds later.
curl -X POST "https://clarky.ai/api/v1/sequences/start" \
-H "Authorization: Bearer ck_live_..." \
-H "Content-Type: application/json" \
-d '{
"template_id": "tpl_01HABC...",
"contact": {
"first_name": "Maria",
"emails": ["maria@example.com"],
"phone_numbers": ["+34911234567"],
"notes": "Speaks Spanish. Located in Madrid. Submitted contact form 30 seconds ago asking about pricing."
},
"auto_approve": true,
"idempotency_key": "lead_20260506_84211"
}'Key features include:
- One call, full pipeline — Upsert the contact, generate the sequence from a saved template, and start executing without stitching multiple endpoints together.
- Form-submitted-now-call-them-back fast path — Pass
auto_approve: trueand Clarky skips the human review gate, forces the first step to fire now, and dispatches inline. End-to-end wall-clock from API call to phone ringing is ~35–100 seconds (dominated by AI generation). - Multilingual personalization — Notes you send (
"Speaks Spanish. Located in Madrid.") flow into the LLM that writes each step, so the email arrives in the recipient's language and references real context — not a static translated template. - Default human review with admin ping — Without
auto_approve, the generated sequence parks in the review queue and an email goes out to your workspace admins with a deep link to approve. No more silent pending sequences. - Smart contact upsert— Existing contacts are matched by primary email (case-insensitive) and fall back to phone. Repeat callers' notes are appended with a timestamped
[via API]tag, so prior context is never overwritten. - Idempotent retries — Pass an
idempotency_key(e.g. your internal lead ID) and a duplicate request returns the original sequence and enrollment IDs without creating a second sequence. - Channel choice driven by the template — Build a template with
allowed_channels: ["email", "voice"]and the API never sends SMS, regardless of what the contact has on file. Want phone-first outreach? Pick a voice-first template. - Status polling endpoint —
GET /api/v1/sequences/enrollments/{id}returns the live enrollment status, generated steps, and per-step send state so your backend can react when the first call lands or the sequence completes.
Available on Standard or higher (requires both the Sequences and API Access features). See the full API reference for the exact request/response shape, error codes, and a Spanish-callback example.