Documentation Index
Fetch the complete documentation index at: https://docs.clarky.ai/llms.txt
Use this file to discover all available pages before exploring further.
Plan availability: Standard or higher (requires both Sequences and API Access). See Plans & Billing.
- Upsert the contact in your workspace (matched by primary email, falling back to phone).
- Append the notes you send (
Speaks Spanish. Located in Madrid.) to the contact’s record so they survive across calls. - Generate a bespoke sequence from a saved template using a two-stage LLM pipeline — emails are written for the specific recipient, in their language, referencing real context. SMS / voice scripts are generated the same way.
- Optionally launch immediately — with
auto_approve: true, the first step (call or email) fires within seconds of generation completing, no human review required.
email, voice, sms), so the API itself does not expose a channel selector — pick a template that uses the channels you want.
Generation takes time. The endpoint responds with
202 Accepted after a few hundred milliseconds, but the LLM pipeline runs in the background and takes ~30–90s before the first outbound action goes out. Poll the status endpoint to know when it has shipped.Start a sequence
POST /api/v1/sequences/startRequest body
ID of a sequence template in your workspace. The template defines the goal prompt, allowed channels, pacing, and (optionally) the bot identity.
Required only if the template has no
bot_id. The bot whose email/phone identity will be used as the sender.The contact to upsert.At least one of
emails or phone_numbers is required.When
true, skips the human review gate. After generation, step 1’s scheduled_for is forced to now and the dispatcher fires immediately — the contact’s phone rings (or inbox dings) within seconds. Use this for trusted automation.When false (the default), the sequence is generated and parked in pending_approval. Workspace admins receive an email with a review link.A stable identifier (e.g. your internal lead ID). Calling the endpoint a second time with the same key returns the original
sequence_id and enrollment_id — no duplicate sequence is created.Display name for the sequence. Defaults to the template’s name.
Response — 202 Accepted
Example — call back a Spanish-speaking lead immediately
Errors
| Code | Meaning |
|---|---|
400 | Missing required field, or template has no bot_id and none was provided. |
401 | Invalid or revoked API key. |
403 | API key does not have write scope. |
404 | Template not found in this workspace. |
422 | Validation error — e.g. contact has no email or phone, or bot_id is from a different workspace. |
429 | Rate limit exceeded. |
Get enrollment status
GET /api/v1/sequences/enrollments/{enrollment_id}Status values
| Status | Meaning |
|---|---|
generating | LLM is still producing the sequence. Typical 30–90s. |
pending_approval | Sequence is generated but awaiting human approval (only when auto_approve: false). Admins have been emailed. |
approved | Steps are scheduled. The first step is in flight or already sent. |
running | Sequence is active across multiple steps. |
stopped_reply | Contact replied; the sequence halted (if stop_on_reply is on for the template). |
stopped_unsubscribed | Contact’s email/phone is suppressed. |
stopped_user | Manually halted by a workspace user. |
completed | All steps sent. |
failed | Generation or dispatch failed. See generation_error. |
Example response
Notes & limits
- Latency floor: ~30–90s from API call to first outbound action. Two LLM calls run in the background; this can’t be made faster while still producing language-matched, personalized content.
- Channels are template-driven. If the template’s
allowed_channelsis["email", "voice"], no SMS will be sent regardless of what the contact has on file. - Concurrent enrollments are allowed — calling the endpoint while the contact is in another active sequence will not be rejected.
- Suppressed contacts (unsubscribed email, opted-out phone) cause the enrollment to fail with
no_usable_channels. Polling the status endpoint will reflect this.

