Image Models You Can Deploy Without a Legal Question
Bria builds image models trained exclusively on licensed, rights-cleared data — and licenses the foundation model with commercial liability coverage attached. For a company putting generated imagery into a product, an advertisement, or a publication, that provenance answers a question most image models leave open. The family also takes a distinctive technical approach: structured JSON prompts instead of free-form text, which separates lighting from composition from camera settings so that changing one does not disturb the others. The same input reproduces the same output, making edits auditable rather than probabilistic. On DEVUP AI they run through the standard images endpoint, billed in Algerian Dinar.

Most image models are chosen on output quality. Bria is frequently chosen on provenance. The family is trained exclusively on fully licensed, rights-cleared data, and the foundation model is licensed with commercial liability coverage — a combination that turns "what was this trained on" from an unanswerable question into a documented one. For regulated industries, for brand assets, and for anyone whose legal team reviews what ships, that is the deciding property rather than a footnote.
The technical approach is equally distinctive. Rather than a sentence, these models take a structured JSON description that names visual elements separately: lighting, composition, camera settings, colour, style. Because those attributes were separated during training rather than tangled together in scraped captions, changing one leaves the others intact. Adjust the camera angle and the lighting survives. Adjust the lighting and the composition holds.
Two properties follow, and both matter more in a pipeline than in a creative session. The same input reproduces the same output, so an image approved last month regenerates identically today. And the instruction is structured data rather than prose — it can be versioned, diffed, reviewed, and generated by code, which makes an edit auditable in a way a text prompt never is.
The family covers generation and editing as separate models, with native mask support for changing one region while freezing the rest. Distilled releases generate in a handful of inference steps rather than dozens, keeping the same control at a fraction of the compute. And because structured prompting is native rather than bolted on, an agent producing edits programmatically works with the model's natural input format rather than against it.
On DEVUP AI, Bria models run through the same images endpoint as the rest of the catalogue, with one API key and billing in Algerian Dinar.
Available Bria Models
Deploy and access all published models in this family with unified DZD pricing and zero foreign card requirement.
| Model | Context | DZD in / 1M tokens | DZD out / 1M tokens | Actions |
|---|---|---|---|---|
| fibo-1.5Bria/fibo-1.5 | image Tokens | 16 DZD / image | View model | |
| fibo_edit-1.5Bria/fibo_edit-1.5 | image Tokens | 16 DZD / image | View model | |
| fibo_editBria/fibo_edit | image Tokens | 14 DZD / image | View model | |
| enhanceBria/enhance | image Tokens | 14 DZD / image | View model | |
| blur_backgroundBria/blur_background | image Tokens | 14 DZD / image | View model | |
| eraseBria/erase | image Tokens | 14 DZD / image | View model | |
| erase_foregroundBria/erase_foreground | image Tokens | 14 DZD / image | View model | |
| expandBria/expand | — | 14 DZD / image | View model | |
| fiboBria/fibo | image Tokens | 14 DZD / image | View model | |
| gen_fillBria/gen_fill | image Tokens | 14 DZD / image | View model | |
Call any Bria model
Every model on this page uses the same API key and standard OpenAI-compatible endpoint. The example below uses the featured model Bria/fibo-1.5.
import urllib.request
from openai import OpenAI
client = OpenAI(
api_key="$DEVUP_API_KEY",
base_url="https://api.devupai.com/v1",
)
response = client.images.generate(
model="Bria/fibo-1.5",
prompt="A photo of an astronaut riding a horse on Mars.",
size="1024x1024",
n=1,
)
image_url = response.data[0].url
with urllib.request.urlopen(image_url) as res:
image_bytes = res.read()
with open("output.png", "wb") as f:
f.write(image_bytes)import DevupAI from "devupai";
import { writeFile } from "node:fs/promises";
const client = new DevupAI({
apiKey: process.env.DEVUP_API_KEY,
});
const response = await client.images.generate({
model: "Bria/fibo-1.5",
prompt: "A photo of an astronaut riding a horse on Mars.",
size: "1024x1024",
n: 1,
});
const image = await fetch(response.data[0].url);
await writeFile("output.png", Buffer.from(await image.arrayBuffer()));curl -X POST "https://api.devupai.com/v1/images/generations" \
-H "Authorization: Bearer $DEVUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Bria/fibo-1.5",
"prompt": "A photo of an astronaut riding a horse on Mars.",
"size": "1024x1024",
"n": 1
}'Frequently Asked Questions
It changes what you can answer when someone asks. A logo, a campaign visual, or a product image is a legal asset — and generating one from a model trained on scraped material creates a question you cannot settle later. Bria trains exclusively on rights-cleared data and attaches commercial liability coverage to the foundation model. Read the terms for your specific deployment rather than assuming: training-data provenance and weight licensing are separate questions, and what applies through one route may not apply through another.
Because it separates what a sentence tangles together. In a conventional model, "vintage" moves colour, grain, contrast, and lighting at once, because those moved together in the captions it learned from — so you cannot request one without the others. Bria was trained on captions where those attributes are named separately. Set the camera angle and you change the camera angle, not the mood. That independence is what makes iterating on one dimension at a time possible.
Some models in the family will accept one; the generation model is explicit that it expects structured input and does not work well with free-form text. A sentence produces something — it is simply markedly worse than what the model can do. The practical answer is a two-stage pipeline: convert intent to structure once, store the structure, and generate from the stored version thereafter. That also removes the only non-deterministic step in the path.
An approved asset you can recreate. With a fixed structured prompt and a fixed seed, the same image regenerates months later — which means your source of truth is a small text file rather than a binary you must never lose. It also makes comparison meaningful: change one field, and any difference in the output is attributable to that change rather than to the sampler.
Yes, through a dedicated editing model with native mask support. Supply a black-and-white mask and only the white region is regenerated; everything else is preserved exactly. That is the difference between changing a sign above a door and regenerating a storefront that happens to have a different sign. Generative fill and outpainting work the same way.
Open-ended creative exploration. The looseness of a conventional model is a feature when you are searching for an idea, and writing a structured brief to get one image is the wrong economics for that. Bria is built for production: controlled variations on an approved asset, brand-consistent catalogues, automated pipelines, and anything that needs an audit trail.