Skip to main content
PUT
Create or update a site author

Authorizations

Authorization
string
header
required

Send your API key in the Authorization header as Bearer API_KEY. Account API keys work in every workspace you belong to: send X-Notra-Organization-Id with the workspace id or slug to choose one. Workspace endpoints require it when you belong to more than one workspace; GET /v1/me/workspaces works without it. Organization keys only accept their own workspace there.

Path Parameters

siteId
string
required
Minimum string length: 1
Pattern: ^[A-Za-z0-9_-]{1,100}$
Example:

"site_8f2kq1"

authorId
string
required

The author's id in blog.json. Posts name the author with it and its author page lives at {blogMount}/author/{authorId}.

Pattern: ^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$
Example:

"jane-doe"

Body

application/json

The whole author: fields you leave out are removed. Links must be https URLs.

name
string
required
Required string length: 1 - 80
title
string | null
Maximum string length: 80
bio
string | null
Maximum string length: 300
avatar
string | null

A path to an image in the site's public folder, such as /images/jane.png, or an https URL.

Pattern: ^(?:\/(?!\/)|https:\/\/)
url
string<uri> | null
x
string<uri> | null
linkedin
string<uri> | null
github
string<uri> | null
youtube
string<uri> | null
bluesky
string<uri> | null
mastodon
string<uri> | null
threads
string<uri> | null
instagram
string<uri> | null
previousId
string

Renames the author with this id to authorId, keeping its place in blog.json. Posts that name the old id lose the link until they name the new one.

Pattern: ^[a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?$
Example:

"jane"

force
boolean

Confirms renaming an author that is live or credited on Notra posts.

Response

Author saved as an unpublished change

site
object
required
authors
object[]
required

Authors in blog.json order, including unpublished changes.

authorPage
enum<string>
required

Layout of every author page: inline puts the avatar beside the name, stacked puts it above.

Available options:
inline,
stacked
Example:

"inline"

hasUnpublishedChanges
boolean
required

blog.json has staged Design changes that are not live yet. Publish them with POST /v1/sites/{siteId}/publish or from the dashboard.

Example:

true