BrenzuriStart free
Endpoints
Reference

Endpoints

Anything not on this list answers 403 key_not_allowed to a key. It stays with a person.

On this page

How to read these pages#

  • Paths are relative to https://{your Brenzuri host}/api/v1. A path written {id} is a placeholder.
  • Scope is the scope the credential needs. Role is what the creating person must be allowed to do as well. Both are checked.
  • Credits says whether the route spends. Only starting an article or a column does.
  • Every route takes Authorization: Bearer <key>. Bodies are JSON with Content-Type: application/json, and the 2 MB limit of the proxy applies.
  • JSON responses carry Cache-Control: no-store.

Errors every route can return#

The per-route tables list only what is specific to the route.
StatusCodeCause
401invalid_keyThe token is unknown, revoked, or has the wrong prefix for the path.
403scope_missingThe credential does not carry the scope.
403forbiddenThe creating person’s role does not allow it.
404not_foundNo such object, or one the credential cannot see. A route that is not in this list also answers not_found to a bearer token, and is logged.
409workspace_pausedBrenzuri has paused the workspace; writes are refused.
410workspace_deletedThe workspace was deleted.
429rate_limitedMore than 60 requests a minute.

All 36 routes#

MethodPathScopeWhat
POST`/api/v1/briefs`briefCreate a brief
GET`/api/v1/briefs/{id}`readRead a brief
PATCH`/api/v1/briefs/{id}`briefChange a brief
POST`/api/v1/briefs/{id}/estimate`briefAsk what starting the brief would cost, and whether the credential may afford it
POST`/api/v1/articles`generateStart an article from a brief
POST`/api/v1/articles/{id}/languages`generateAdd language versions to an article that is finished
GET`/api/v1/articles`readList the articles this credential can see, newest change first
GET`/api/v1/articles/{id}`readRead one article with its text, claims, sources, quality checks, versions and label
POST`/api/v1/articles/{id}/claims/{claimId}/sources`editAdd a source to a claim
POST`/api/v1/articles/{id}/paragraphs/{n}/regenerate`editRewrite one paragraph from the claims it carries
PUT`/api/v1/articles/{id}/units/{n}`editReplace the text of one unit: a paragraph, heading or list item with text, a table row with cells
PUT`/api/v1/articles/{id}/title`editChange the title
PUT`/api/v1/articles/{id}/deck`editChange the deck, the standfirst under the title
DELETE`/api/v1/articles/{id}/links/{linkId}`editRemove one internal link, one of the internalLinks of the article
POST`/api/v1/articles/{id}/structure`editChange the shape of the text: insert a paragraph, heading, list item or table row, remove a unit, or move one up or down
POST`/api/v1/articles/{id}/archive`editArchive an article
GET`/api/v1/jobs/{id}`readRead where a job is now: its status, the step it is on and every step with its status
GET`/api/v1/jobs/{id}/events`readFollow a job as a server-sent event stream
POST`/api/v1/jobs/{id}/steps/{stepId}/retry`editRun the failed step again
POST`/api/v1/jobs/{id}/steps/{stepId}/skip`editSkip a failed optional step (seo, illustrate, or a language version step such as write-es) and let the job carry on
POST`/api/v1/jobs/{id}/cancel`editCancel a job
GET`/api/v1/sites`readList the sites this credential can see
GET`/api/v1/sites/{siteID}`readRead one site: its voice, plan of columns, what is being written, and a summary of its house style
POST`/api/v1/sites/{siteID}/analyze`editRead the site again
POST`/api/v1/sites/{siteID}/topics/check`briefCount the independent origins for a topic before committing to a brief
GET`/api/v1/sites/{siteID}/topics/{topicId}`readRead one column: the topic, its origins, and the sources you have added
POST`/api/v1/sites/{siteID}/topics/{topicId}/write`generateWrite a column
POST`/api/v1/sites/{siteID}/topics/{topicId}/sources`editAdd a source to a column: a page to read, a note you wrote, or a copy of another source
GET`/api/v1/sites/{siteID}/connections`readList the connection that delivers this site’s articles, so you can find the connectionId that deliver needs
POST`/api/v1/articles/{id}/export`exportRender the article as a file
GET`/api/v1/exports/{exportId}`exportDownload an export made with the route above
POST`/api/v1/articles/{id}/deliver`exportDeliver the article through a connection
GET`/api/v1/sites/{siteID}/house-style`readRead the site’s illustration style: the one a person confirmed, and a proposal waiting for a person to look at it
GET`/api/v1/sites/{siteID}/house-style/images/{imageID}`readDownload one of the reference images the style was read from
GET`/api/v1/articles/{id}/illustration`readDownload the picture on an article
POST`/api/v1/articles/{id}/illustration/regenerate`editMake a new picture for an article that has one, in the site’s style

What a key cannot call#

Everything else answers 403 key_not_allowed, even with every scope. That includes approving and republishing, keeping a flag, comments, writing an article again, rescoring, voices, Beats and their candidates, schedules, creating, pausing or deleting a site, changing the house style, creating, changing, testing, listing or retrying a connection (a key reads one site’s connection with GET /sites/{siteID}/connections), site delivery, billing and credits, usage, /me, and the developer pages that make keys, agents and webhooks.