Video .draft
Writes a Video’s timeline from your records, your Brand and a Template, with a draft mark on every frame.
- Action class
- None
- Approval
- Runs on its own
- Emits
Video.drafted- Price
- Free
Its Inputs, Outputs, Effects and guards quote the hub’s Video.draft; this page adds what each Venue honors, its limits and a worked call.
Inputs
| Name | Type | Default | Meaning |
|---|---|---|---|
brand | Brand | Required | The Brand the Video speaks for. |
offer | Offer | your first Offer | The offer the Video presents. Unset: the startup’s first offer, the one its pricing page leads with. |
Outputs
| Field | Type | What null means |
|---|---|---|
video | Video | Never null: the Video in status Draft, with a draft mark on every frame. |
video.status | string | Never null: draft until Video.finalize clears the mark. |
Effects
- Action class
None: no approval rule names it, so it runs within its seat’s Permissions and Limits
- Modes
try: Writes the timeline and returns it with a frame list; nothing is rendered or stored.send: Returns a pending Action at once;Video.draftedfires when the timeline and its preview render.do: Waits for the preview render, about a minute for 30 seconds, and returns the Video.
- Idempotency
Only with a key: the same
Idempotency-Keyand input return the first Action, and the same key with other input returns409. A repeat with the same key returns the first draft; a new key drafts again from the records as they are now.- Saved or shared
The Video, its timeline and the record each on-screen claim reads, so a changed price or count marks the draft stale.
- Emits
Video.draftedwith{ video,brand, offer, claims } - Performed by
- Price
Free on your own account: the platform charges nothing for the call.
On each Venue
It acts on your own records and reaches no Venue, so every account answers the same way.
What try does
Runs every check the call meets and returns the record as it would be; nothing is stored, sent or posted.
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| An invented testimonial, a synthetic person speaking as a customer, or a face or voice with no yes | synthetic-media | Use a real customer’s words with their yes, or show the product instead. | Content.draft |
| A Post with a claim that resolves to no live record | claims-resolve | Cut the claim, or name the record that backs it. | Content.draft |
The synthetic-media payload
{
"type": "https://startupbuilder.dev/errors/synthetic-media" ,
"title": "Synthetic media",
"status": 422,
"detail": "An invented testimonial, a synthetic person speaking as a Customer, or a face or voice with no yes." ,
"fix": "Use a real Customer’s words with their yes, or show the product instead." ,
"next": {
"verb": "Content.draft",
"input": {}
},
"instance": "https://api.sb/leaseline.app/actions/action_1"
}When it waits
In send mode it returns a pending Action, reason: until the preview renders, and Video.drafted delivers the result.
await $.Watch.create({
selector: 'Video.drafted',
url: 'https://leaseline.app/hooks/sb'
})Example
A refusal: its offer asks for a customer testimonial with no recorded yes, so the draft refuses before a frame is written.
Draft a 30-second video for the Portfolio plan: renewal notices go out
60 days early, for every owner, for `offer_test_testimonial`. {
"type": "https://startupbuilder.dev/errors/synthetic-media" ,
"title": "Synthetic media",
"status": 422,
"detail": "An invented testimonial, a synthetic person speaking as a Customer, or a face or voice with no yes." ,
"fix": "Use a real Customer’s words with their yes, or show the product instead." ,
"next": {
"verb": "Content.draft",
"input": {}
},
"instance": "https://api.sb/leaseline.app/actions/action_1"
}To retry, send the same Idempotency-Key: the retry returns the first answer for $0. A new key reads again.
Test values
A sk_test_ key answers these the same way every time, at $0 (every test value).
| Test value | Always returns | What it is for |
|---|---|---|
brand_test | {"video": | Always the same 30-second draft, so the review step after it runs on a known timeline. |
offer_test_testimonial | Refuses with synthetic-media | Its offer asks for a customer testimonial with no recorded yes, so the draft refuses before a frame is written. |
Used by
- Agent tasks: Ad kit
- Jobs: Make content