Stock

Plan a video's stock B-roll

Finds the stock shots for a whole video and returns them ready for POST /v1/studio/edit — the cheap alternative to generated B-roll (a 4-second Veo 3.1 Fast clip costs ≈ 100× more). style: "cutaways": 2–4 shots cut in over a talking head where a line names something a camera can show (a portrait shot full frame, a landscape one as a split screen with the face kept); style: "faceless": stock clips and photos over the whole video while the voice goes on, a new shot every ~2.4 s. Gemini Flash-Lite reads the words (words of POST /v1/studio/kinetic, or a transcript_id on the output clock) and writes an English search per moment — or send your own moments. Every candidate is scored on its shape against the frame, its pixels against the crop, a clip's length against its slot, the search words in its title and tags and its source's own rank; the best few are shown to Gemini Flash-Lite as thumbnails (verify), and each chosen file is copied to our storage (24 h). Sources follow APIhub's licence rule for automatic insertion: by default only CC0 — photos and video on Wikimedia Commons marked CC0 and Openverse CC0 — and a shot is used only with its licence record (source, the file at the source, its page, the licence URL), which comes back with it; where the server's rule allows more, Pexels and Pixabay video and photos too (when the server has their keys), and with attribution: "any" credited shots with their credit line on screen. Rules on people: a line about something bad (a scam, failure, loss, fear) is never illustrated with a recognisable person, and with context: "ad" no stock person or brand appears at all (nobody in the footage may seem to endorse the product; CC0 settles copyright, not a person's likeness or a trademark) — with the thumbnail check on, only shots the check saw without a face or a logo go in. Send edit (e.g. the kinetic plan's output.edit) and it comes back with the shots merged in. Pexels and Pixabay footage is used only inside the edit (it is not a library to download): the answer carries provided_by — "Photos and videos provided by Pexels" with its link, to show where you publish the video's credits — and each shot's photographer credit. Photos and videos provided by Pexels (https://www.pexels.com). Recipes: /skills/full-stock-broll.md, /skills/full-stock-faceless.md

Billing: Searches + one or two Gemini Flash-Lite calls at their real cost · Rate limit: 20/min

post/v1/stock/broll-plan

Request

  • Base URL: https://apihub.co.il
  • URL: https://apihub.co.il/v1/stock/broll-plan
  • Auth: HTTP bearer

Headers

Idempotency-Keystring

Replay-safe: the same execution is returned instead of charging twice

X-Tagstring

Group calls into one job (e.g. one video) — see GET /v1/usage?tag=…

Request body

editobject

A POST /v1/studio/edit body (e.g. output.edit of POST /v1/studio/kinetic): the shots are merged into it and it comes back ready

kind'any' | 'video' | 'image'

any = video first, a photo where no clip fits

mode'auto' | 'full' | 'split'

cutaways: auto = portrait shots full frame, landscape ones as a split screen

cacheboolean

Copy each chosen file to our storage (24 h) — a render never depends on another host, and Pixabay's terms require it

countinteger

cutaways: how many shots

scrimboolean

A light dark band behind the words over the footage (cutaways: the shot's half; faceless: the word band) so small words read on busy pictures

style'cutaways' | 'faceless'

cutaways = 2–4 stock shots over a talking head · faceless = stock footage and photos over the whole video (the voice goes on)

topicstring

One line on what the video is about

verifyboolean

Show the best candidates' thumbnails to Gemini Flash-Lite before choosing (≈ $0.001–0.005)

context'general' | 'ad'

ad = an advert or a sales video: no stock person (and no brand) is shown, so nobody in the footage seems to endorse the product — with verify, every chosen shot's thumbnail was checked for a face or a logo

excludestring[]

Stock ids not to use (e.g. from an earlier plan)

secondsnumber

cutaways: how long each shot stays

durationnumber

The output's length in seconds (the kinetic plan's summary.output_seconds); default: the last word + 1.5 s

resolution'720' | '1080'

Default: the edit's output, else 1080

split_side'top' | 'bottom'

split: where the stock shot goes (bottom keeps the face on top, the words over the shot)

attribution'not-required' | 'any'

Only where the server's licence rule allows more than CC0 (setting stock_auto_license = cc0-and-free): not-required = CC0 / public domain / Pexels / Pixabay; any = CC BY too, with its credit line on screen while it shows (ShareAlike never). Under the default rule every shot is CC0.

aspect_ratio'9:16' | '16:9' | '1:1' | '4:5'

Default: the edit's output, else 9:16

shot_secondsnumber

faceless: a new shot about this often

speaker_focusnumber

split: which band of the speaker stays (0 top … 1 bottom; a selfie face ≈ 0.35)

transcript_idstring

Or a transcript whose clock is the output's (e.g. of the cut audio) — read here, its words in ms

Response

Completed

idstring

Execution id — stable across internal retries; use it with GET /v1/executions/{id}

status'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
operationstring
tagstring nullable

Your X-Tag, if sent

created_atstring date-time
completed_atstring date-time nullable
outputobject

Operation result (see each operation). While a Studio render is processing: stage (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), phase (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), progress (a percent, 0–100) and progress_fraction (0–1), eta_seconds (seconds left, never below 0) and estimate_seconds

errorstring nullable

Changes

No recorded changes to this operation across all 2 revisions of this API.