{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Ads","description":"Generate and edit images and video with Bria's Fibo models through a REST API, Python and TypeScript SDKs, MCP server and agent skills. Licensed training data, controllable output, provenance on every result.","siteUrl":"https://docs.bria.ai","image":"/assets/bria-social-card.5f3c59395e7b5efa776984c64ef9cb0956b1d651f45b7ebf9502122a66054f35.db81178d.png","llmstxt":{"hide":false,"title":"Bria API documentation","description":"Bria's developer platform: controllable, commercially safe visual generative AI (images and video) as a REST API, Python and TypeScript SDKs, MCP server and agent skills.","details":{"path":"_llmstxt-details.md"},"sections":[{"title":"Getting started","description":"First call, authentication, async jobs and webhooks, rate limits, inputs.","includeFiles":["index.md","whats-new/fibo-2.md","getting-started/quickstart.md","getting-started/authentication.md","getting-started/async-requests.md","status.yaml","getting-started/rate-limits-and-errors.md","getting-started/working-with-images.md","getting-started/asset-retention.md"]},{"title":"Integrate","description":"Python SDK, TypeScript SDK, MCP server, agent skills, and machine-readable docs for agents.","includeFiles":["integration-methods/python-sdk.md","integration-methods/typescript-sdk.md","MCP-authentication.md","integration-methods/bria-skill.md","integration-methods/for-ai-agents.md"]},{"title":"Concepts","description":"Platform map, VGL and the Fibo models, safety, best practices.","includeFiles":["products-overview.md","VGL.md","safety.md","best-practices-overview.md","image-generation-best-practices.md","image-editing-best-practices.md","product-shots-best-practices.md"]},{"title":"Image Generation","description":"Generate images from text, reference images or structured (VGL) prompts with Fibo 2.","includeFiles":["image-generation-overview.md","image-generation.yaml"]},{"title":"Image Editing","description":"Instruction-based editing plus specialized endpoints for backgrounds, erasing, fill, expansion, upscaling and style.","includeFiles":["image-editing-overview.md","image-editing.yaml"]},{"title":"Product Shot Editing","description":"Cutouts, packshots, shadows, lifestyle scenes, product integration, holding, virtual try-on, automotive.","includeFiles":["product-shot-overview.md","product-shot-editing.yaml"]},{"title":"Video Editing","description":"Background removal (REST or real-time streaming), erasing, upscaling and masks for video; local video upload.","includeFiles":["video-editing-overview.md","local-video-upload-service.md","streaming-rmbg.md","video-editing.yaml"]},{"title":"Ads","description":"Finished ads as input. Ad Delayer turns one into editable layers (the guide holds the layer document contract); Ad Resize produces it at other sizes with the layout redone.","includeFiles":["ads-overview.md","ads.yaml"]},{"title":"Trust and provenance","description":"Public verification of Bria provenance, and attribution of outputs to licensed training data.","includeFiles":["trust-and-provenance-overview.md","visual-verification-overview.md","visual-verification.yaml","enterprise/attribution.md","bria-attribution-service.yaml"]},{"title":"Self-hosting","description":"Run licensed Bria models on your own GPUs. Buy a per-model license, install with Bria Studio or the Python library, run, and handle license errors.","includeFiles":["self-hosted/quickstart.md","self-hosted/overview.md","self-hosted/best-practices.md","self-hosted/fibo-2.md","self-hosted/rmbg-2.md"]},{"title":"Enterprise","description":"Run Bria in your own cloud or on-premises.","includeFiles":["enterprise/deployment-options.md"]}],"excludeFiles":["_llmstxt-details.md","README.md"]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"ads","__idx":0},"children":["Ads"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both Ads endpoints start from a finished ad: one flat PNG or JPEG with everything baked in. They answer the two questions a shipped ad raises after the design file is gone: how do I edit it, and how do I get it at another size."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Endpoint"},"children":["Endpoint"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What it does"},"children":["What it does"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Reference"},"children":["Reference"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/ads/delayer"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Takes the ad apart into editable layers: a background plate, image cutouts, live text with typography, and vector shapes, returned as one JSON layer document."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/ads"},"children":["Ads API reference"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /v2/ads/resize"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Produces the ad at up to ten other sizes with the layout redone for each shape: the Ad Delayer takes the ad apart, and Bria's layout engine composes the layers for each new shape."]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/ads"},"children":["Ads API reference"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the delayer when the ad itself has to change: a new headline, a translated line, a different price. Use resize when the ad is approved as it is and the campaign needs it in other placements. The two chain naturally: delayer first to edit, then resize the edited ad."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-a-job-runs","__idx":1},"children":["How a job runs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Both endpoints are asynchronous and share the platform's job model:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST"]}," the ad and get back a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request_id"]}," and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["status_url"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Poll the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/status"},"children":["status endpoint"]},", or register a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/async-requests#webhooks"},"children":["webhook"]}," and skip polling."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["On ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["COMPLETED"]},", the status body carries the result: a pointer to the hosted layer document for the delayer, one hosted image per target size for resize."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A delayer run takes about two minutes. A resize lays every size out from the ad's layers and takes several minutes; the job finishes when its slowest size does."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limits","__idx":2},"children":["Limits"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sources over 2048 px per side need an Enterprise plan. The delayer rejects a larger ad before any work is done; resize downscales it to fit first and says so in the response. Results stay hosted for the platform's standard ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/getting-started/asset-retention"},"children":["asset retention"]}," period."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/ads"},"children":["API reference"]}," has both request schemas, the completion payloads and the error catalogs."]}]},"headings":[{"value":"Ads","id":"ads","depth":1},{"value":"How a job runs","id":"how-a-job-runs","depth":2},{"value":"Limits","id":"limits","depth":2}],"frontmatter":{"title":"Ads","description":"Two endpoints that take a finished, flat ad as input. Ad Delayer turns it into editable layers; Ad Resize produces it at other sizes with the layout redone for each shape.","seo":{"title":"Ads"}},"lastModified":"2026-10-04T15:43:42.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/ads-overview","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}