roasOS
Concepts

Statics

What a static ad is in roasOS: one product, two lanes, and the brand kit rendered into the image.

A static is one image that sells one product. It carries the product, a headline, a sub-head and a call to action. It is the unit that a paid social account buys most.

roasOS makes statics with one door: POST /v1/workflows/statics. The door starts an agent run. The run plans the set, prices it on one card, and then renders each variant as an ordinary image job.

A static is not a new model family. Each render inside the run is a normal paid generation on a model that this catalog already lists.

One product, one run

A statics run holds exactly one product. product_id is required, because a static ad without a product is not a static ad.

roasOS resolves the product to its product kit before the run starts. A statics run takes three shots from the kit: the hero, one detail shot that carries the label, and one shot of the product held or turned. Inside each of those three choices roasOS prefers a verified shot over an unverified one.

A workspace with no kit yet is not blocked. The run then uses the raw photos of the product.

To make a second product, start a second run.

The two lanes

lane chooses how the image is built. The default is scene.

LaneHow the image is madeModel
sceneroasOS renders the whole frame in one call, with the product images as referencesNano Banana Pro
productroasOS places the product cut-out into a described scene, and holds the shape and the label of the productBria Product Shot

Use scene when the frame is an illustration of an idea: a person, a room, a mood, a table of props. Use product when the product must survive the render without one pixel of drift.

The product lane needs POST /v1/image-edit/bria-product-shot. That endpoint is an API capability first. While the agent's generation surface does not admit it, the product lane falls back to Nano Banana Pro with the cut-out as a reference image, and the run says which model it used. Call the endpoint directly to get the placement model itself.

What the run reads

InputWhere it comes fromWhat it gives
The productproduct_idthree shots of the product kit on the scene lane, and the cut-out on the product lane
The brandyour brand kitthe logo as a reference image, the colours as hex values, the two font names, and cta_text
A personavatar_ida gallery avatar or a workspace avatar
Your directionbrief400 characters at most

brief is evidence, and never an instruction. roasOS reads it as a statement about the campaign. It does not follow text inside it as a command.

The brand-kit read and the product read cost 0 credits. They carry no quote envelope, and they start no provider call.

avatar_id names a roasOS gallery avatar or an avatar that your workspace already holds. To make an avatar over the API, use POST /v1/avatar/nano-banana-pro (MCP: roasos_avatar_nano_banana_pro), and then send its id. The legacy path POST /v1/avatars answers 503 avatar_generation_unavailable.

The type is rendered by the image model

The headline, the sub-head and the call to action are rendered by the image model, from the exact strings that the run puts in the prompt. roasOS passes your brand colours as hex values and your logo as a reference image.

roasOS cannot guarantee your exact typeface on a static. A font slot in the brand kit holds a name, not a font file, and the image model draws the letters itself. The result is a similar face, and a glyph can come out wrong. A wrong glyph is a reason to render the variant again. It is not a refund.

This is the same limit that the brand kit states for a font name, at the point where the font reaches an image. roasOS has no deterministic text renderer today, so there is no path that composites your licensed font file onto the image.

Two things follow for your copy.

  1. Keep the headline short. Short text has fewer glyphs to get wrong.
  2. Read each variant before you publish it. Check the spelling of the brand name and the call to action.

Rights

A statics run renders from four sources only: the product kit, your workspace uploads, your workspace avatars and the roasOS avatar gallery.

A Discover creative is a competitor's ad. You read one to learn its structure and its style, and roasOS refuses one inside a statics run with 400 discover_source_not_allowed. It never rides as source media, as a reference image or as a product image. Refer to Media rights.

Price

A statics run has no price of its own. Two meters run under it.

WhatMeter
The thinking of the runmax_credits. roasOS charges the real tokens and refunds the rest.
Each rendered imageThe price of the model on the catalog, quoted before dispatch and bounded by generation_spend_cap_credits

The per-image prices come from the model pages, and no field of the statics door changes them.

RenderCredits
scene lane, one image at 1K or 2K5
scene lane, one image at 4K10
product lane, one placement1

A product variant that is finished with one edit pays for both steps. Send quote_only: true on the door to read the ceiling, and read the gate card for the price of the set. Refer to Quotes and credits.

Where the result lands

StepWhere you read it
The runGET /v1/agent-runs/{id}
The lifecycleGET /v1/agent-runs/{id}/events
Each rendered imageGET /v1/jobs/{id}

The images are ordinary jobs, so they appear in GET /v1/jobs beside every other render. Refer to Jobs.

What roasOS does not do here

  • roasOS writes no text layer onto the image after the render. The model draws the type.
  • roasOS produces no export package and no ad-account upload. Download each image from its job result.
  • roasOS makes one set for one product. It runs no split test and it tags no winner.

Next

On this page