BrenzuriStart free
Endpoints: export and delivery
Reference

Endpoints: export and delivery

The export scope renders and delivers. It never approves.

On this page

Exports render an article as a file. Delivery puts an approved article on a site through its connection. The export scope covers both, and neither approves.

GET/api/v1/sites/{siteID}/connections

  • Scoperead
  • Credits free

List the connection that delivers this site’s articles, so you can find the connectionId that deliver needs. A site has at most one connection, so the list has zero or one entries.

Path

NameTypeDescription
siteIDstringThe site id (lower-case UUID).

Response

200An array of Site connection. It never carries a secret, and target is the host only.

JSON
[
  {
    "id": "8E5A2C71-0B94-4D3F-A7C6-12F9D4E8B063",
    "kind": "wordpress",
    "name": "Kolibri WordPress",
    "target": "kolibri.example",
    "publishPolicy": "draft",
    "lastDeliveryAt": "2026-10-05T16:20:41Z"
  }
]

Errors

StatusCodeWhen
404not_foundNo such site, or not one this credential can see.
  • An empty array means the site has no connection yet. A person makes one in Connections.
curl "$BRENZURI_URL/api/v1/sites/$SITE_ID/connections" \
  -H "Authorization: Bearer $BRENZURI_KEY"
Example request

POST/api/v1/articles/{id}/export

  • Scopeexport
  • Credits free
  • Role edit

Render the article as a file. The workspace’s export rules are checked first. An export never approves.

Path

NameTypeDescription
idstringThe article id.

Body

NameTypeDescription
targetrequiredstringmarkdown, pdf or docx.

Response

200{ url }, a relative path to download with the same credential. It is not signed and does not carry an expiry; the file is kept for 7 days.

JSON
{
  "url": "/api/v1/exports/6E2B0D94-7C1A-4F35-98D2-A1B3C4D5E6F7"
}

Errors

StatusCodeWhen
409approval_requiredThe workspace requires approval before export and this version is not approved.
409export_blocked_flaggedThe workspace blocks export while a claim is flagged.
501not_built_yetPDF export, when this deployment has no renderer.
422report_too_largeThe PDF would be over 2 MB of layout.
503render_unavailableThe PDF renderer is down. Markdown still works.
  • There is no JSON, HTML or WordPress export target. Delivery to a site goes through deliver.
  • Raises the article.exported webhook with the target.
curl -X POST "$BRENZURI_URL/api/v1/articles/$ARTICLE_ID/export" \
  -H "Authorization: Bearer $BRENZURI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "target": "markdown"
  }'
Example request

GET/api/v1/exports/{exportId}

Download an export made with the route above.

Path

NameTypeDescription
exportIdstringThe id at the end of the url an export returned.

Response

200 fileThe file, with Content-Disposition: attachment; filename="<slug>-v<n>.<ext>" and the content type of the format.

Errors

StatusCodeWhen
404not_foundNo such export, or older than 7 days.
  • Exports older than 7 days are deleted the next time the workspace makes an export.

POST/api/v1/articles/{id}/deliver

  • Scopeexport
  • Credits free
  • Role edit

Deliver the article through a connection. For a key or an agent the result is always a draft on the destination. A person sets up the connection in Connections; a key finds its id with GET /sites/{siteID}/connections.

Path

NameTypeDescription
idstringThe article id.

Body

NameTypeDescription
connectionIdrequiredstringThe connection’s id: the id that GET /sites/{siteID}/connections returns, also the upper-case UUID in the address of its page in Brenzuri. It is matched as written, so keep its case.

Response

200The Delivery. status says whether it arrived, is held, or is being retried.

JSON
{
  "id": "0D4F6A18-93BE-4C27-8A50-E1C2B7D9F346",
  "connectionId": "8E5A2C71-0B94-4D3F-A7C6-12F9D4E8B063",
  "articleId": "9F3B1C2A-6D4E-4B7A-8C15-2E0A7D91B3F4",
  "articleTitle": "Ferry operators agree on a single timetable for the northern route",
  "at": "2026-10-06T12:40:02Z",
  "status": "delivered",
  "outcome": "draft",
  "httpStatus": 201,
  "attempts": 1,
  "externalUrl": "https://kolibri.example/wp-admin/post.php?post=412&action=edit"
}

Errors

StatusCodeWhen
409approval_requiredThe workspace requires approval before export and this version is not approved.
409export_blocked_flaggedThe workspace blocks export while a claim is flagged.
404not_foundNo such connection, or not the connection of the article’s site.
409connection_in_useAn article with no site was sent through a connection a site holds.
409article_archivedThe article is archived.
  • A site’s article can only go through that site’s connection, and one connection serves one site.
  • When the workspace is paused the delivery is kept as retrying instead of sent.
  • What the destination receives is described in Deliver to WordPress and Deliver to a custom site.
curl -X POST "$BRENZURI_URL/api/v1/articles/$ARTICLE_ID/deliver" \
  -H "Authorization: Bearer $BRENZURI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "connectionId": "{connectionId}"
  }'
Example request