Ghost Authors API

Authors represent the staff users who create content in a Ghost publication.

OpenAPI Specification

ghost-authors-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Ghost Admin Authors API
  description: The Ghost Admin API provides full read and write access to all content and configuration within a Ghost publication. It enables developers to create, update, and delete posts, pages, tags, members, tiers, newsletters, and offers programmatically. Authentication is handled via JSON Web Tokens generated from an Admin API key, integration tokens, or staff access tokens. The Admin API supports everything the Ghost Admin interface can do and more, making it suitable for building custom publishing workflows, content automation, member management systems, and advanced integrations.
  version: '5.0'
  contact:
    name: Ghost Foundation
    url: https://ghost.org/docs/admin-api/
  termsOfService: https://ghost.org/terms/
servers:
- url: https://{site}.ghost.io/ghost/api/admin
  description: Ghost Pro Hosted Site
  variables:
    site:
      default: your-site
      description: Your Ghost site subdomain
- url: '{protocol}://{domain}/ghost/api/admin'
  description: Self-Hosted Ghost Instance
  variables:
    protocol:
      default: https
      enum:
      - https
      - http
    domain:
      default: localhost:2368
      description: Your Ghost instance domain and port
security:
- adminApiToken: []
tags:
- name: Authors
  description: Authors represent the staff users who create content in a Ghost publication.
paths:
  /authors/:
    get:
      operationId: browseAuthors
      summary: Browse authors
      description: Retrieve a paginated list of authors (staff users) for the publication. Supports including a count of posts per author using the include=count.posts parameter.
      tags:
      - Authors
      parameters:
      - $ref: '#/components/parameters/includeAuthorRelations'
      - $ref: '#/components/parameters/fields'
      - $ref: '#/components/parameters/filter'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/order'
      responses:
        '200':
          description: A list of authors
          content:
            application/json:
              schema:
                type: object
                properties:
                  authors:
                    type: array
                    items:
                      $ref: '#/components/schemas/Author'
                  meta:
                    $ref: '#/components/schemas/PaginationMeta'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /authors/{id}/:
    get:
      operationId: readAuthorById
      summary: Read an author by ID
      description: Retrieve a single author by their unique identifier.
      tags:
      - Authors
      parameters:
      - $ref: '#/components/parameters/resourceId'
      - $ref: '#/components/parameters/includeAuthorRelations'
      - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: A single author
          content:
            application/json:
              schema:
                type: object
                properties:
                  authors:
                    type: array
                    items:
                      $ref: '#/components/schemas/Author'
                    minItems: 1
                    maxItems: 1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /authors/slug/{slug}/:
    get:
      operationId: readAuthorBySlug
      summary: Read an author by slug
      description: Retrieve a single author by their URL slug.
      tags:
      - Authors
      parameters:
      - $ref: '#/components/parameters/resourceSlug'
      - $ref: '#/components/parameters/includeAuthorRelations'
      - $ref: '#/components/parameters/fields'
      responses:
        '200':
          description: A single author
          content:
            application/json:
              schema:
                type: object
                properties:
                  authors:
                    type: array
                    items:
                      $ref: '#/components/schemas/Author'
                    minItems: 1
                    maxItems: 1
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    fields:
      name: fields
      in: query
      required: false
      description: Comma-separated list of fields to return in the response. Use this to limit the size of the response by only requesting the fields you need.
      schema:
        type: string
    page:
      name: page
      in: query
      required: false
      description: Page number for paginated results. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
    order:
      name: order
      in: query
      required: false
      description: Field and direction to order results by, for example published_at DESC or title ASC.
      schema:
        type: string
    resourceSlug:
      name: slug
      in: path
      required: true
      description: The URL slug of the resource
      schema:
        type: string
    includeAuthorRelations:
      name: include
      in: query
      required: false
      description: Include a count of posts associated with each author.
      schema:
        type: string
        enum:
        - count.posts
    filter:
      name: filter
      in: query
      required: false
      description: Apply fine-grained filters using Ghost's NQL query language. Examples include featured:true, tag:getting-started, visibility:public, and combinations using plus and comma operators.
      schema:
        type: string
    limit:
      name: limit
      in: query
      required: false
      description: Maximum number of resources to return per page. Defaults to 15. Use all to return all resources without pagination.
      schema:
        oneOf:
        - type: integer
          minimum: 1
        - type: string
          enum:
          - all
        default: 15
    resourceId:
      name: id
      in: path
      required: true
      description: The unique identifier of the resource
      schema:
        type: string
        format: uuid
  responses:
    Unauthorized:
      description: Authentication failed or API key is missing
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    PaginationMeta:
      type: object
      description: Pagination metadata included in browse responses
      properties:
        pagination:
          type: object
          properties:
            page:
              type: integer
              description: Current page number
              minimum: 1
            limit:
              type: integer
              description: Number of items per page
              minimum: 1
            pages:
              type: integer
              description: Total number of pages
              minimum: 1
            total:
              type: integer
              description: Total number of items across all pages
              minimum: 0
            next:
              type: integer
              description: Next page number, null if on last page
              nullable: true
            prev:
              type: integer
              description: Previous page number, null if on first page
              nullable: true
    ErrorResponse:
      type: object
      description: Standard Ghost API error response
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              message:
                type: string
                description: Human-readable error message
              type:
                type: string
                description: Error type identifier
              context:
                type: string
                description: Additional context about the error
                nullable: true
    Author:
      type: object
      description: An author represents a staff user who creates content in a Ghost publication.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the author
        name:
          type: string
          description: Display name of the author
        slug:
          type: string
          description: URL-safe slug for the author
        profile_image:
          type: string
          format: uri
          description: Profile image URL
          nullable: true
        cover_image:
          type: string
          format: uri
          description: Cover image URL for the author page
          nullable: true
        bio:
          type: string
          description: Author biography
          nullable: true
        website:
          type: string
          format: uri
          description: Author personal website URL
          nullable: true
        location:
          type: string
          description: Author location
          nullable: true
        facebook:
          type: string
          description: Facebook username
          nullable: true
        twitter:
          type: string
          description: Twitter handle
          nullable: true
        meta_title:
          type: string
          description: SEO meta title for the author page
          nullable: true
        meta_description:
          type: string
          description: SEO meta description for the author page
          nullable: true
        url:
          type: string
          format: uri
          description: Full URL of the author page
        count:
          type: object
          description: Count data, included when requested via include=count.posts
          properties:
            posts:
              type: integer
              description: Number of posts by this author
              minimum: 0
  securitySchemes:
    adminApiToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JSON Web Token generated from an Admin API key. The key is split into an ID and secret at the colon separator. The ID is used as the kid header and the secret is used to sign the token with HS256.
externalDocs:
  description: Ghost Admin API Documentation
  url: https://ghost.org/docs/admin-api/