Skip to content

Agents and multimodal systemsGuide

INFRO Studio: image, video and audio on your own providers

Media models bill per image, per second or per character, run as async jobs, and often delete their outputs within hours or days. Here is how those APIs differ, and how INFRO Studio puts projects, takes, estimates and storage on top of the provider accounts you already pay.

By INFRO Editorial

Published

12 min read

Amber frames of light arranged in a loose row on a dark ground, one frame brighter than the others, suggesting takes laid out for a choice

In short

Image, video and audio APIs bill in different units, run on different timelines and keep outputs for different windows, so a creative workflow needs an estimate before every run and its own storage after it. INFRO Studio (studio.infro.io) is a workspace for that work on every INFRO plan: each generation is a gateway request on one of your own provider connections, shown with its estimated provider cost before it runs, checked against what the model takes on that provider, and kept for your plan's window once an owner or admin turns storage on.

Key takeaways

  • Media APIs bill in different units: images per image and resolution tier, video per second of output, speech per character, music per track or per second, hosted open models by run time.
  • Video runs as an asynchronous job: submit, receive an id, then poll or receive a webhook, and download before the provider deletes the output.
  • The same model takes different settings on different providers; a check before the call turns a failed or silently altered render into an immediate, readable refusal.
  • INFRO Studio runs every generation as a gateway request on one of your own provider connections and shows its estimated provider cost before it runs; unpriced steps are shown as unpriced, never $0.
  • Studio keeps nothing until an owner or admin turns storage on, then keeps work for the plan's window: 30 days on Developer, Startup and Team, 90 on Business, a year on an Enterprise agreement.

Text models have converged on one shape: tokens in, tokens out, priced per million. Image, video and audio models have not. Each vendor bills in its own unit, some answer in seconds and some in minutes, and many delete what they made within hours or days. A team that makes media with more than one model ends up maintaining a small translation layer in people's heads: what this render will cost, whether this model takes a last frame, where last week's take went.

This guide covers those differences first, because they apply whichever tools you use. The second half describes INFRO Studio, the creative workspace INFRO released on 12 October 2026, and how it handles each one on the provider accounts you already have.

Four billing units, not one

Look at one vendor's price page and you find at least three units. On Google's Gemini API, an image from Nano Banana 2.1 is priced per image by resolution tier, with 4K costing more than three times 1K; Veo 3.1 video is priced per second of output by resolution, from $0.05 a second for Lite at 720p to $0.60 a second for the standard model at 4K, with audio included; and Lyria music is priced per song1. Google also notes that a Veo video is charged only if it is generated successfully1.

Vendor pages, 2026-10-13Billed byExample from the vendor's pageWhat moves the price
ImagesPer imageNano Banana 2.1 on the Gemini API: per image by 1K, 2K or 4KResolution tier, quality, number of images
VideoPer second of outputVeo 3.1 on the Gemini API: per second by resolution, charged only when generatedSeconds, resolution, model tier, audio on or off
Video via a hostPer second, in the host's own unitsRunway API: gen4.5 and veo3.1 per second; veo3.1 differs with and without audioModel, audio, and the host's rate
SpeechPer characterRunway API: eleven_v4 per 1,000 charactersLength of the script
MusicPer track or per secondLyria 3.5 on the Gemini API: per songTrack length, vocals
Hosted open modelsPer second of hardware, or per outputReplicate: public models bill active processing timeHardware, run time
How the media APIs cited in this guide bill, read on the vendors' own pages on 2026-10-13.

Hosts add their own layer. Runway's API prices every generation in its own unit worth one cent: gen4.5 video comes to $0.12 a second, Veo 3.1 through Runway to $0.40 a second with audio and $0.20 without, an image from gen4_image to $0.05 or $0.08 depending on resolution, and speech from eleven_v4 is priced per thousand characters2. Replicate bills its public models by the time the hardware spends actively processing your request, with setup and idle time free; private models and deployments bill for all the time an instance is online3.

Three consequences follow for anyone planning media work:

  • The price of a request depends on its settings. Duration, resolution, audio and quality change the cost of a video more than the prompt does. An estimate has to read the settings, not only the model name.
  • The same model costs different amounts on different providers. Veo 3.1 is a Google model, but it is billed one way on the Gemini API and another way through Runway12. The provider, not the model, decides the invoice.
  • Retries and takes multiply. Creative work makes several takes per shot. A per-second price that looks small for one clip becomes a real number across a storyboard.

Async jobs, polling and webhooks

An image usually comes back in the same HTTP request. Video does not. Google's Veo documentation describes the call as starting a long-running job that immediately returns an operation, which you poll until it is done, and gives generation latency as 11 seconds at minimum and up to 6 minutes during peak hours4. fal puts requests on a durable queue: the submit call returns a request_id and URLs for status, result and cancel; statuses move through IN_QUEUE, IN_PROGRESS and COMPLETED; and a fal_webhook URL makes fal post the result to your server instead5. fal may retry a webhook delivery, so it advises using the request_id for idempotency5. Replicate sends webhooks when a prediction is created, updated and finished6.

Polling or webhooks is the visible choice. The less visible problem is what happens after the job finishes:

  • Replicate API inputs and outputs

    1 hour

    deleted after an hour, per Replicate's webhooks page

  • INFRO /v1 output links

    24 hours

    the signed media URL on a job or image response

  • Veo videos on Google's server

    2 days

    then removed, per the Gemini API Veo page

  • INFRO Studio

    30 to 365 days

    the plan's window, once an owner or admin turns storage on

How long generated media stays available, from the vendors' pages and INFRO's documentation, read 2026-10-13.

Replicate deletes API inputs and outputs after an hour, which is one of the reasons it gives for using webhooks: to copy results to your own storage in time6. Veo videos stay on Google's server for two days4. Any pipeline that keeps a link instead of a file will eventually show a broken thumbnail in a review, and re-rendering is not the same as recovering: the provider bills the render again, and the new take is not the one that was approved.

The same model takes different settings on different providers

A model name does not tell you what a request may contain. Veo 3.1 on the Gemini API accepts up to three reference images, but not on Veo 3.1 Lite; it takes a lastFrame only together with a first image; and it extends Veo-made videos by 7 seconds at a time, up to 20 times, only for 720p input in 9:16 or 16:9, and not on Lite4. Hosts that serve the same model expose their own subset, with their own field names and their own limits.

When a setting does not fit, two things can happen, both bad: the provider refuses after a queue wait, or it quietly substitutes its default and bills a render nobody asked for. A creative tool that offers settings per model, not per provider, invites both. The fix is to keep a record of what each model takes on each provider and to check every request against it before any call.

Why media needs an estimate before every run

Text workloads are often budgeted after the fact: tokens are cheap per call, and a dashboard catches the drift. Media turns that around. A single storyboard run can mean dozens of video renders at a per-second rate, each with retries, and the cost is decided by settings a creator picks in a form. An estimate shown before the run, computed from the same settings the request will send, is the only point at which someone can still choose a shorter clip, a lower resolution or a faster model tier.

Three rules make an estimate trustworthy:

  1. Use the rate that will be billed. A negotiated rate where the organization has one; the vendor's published list rate otherwise.
  2. Read the settings. Seconds, resolution tier, quality, number of images, characters of script.
  3. Say "unpriced" when no rate is known. An unpriced step shown as $0 is worse than no estimate, because it reads as free.

INFRO Studio: a workspace on your own provider connections

INFRO is a control plane that sits between an organization's applications and the AI providers it already pays. Studio, at studio.infro.io, is its workspace for image, video and audio work, and it is part of every INFRO plan with no add-on. It runs on the same organization, members, roles, provider connections, budgets and plan as the INFRO console. Every generation it makes is a gateway request on one of your organization's own provider connections, so the provider bills your account directly, under your contract. INFRO charges its subscription only, with 0% markup on model spend.

Inside Studio, the work is organized the way a production is:

  • Projects and the Library. Uploaded and generated files, organized in projects, each item showing the date it is kept until.
  • Create. Studio's home: the medium, the task (edit, animate an image, extend, upscale, lip-sync, voice, music and more), the model, then the provider that runs it, inputs dropped in or picked from the Library, the settings that model takes on that provider, and its estimate.
  • Storyboard. Scenes and shots; each shot has versions, takes and a pick. Play sequence shows every shot in order before anything is exported.
  • Cast. Characters, locations, styles, props and voices reused across shots and models, with the references each model takes chosen for it. A character built from photos of a real person needs its creator's attestation that they have that person's permission, and a run without it is refused.
  • Director. Turns a written brief into a cast, shots and prompts, on a text model served by one of your own connections.
  • Recipes and Flow. Multi-step recipes and Flow, a canvas of nodes and wires where you run a node, a branch or everything. A run that stops can be resumed, reusing the results it already made.
  • Compare. Up to eight takes side by side: videos play and scrub together, two images get an A/B wipe, and every tile names its model, provider and cost.
  • Review and Export. Comments at a moment in a video or on a region of an image, approve or request changes per shot, view-only share links that expire within 30 days, and an export package with timelines for Final Cut Pro, DaVinci Resolve and Premiere Pro.

Each shot moves through four stages, and each stage is a step on one of your providers:

  1. 1 · image

    Keyframe

    The shot's first frame, from its description, camera and cast references.

  2. 2 · video

    Animate

    The keyframe as first frame; optionally the next shot's keyframe as the last.

  3. 3 · audio

    Sound

    A voice line, lip-sync, a sound-effects bed, a music bed and captions.

  4. 4 · upscale

    Finish

    The chosen take or keyframe upscaled; one result becomes the final take.

A shot's stages in INFRO Studio's shot workspace, from the Studio app source, read 2026-10-13.

What happens when you press Generate

Studio's choices come from GET /studio/v1/capabilities: only models a connected provider serves, and only the settings that model takes on that provider. Before a run starts, POST /studio/v1/runs with dry_run returns the plan: every step, the estimated provider cost of each, and how many steps are reused from identical earlier work. Studio shows it beside what is left of the member's own monthly limit and the organization's budget.

Quick Create, a shot stage, Run all, a recipe

A step in Studio

The model, the provider and only the settings that model takes on that provider, read from the organization's own connections.

POST /studio/v1/runs, dry_run

Plan and estimate

Every step with its estimated provider cost, steps reused from identical earlier work, and the member's and organization's limits.

settings, allowlist, guardrails, budgets

The same checks as a /v1 request

A setting the target cannot take is refused before the call; a blocking limit refuses before the provider is reached.

your account, your contract

Your provider connection

The request runs as the signed-in member and is recorded with feature studio, the run as its trace and the Studio project as a tag.

kept for the plan's window

Stored with its lineage

The result, its prompt, model, provider connection, settings and estimated provider cost, until the retention date shown on it.
The path of one Studio step, from INFRO's Studio documentation and the /studio/v1 and gateway source, read 2026-10-13.

The run itself goes through the same /v1 implementations an application would call with a gateway key, so the model allowlists, guardrails, budgets, routing and failover the organization has configured apply to Studio too. Each request runs as the signed-in member, not as a key in the browser, and is recorded with feature set to studio, the run id as its trace and the Studio project as a tag. When a provider fails a step, the organization's default decides what happens per condition: retry, try the next provider, or stop; a creator can change that for one generation in the composer. The run queue shows every run in flight with its progress where the provider reports it, an ETA from the organization's own typical time for the model, and its estimated cost.

The estimate is the same one the gateway records afterwards. Your negotiated rate is used where you have entered one, otherwise the vendor's list rate; a step with no known rate is shown as unpriced, never as $0. Budgets and member limits are enforced on Studio's requests exactly as on any other request. Your provider's invoice remains authoritative.

Settings, references and the newer media tasks

Studio needed media capabilities the gateway did not have, and they are on /v1 for every application: reference images with roles on images and video, last_frame, negative_prompt, extend of an earlier job's video, video-to-video, image and video upscaling, lip-sync, sound effects and music. Each is checked against what the model takes on each of your providers before any call. A setting a target cannot take is never sent: the next target in the route is tried, and when none can take it the request is a 400 invalid_request_error naming what the model accepts. No provider is called and nothing is charged.

@infro/shared, 2026-10-13EndpointModels (provider kinds)
Reference images, video/v1/videos referencesVeo 3.1 (Google, fal, Replicate), Seedance 2.x (fal, Runway, Replicate), Wan (fal, Runway), Kling O3, Grok Imagine Video 1.5, Hailuo 03
Last frame/v1/videos last_frameVeo 3.1, Seedance, Wan, Kling, Luma Ray 3.2, PixVerse on the providers that take it
Extend/v1/videos extendVeo 3.1 (fal), Wan 2.7 (fal, Replicate), Seedance 2.x (Replicate; 2.5 also fal, Runway), PixVerse V6 (fal)
Video-to-video/v1/videos videoSeedance 2.x (Replicate, Runway), Kling O3 (fal, Replicate), Luma Ray 3.2 and Wan 2.7 (fal), Hailuo 03 (Runway)
Upscale/v1/images/upscale, /v1/videos/upscaleTopaz, Recraft Crisp (fal, Replicate), Magnific (Runway), Real-ESRGAN (Replicate)
Lip-sync/v1/videos/lipsyncSync models (Sync, fal, Replicate), Kling lip-sync and Avatar, OmniHuman
Sound effects/v1/audio/sound-effectsElevenLabs (ElevenLabs, fal, Runway), MMAudio (fal), Seed Audio (Runway)
Music/v1/audio/musicLyria (Google, Vertex, fal, Replicate), ElevenLabs Music, MiniMax Music, Stable Audio 2.5
Media tasks and the models INFRO serves them on, by provider kind, from INFRO's shared media-settings records, read 2026-10-13.

The records are per pair, which matters in practice. Wan 3.0 takes a last frame on fal but not on Replicate. Veo 3.1 takes up to three references on the Gemini API, fal and Replicate, matching Google's own limit on the Gemini API4. Sync's lip-sync models are served on a Sync connection, fal or Replicate. Music endpoints carry their own constraints, such as MiniMax singing only the lyrics it is given; INFRO's documentation also points out that music licences are the provider's own and can be narrower than "commercial use" on some plans, so read them before you publish.

The estimate is available to an application as well. POST /v1/estimates takes a model, optionally a provider, and the quantities (n, size or resolution and quality for images, duration_seconds for video, characters for speech, tokens for text) and answers with estimated_cost, price_source and the rate with its tiers, or null with an unpriced_reason:

Estimate a video render before submitting it
curl https://api.infro.io/v1/estimates \
  -H "Authorization: Bearer $INFRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "model": "google/veo-3.1", "duration_seconds": 8, "resolution": "1080p" }'

For long renders outside Studio, /v1/videos returns 202 with a job, which you poll at GET /v1/jobs/{id} or receive as a job.succeeded or job.failed webhook, signed when it goes to an endpoint configured for your account. Studio's own runs do not send webhooks; the run queue shows their progress.

Studio stores nothing until an owner or admin of the organization turns its storage on, and Studio cannot run without it, because every output is persisted the moment it exists. Who turned it on and when is recorded in the audit log. Studio storage is separate from the gateway's request payload logging: turning one on never turns on the other. Generated media is stored as the provider returned it, so provenance marks the provider adds, such as the SynthID watermark Google applies to Veo videos4, stay in the file.

How long work is kept is set by the plan: 30 days on Developer, Startup and Team, 90 days on Business, and a year on an Enterprise agreement. An organization can choose a shorter window. Every item shows the date it is kept until, the people who made items leaving within a week get one email listing them, deleted items stay in Trash for 7 days before they are purged, and turning storage off either deletes everything now or lets items expire on schedule. Downloads and exports work while an item is kept. Compare that with the vendor windows above: an hour on Replicate, two days for Veo on Google's server64.

Who can do what

Owners, admins and developers make, upload and export in Studio. Analysts and finance members can open it to see work and its cost, comment and review, but not generate. A member confined to some projects in the console is refused, because Studio is organization-wide in this first version. Each member sees their own monthly limit and the organization's beside every large run, so a run that would stop at a limit says so before it starts.

When a model goes away

Media models retire quickly. OpenAI's deprecations page lists the Videos API, sora-2 and sora-2-pro as shut down on 24 September 2026, with no replacement listed7. Work that depends on a single vendor's model id inherits that schedule. A workspace that names the model, provider and settings of every take, keeps the files, and can run the same shot on another model from another of your providers turns a shutdown into a choice of model rather than a lost project. The deprecation playbook covers the general method; the video model comparison covers the options.

From the team that builds it

Where this shows up in INFRO

INFRO is a control plane in front of the provider accounts you already hold. The capabilities below are the parts of it this article touches, each with the documentation that defines its behaviour.

INFRO is in private early access. Provider usage is billed to you by your providers; INFRO charges a software subscription and takes 0% of model spend. See plans.

Sources

Numbered in order of first citation. Each was opened and checked against the claim on the date shown.

  1. 1.Gemini Developer API pricing (opens in a new tab) — Google. Accessed Oct 13, 2026.
  2. 2.Runway API pricing (opens in a new tab) — Runway. Accessed Oct 13, 2026.
  3. 3.Billing (opens in a new tab) — Replicate. Accessed Oct 13, 2026.
  4. 4.Generate videos with Veo 3.1 in the Gemini API (opens in a new tab) — Google. Accessed Oct 13, 2026.
  5. 5.Queue (opens in a new tab) — fal. Accessed Oct 13, 2026.
  6. 6.Webhooks (opens in a new tab) — Replicate. Accessed Oct 13, 2026.
  7. 7.Deprecations (opens in a new tab) — OpenAI. Accessed Oct 13, 2026.

About this article

Vendor facts were read on the vendors' own pages on 2026-10-13: Google's Gemini API pricing, Veo and deprecations pages, OpenAI's deprecations page, Runway's API pricing, Replicate's billing and webhooks pages, and fal's queue documentation. INFRO Studio behaviour is described from INFRO's documentation and the source of the Studio app, the /studio/v1 and /v1 routes and the shared media-settings records, read the same day. No generation was run for this article and no performance figure is claimed.

Last checked against its sources on . The next review is due by . No separate named reviewer is recorded for this article.

How articles are written, sourced and corrected is set out in the editorial standards.