Videos APIGuides
Update call actions
Create, edit and delete the CTAs that appear over or under the video.
call_actions carries a feature toggle, enabled, above the items list it
gates. The list merges per item: an item with an id patches that CTA, an
item without one creates a new CTA, and an item with "_destroy": true
deletes it. CTAs you don't mention stay as they are.
This is a merge-patch: send only the keys you want to change and everything else keeps its stored value.
Edit one CTA, create another, delete a third
curl -X PATCH https://api.vturb.com/v1/videos/{id} \
-H "Authorization: Bearer vt_..." \
-H "Content-Type: application/json" \
-d '{ "call_actions": {
"enabled": true,
"items": [
{ "id": "66f2...", "window": { "start": 30 } },
{ "base": { "name": "Buy now", "type": "outside_video", "active": true },
"window": { "start": 60, "end": 120 } },
{ "id": "66f3...", "_destroy": true }
]
} }'The feature toggle
| Key | Type | Writes |
|---|---|---|
enabled | boolean | Turns the whole CTA feature on or off (sits beside items) |
The item keys (inside items)
| Key | Type | Writes |
|---|---|---|
id | string | Targets an existing CTA; omit to create one |
_destroy | boolean | true deletes the CTA the id points to |
base.name | string | Internal label — only accepted when action.as_html or image_as_button is set; on a text button the content is the label |
base.type | string | inside_video (over the player) or outside_video (below it) |
base.active | boolean | Turns the CTA on or off |
window.start | integer | Second the CTA appears |
window.end | integer | Second the CTA disappears |
window.persist_on_video_end | boolean | Keep the CTA visible after the video ends |
action.content | string | Button label text (the structured, no-HTML path) |
action.url | string | http(s) URL the CTA opens |
action.open_in_new_tab | boolean | Open the URL in a new tab |
action.html | string | Custom HTML the CTA renders (requires action.as_html) |
action.as_html | boolean | Treat the content as raw HTML |
design.typography | object | Font of a text button: family, letter_spacing, line_height, size, weight |
design.styles | object | Look of a text button: the colors, border_radius, padding, shadow |
A text button (no action.as_html, no image_as_button) requires action.content,
action.url, and a complete design.typography + design.styles. Within an item, the
merge is still shallow per group: patching window.start leaves window.end alone.