Docs
Dashboard

Built-in modules

Authors

One directory of people, shared by every module that credits anybody.

A built-in module: the people who write. One person is one row whether they write blog articles, knowledge base articles or both, which is why this lives at /v1/authors and not under /v1/blog.

Release-independent, like the other modules.

List authors

GET /v1/authors

Every author alphabetically, each with their avatar, their three article counts and the resolved seo of their page. That is enough to build a contributors page from one request.

Takes limit, offset and media_urls.

One author

GET /v1/authors/{slug}
{
  "data": {
    "id": "aut_…",
    "name": "Ada Lovelace",
    "slug": "ada",
    "bio": "Writes about deploys.",
    "avatar": { "url": "…", "alt": "…", "width": 400, "height": 400, "content_type": "image/jpeg" },
    "social": {
      "website": "https://ada.example.com",
      "x": "https://x.com/ada",
      "x_handle": "ada",
      "github": "https://github.com/ada",
      "github_handle": "ada",
      "linkedin": "https://linkedin.com/in/ada",
      "mastodon": null
    },
    "article_count": 14,
    "blog_article_count": 9,
    "kb_article_count": 5,
    "seo": { "title": "Ada Lovelace", "description": "Writes about deploys.", "og_image": {}, "canonical_url": null, "noindex": false }
  },
  "meta": { "module": "authors", "release_independent": true }
}

An unknown slug teaches with did_you_mean and names every author slug that exists.

Choose the count deliberately

Three numbers, and picking the wrong one is the mistake this module invites:

  • article_count: every module together. What an author page across the whole site wants.
  • blog_article_count: what a blog index means by “9 articles” under a byline.
  • kb_article_count: knowledge base articles.

Printing the total under a blog byline overstates it for anyone who also writes help articles.

Both forms are served, resolved for you:

  • x_handle / github_handle: the handle, stored without an @. Print this.
  • x / github / linkedin / mastodon / website: the full URL. Link this.

Each is a string or null. You never have to build a profile URL from a handle, or strip one out of a URL to display it.

An author page is two requests

The person, and their articles:

GET /v1/authors/ada
GET /v1/blog/articles?author=ada&limit=20

There is no “articles by this author” endpoint, because the listing endpoint already filters, pages and searches. ?author= matches an article crediting that person anywhere in its authors, so a co-authored post appears on both authors’ pages.

References and pages

Nested inside an article, an author is a reference: id, name, slug, bio and social. No article_count, no avatar on the knowledge base’s byline, and no seo. Those belong to the page, and a card printing twenty bylines will never render twenty og images.

Fetch /v1/authors/{slug} for the page shape.

Notes

  • Read-only, any key kind. Authors are managed in the dashboard.
  • These URLs were /v1/blog/authors before launch and moved when the knowledge base began crediting the same people. The old paths are gone, not redirected.

Updated at, Wednesday, September 2, 2026