Put your character into any trend video
The request came in marked blocking: "We want to recreate a trending video with our stored character. The clips live on Instagram and TikTok. We need the original footage kept and only the lead swapped." Re-generating the scene from a reference, which is what text-to-video does, gave them a new soundstage, a new crowd, and everyone dressed like the character. Not the trend.
So here is the actual thing.
Swap, don't re-create
swap_character takes a source clip (4–30 seconds — fetch_video with start/end gets you
one from a link) and a stored character or reference images, and returns the same clip with the
subject replaced: same camera, same motion, same crowd, same timing. motion_transfer is the
other direction: your character, driven by the source's choreography. Both run on the provider
your account already bills through, with an estimate first. Link → trim → swap is the whole
flow now.
Pick the image model
generate_image, create_character and the new edit_image take a model. The default is
still GPT Image 2.5. Soul v2 is there for photoreal people from text; Grok Imagine 2 for fast
composites with up to ten references; Qwen Image 3 for typography and instruction-following
edits; Ideogram 4 for posters and legible text; Nano Banana Pro for scene edits. list_models
says what each supports. We were asked about Midjourney: it has no API, and automating a personal
account breaks its terms, so it is not on the list and won't be until there's a licensed route.
Your recipes, as skills
Teams were keeping long, precise image recipes outside the product — unretouched-portrait rules,
a brand's duotone look, how to add someone to a group photo so the grain matches. create_skill
stores those with the account, versioned, shared with the team, with optional reference images.
Pass skill_ids on a request, or attach them to a brand kit so every image for that brand gets
them. The studio's own craft still runs first; yours is applied on top.
Edit a real photo in place
edit_image puts a character or object into a masked area of a photo and leaves every other
pixel exactly as shot. The model only ever sees a window around the mask, and its output is
composited back inside the mask with a feathered edge — the rest of the photo is the original
bytes, not a re-render. It returns the edited image at the photo's resolution plus the mask it
used. Four people missing from the team photo: four masks.
Also today
cancel_job, with a full credit refund.draft: trueongenerate_videofor a cheap 480p pass;finalize_videore-renders the keeper at 720p or 1080p with the same prompt.upscale_videoto 2160p — plain Lanczos resampling, labelled as such; we'll swap in a generative upscaler when a provider offers one through an API.- Generated clips no longer open on a two-second hold; the action starts on frame one unless you ask for holds.
- Recordings: 1080p and 1440×900 viewports, 2× retina, a gliding cursor with a click ripple, per-element bounding boxes in the marks, and waits after navigation so transitions aren't black frames.
Docs: Generation, Recording.