Kraiter
API Reference

Scheduled

View and manage emails that are scheduled for future delivery.

Scheduled sends are emails queued for future delivery, typically created by sequence steps with delays. Use this API to view what emails are pending and when they will be sent.

List scheduled sends

GET /api/scheduled

Returns scheduled sends for the tenant. You must supply either a status or a contactId filter — an unfiltered request returns a VALIDATION_ERROR. Results are returned as an items array with a hasMore boolean (this endpoint does not use a cursor).

Query parameters

ParameterTypeDefaultDescription
statusstringFilter by status: pending, claimed, sent, cancelled, failed, or dead. Required unless contactId is given.
contactIdstringReturn scheduled sends for a single contact. Required unless status is given.
limitnumber20Number of scheduled sends to return (max 100).
cancelReasonstringWhen listing cancelled sends, keep only those with this cancel reason.

Response

{
  "items": [
    {
      "scheduledSendId": "01H9...",
      "contactId": "cnt_01H8MZXK...",
      "sequenceId": "onboarding",
      "sequenceVersion": "01H8...",
      "stepId": "getting-started",
      "templateId": "getting-started",
      "scheduledFor": "2025-09-16T14:00:00.000Z",
      "status": "pending",
      "attempts": 0,
      "createdAt": "2025-09-15T14:00:00.000Z"
    }
  ],
  "hasMore": false
}

Response fields

FieldTypeDescription
scheduledSendIdstringUnique identifier for the scheduled send.
contactIdstringThe contact who will receive the email.
sequenceIdstringThe sequence that created this scheduled send.
sequenceVersionstringThe sequence version the send was scheduled from.
stepIdstringThe step within the sequence.
templateIdstringThe template that will be rendered.
scheduledForstringISO 8601 timestamp of when the email will be sent.
statusstringpending, claimed, sent, cancelled, failed, or dead.
attemptsnumberNumber of delivery attempts made so far.
createdAtstringWhen the scheduled send was created.

Cancelled sends also carry a cancelReason; failed and dead sends carry a lastError.

Examples

# By status
curl "https://api.kraiter.com/api/scheduled?status=pending&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

# By contact
curl "https://api.kraiter.com/api/scheduled?contactId=cnt_01H8MZXK..." \
  -H "Authorization: Bearer YOUR_API_KEY"
const scheduled = await kraiter.scheduled.list({ status: "pending", limit: 20 });

for (const item of scheduled.items) {
  console.log(
    `${item.contactId} — ${item.templateId} scheduled for ${item.scheduledFor}`
  );
}

Get scheduled send

GET /api/scheduled/:id

Returns the details of a single scheduled send. Because scheduled sends are keyed by their delivery time, you must pass the scheduledFor timestamp as a query parameter.

Path parameters

ParameterTypeDescription
idstringThe scheduled send ID (scheduledSendId).

Query parameters

ParameterTypeRequiredDescription
scheduledForstringYesThe ISO 8601 scheduledFor timestamp of the send, needed to locate the record.

Response

Returns the full scheduled send object (same fields as the list response).

{
  "scheduledSendId": "01H9...",
  "contactId": "cnt_01H8MZXK...",
  "sequenceId": "onboarding",
  "sequenceVersion": "01H8...",
  "stepId": "getting-started",
  "templateId": "getting-started",
  "scheduledFor": "2025-09-16T14:00:00.000Z",
  "status": "pending",
  "attempts": 0,
  "createdAt": "2025-09-15T14:00:00.000Z"
}

Errors

CodeDescription
VALIDATION_ERRORThe scheduledFor query parameter was not provided.
SCHEDULED_SEND_NOT_FOUNDNo scheduled send matches this ID and scheduledFor.

Examples

curl "https://api.kraiter.com/api/scheduled/01H9...?scheduledFor=2025-09-16T14:00:00.000Z" \
  -H "Authorization: Bearer YOUR_API_KEY"
const item = await kraiter.scheduled.get("01H9...", {
  scheduledFor: "2025-09-16T14:00:00.000Z",
});
console.log(`Scheduled for: ${item.scheduledFor}`);

Lifecycle of a scheduled send

Scheduled sends follow this lifecycle:

  1. Created — A sequence step creates the scheduled send with a future scheduledFor timestamp.
  2. Pending — The send remains in the scheduled queue until its delivery time.
  3. Sent — At the scheduled time, the email is rendered and delivered. The scheduled record is removed and a Send record is created.
  4. Cancelled — If the contact is deleted, unsubscribes, or the sequence is deleted, the scheduled send is removed without sending.

Once a scheduled send has been delivered or cancelled, it no longer appears in the scheduled sends list. To view delivered emails, use the Sends API.

Viewing scheduled sends for a contact

To see what emails are pending for a specific contact, use the contact's scheduled sends endpoint:

curl "https://api.kraiter.com/api/contacts/cnt_01H8MZXK.../scheduled" \
  -H "Authorization: Bearer YOUR_API_KEY"
const scheduled = await kraiter.contacts.listScheduled("cnt_01H8MZXK...");

See Contacts — List scheduled sends for details.