Skip to main content
The Sales Email Video Flow converts a sales-call summary into a short follow-up video featuring an AI-generated script, voice narration, and avatar render. Flows run asynchronously through a sequence of states. Base URL: https://app.yuzulabs.io/api/v1 All endpoints require Bearer authentication and a workspace with at least one ready avatar, a configured voice, and remaining quota.

Lifecycle

Endpoint summary


POST Create flow

POST /v1/flows/sales-email-video Creates a flow and starts script generation. The response returns immediately with a flowId you can poll.

Body parameters

string
required
Sales-call summary in plain text. Minimum 50 words. Becomes the input for script generation.
boolean
default:"true"
When true, the flow proceeds straight from generating_script to segmenting. When false, it stops at pending_approval until you call the /approve endpoint.
string
Convex ID of the avatar to render. Defaults to the first ready 16:9 avatar in your workspace.
string
ElevenLabs voice ID. Defaults to the workspace’s configured voice.
string
Prospect’s first name. Used in the script’s greeting.
string
Prospect’s company name.
string
Sender’s name. Defaults to the API key’s owner.
string
Sender’s company. Defaults to the workspace name.
string
Video title shown in the dashboard. Auto-generated from the prospect name when omitted.

Response

boolean
required
true on accepted requests.
string
required
Convex ID. Use this to poll status, approve, or cancel.
string
required
Always pending for newly created flows.
string
Human-readable confirmation.

GET List flows

GET /v1/flows/sales-email-video Returns flows visible to the API key, most recent first. Useful for dashboards and reconciliation jobs.

Query parameters

number
default:"20"
Page size. Maximum 100.
string
Continuation cursor from a previous response.
string
Filter by a single status (e.g. completed, pending_approval).

Response

boolean
required
object[]
required
Array of flow summaries. Each entry contains flowId, status, createdAt, title, and videoUrl (when completed).
string
Present when more results are available.

GET Get flow

GET /v1/flows/sales-email-video/{flowId} Returns the current status of a single flow. Poll this every few seconds while the flow is in progress.

Path parameters

string
required
The flow ID returned from the create endpoint.

Response

string
required
string
required
One of the lifecycle states above.
string
required
ISO-8601 timestamp.
string
ISO-8601 timestamp. Only present once status is completed.
string
Direct CDN URL to the rendered MP4. Only present once status is completed.
number
Duration in seconds.
string
Final script. Available from pending_approval onwards.
object[]
Per-scene breakdown: index, text, durationEstimate. Available from segmenting onwards.
string
Failure reason. Only present when status is failed.

POST Approve, edit, or reject script

POST /v1/flows/sales-email-video/{flowId}/approve Only valid while the flow is in pending_approval. Use it to advance, edit, or kill a draft script.

Path parameters

string
required

Body parameters

string
required
Either "approve" or "reject".
string
Replacement script. Honored only when action: "approve". If omitted, the draft script proceeds unchanged.

Response

boolean
required
string
required
string
required
After approval, transitions to segmenting. After rejection, transitions to cancelled.

DELETE Cancel flow

DELETE /v1/flows/sales-email-video/{flowId} Cancels a flow in any non-terminal state. Already-rendered videos are kept; in-flight rendering is aborted.

Path parameters

string
required

Response

boolean
required
string
required
string
required
Always cancelled on success.