Authors
Authors are publication-scoped public byline profiles. They are assigned to posts through /post/save; they are not user accounts or token principals.
Authentication
All routes require a bearer token and the named publication capability. For a new author or a list, send a publication selector. An existing author_id already identifies its publication; a supplied selector must match.
Routes
| Route | Methods | Capability | Required input | Optional input and behavior | Success result |
|---|---|---|---|---|---|
/author/list |
GET, POST |
author.list |
Publication selector | Pagination | Paginated authors. |
/author/get |
POST |
author.list |
author_id, or publication selector plus slug |
— | author. |
/author/save |
POST |
author.save |
Create: publication selector and name; update: author_id |
name, slug, bio, avatar_media_id, external_url, socials, metadata |
Saved author. |
/author/delete |
POST |
author.delete |
author_id |
Matching publication selector | Deleted author. |
Author object
{
"author_id": "AUTHOR_UUID",
"publication_id": "PUBLICATION_UUID",
"slug": "ada-lovelace",
"name": "Ada Lovelace",
"bio": "Writer and mathematician.",
"avatar_media_id": "MEDIA_UUID",
"external_url": "https://example.com/ada",
"socials": { "website": "https://example.com/ada" },
"metadata": null,
"created_at": "2026-08-19 00:00:00.000000",
"updated_at": "2026-08-19 00:00:00.000000"
}
Save an author
| Field | Required | Type | Description |
|---|---|---|---|
author_id |
No | UUID | Updates this author. Omit to create. |
publication_id / publication_slug |
Required on create | UUID / String | Selects the publication. |
name |
Required on create | String | Display name. Omit it on update to retain the stored value. |
slug |
No | String | Unique in the publication. Omit or send an empty value to derive it from name. |
bio |
No | String or null |
Biography; an empty value clears it. |
avatar_media_id |
No | UUID or null |
Media identifier; an empty value clears it. |
external_url |
No | URL or null |
Public profile URL; an empty value clears it. |
socials |
No | Object or Array or null |
Public social data. |
metadata |
No | Object or Array or null |
Integration-defined metadata. |
curl -sS https://api.blog.service.m7.org/v1/author/save \
-H 'Authorization: Bearer ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"publication_slug":"engineering-notes","name":"Ada Lovelace"}'
/author/list accepts the standard pagination fields. /author/delete is permanent and returns 409 while the author is assigned to a post; first replace that post's author_ids through /post/save.