Skip to main content

Endpoints

An email must be approved before blasts and triggered flows can use it. Approval also gates deletion and unapproval: an email attached to a scheduled blast or an active flow cannot be unapproved or deleted.

Approve and Unapprove

Approving marks the email’s newest completed version usable by blasts and flows. It requires subject, from_name, from_address, and reply_to_email to be populated; otherwise the API returns 400 Bad Request with error_code: "email_missing_required_headers". Set the missing headers via PATCH /v1/emails/{emailId} before retrying. Optionally send {"version": <n>} as an optimistic-concurrency precondition — a mismatch with the newest completed version (normally equal to current_version) returns 409 Conflict with error_code: "approval_version_stale". While a generation is running, an approve without version is refused with 409 Conflict and error_code: "generation_in_progress" — it would silently pin the pre-generation content for your next send; passing version explicitly still approves that already-completed version mid-generation. Unapproving is rejected while the email is scheduled in a blast (email_in_scheduled_blast) or used by an active flow (email_in_active_flow).

List Emails

Query Parameters

Responses contain emails and next_cursor. An absent next_cursor means the list is exhausted. List items are the email object minus latest_generation_status and the content_path / plain_text_path fields — lists never inline HTML; fetch it per email via GET /v1/emails/{emailId}/content.

Retrieve an Email

200 OK
status is draft or approved. Creating a blank draft (201 Created) and metadata updates return this same shape.

Delete an Email

Returns 200 OK with {"email_id": "...", "deleted": true}. Deletion is blocked with 409 Conflict while the email is scheduled in a blast (email_in_scheduled_blast) or used by an active flow (email_in_active_flow).

Common Errors

Next: Manage Email Blasts

Send an approved email to an audience as a one-time blast.