House-style illustrations
On this page
How a style is learned #
At the site read, Brenzuri collects up to six pictures from the site’s own pages, on the site’s own domain only, and asks one vision model what they have in common: a one-sentence description, up to six hex colours, a caption pattern such as Plate {n} - {topic}, and a confidence.The result is a draft. Nothing is drawn from a draft. A person confirms it. An Owner or Editor confirms, edits, turns off or discards the style in Setup › Illustration style. Only then is it used. It is not re-derived per article. Reading the site again proposes a new draft beside the confirmed style and never overwrites it.
curl "$BRENZURI_URL/api/v1/sites/$SITE_ID/house-style" \
-H "Authorization: Bearer $BRENZURI_KEY"When a picture is made #
A brief with illustration: "generate"adds theillustratestep to the job. It is optional: if it fails it can be skipped and the article still finishes.A column of a site with a confirmed style asks for an illustration; the site brief page offers it under the same condition. A Beat’s articles are written without one. The step has a budget of 150 seconds. If it cannot finish inside it, the step is skipped and says why. Making a picture costs no credits.
illustration: "generate" for a site with no confirmed style gets a picture in the generic style.
What an article carries #
{
"id": "b7d1f4a2-3c58-4e90-a6b1-5f08c2e9d374",
"status": "ready",
"url": "/api/v1/articles/9f3b1c2a-6d4e-4b7a-8c15-2e0a7d91b3f4/illustration?i=b7d1f4a2-3c58-4e90-a6b1-5f08c2e9d374",
"altText": "Flat shapes of a ferry crossing a calm blue strait under a pale sky.",
"caption": "Plate 4 - Ferry timetables",
"label": "AI-generated",
"styleLabel": "House style",
"regenerating": false,
"regenerationsLeft": 4
}| Field | Notes |
|---|---|
status | ready, skipped, generating or failed. url exists only when ready. |
label | AI-generated. |
styleLabel | House style or Abstract editorial: which style made it. |
caption | {topic}, at most 200 characters; otherwise the topic. A {n} plate number counts up per style, and a regenerated picture keeps its plate number while the style is the same. |
altText |
GET on url, using the same key. The label in exports is one of two sentences, depending on the style: “AI-generated, in the site’s house style. No real people, places or logos.” or “AI-generated, abstract editorial. No real people, places or logos.”
Ask for a new picture #
POST /articles/{id}/illustration/regenerate needs an API key with the edit scope. It is an ordinary edit, like adding a source. It is not an MCP tool. It replaces a picture the article already has; an article that has never had one answers 409 no_illustration.
curl -X POST "$BRENZURI_URL/api/v1/articles/$ARTICLE_ID/illustration/regenerate" \
-H "Authorization: Bearer $BRENZURI_KEY"illustration.regenerating: true. The new picture is made after the response. Read the article until illustration.regenerating is false.
const url = `${process.env.BRENZURI_URL}/api/v1/articles/${articleId}`;
const headers = { Authorization: `Bearer ${process.env.BRENZURI_KEY}` };
await fetch(`${url}/illustration/regenerate`, { method: 'POST', headers });
let article;
do {
await new Promise((r) => setTimeout(r, 3000));
article = await (await fetch(url, { headers })).json();
} while (article.illustration?.regenerating);
console.log(article.illustration?.status, article.illustration?.lastFailure ?? '');| Limit | Value |
|---|---|
The new picture is a new version, Illustration regenerated, and it names the key. An approved article goes back toneedsReview, and the label with it.An article that has never had a picture: 409 no_illustration. A language version never has one, so asking for a new picture of a version answers the same.A Beat’s article keeps the picture it was written with: 409 beat_article.Only one at a time per article: 409 illustration_regenerating.If this deployment has no image service, GET /sites/{siteID}/house-stylesaysenabled: falseand regenerating answers 503illustrations_off.
In exports and on your site #
| Where | The picture | The label |
|---|---|---|
illustration | label and styleLabel |