Ghost · Schema

PostInput

Input fields for creating or updating a post or page.

PublishingNewslettersMembershipsSubscriptionCMSOpen-SourceContent

Properties

Name Type Description
title string Title of the post
slug string Custom URL slug
lexical string Content in Lexical editor format (JSON string)
html string Content in HTML format, converted to Lexical on save
status string Publication status
visibility string Access visibility level
featured boolean Whether the post is featured
feature_image string Featured image URL
feature_image_alt string Alt text for the featured image
feature_image_caption string Caption for the featured image
custom_excerpt string Custom excerpt
codeinjection_head string Code injection in the head
codeinjection_foot string Code injection in the foot
custom_template string Custom template name
canonical_url string Canonical URL
published_at string Scheduled publication time
updated_at string Required for updates to prevent collisions
tags array Tags to associate, can be name strings or tag objects
authors array Authors to associate
email_subject string Custom email newsletter subject
og_image string Open Graph image URL
og_title string Open Graph title
og_description string Open Graph description
twitter_image string Twitter card image URL
twitter_title string Twitter card title
twitter_description string Twitter card description
meta_title string SEO meta title
meta_description string SEO meta description
View JSON Schema on GitHub

JSON Schema

ghost-org-postinput-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/PostInput",
  "title": "PostInput",
  "type": "object",
  "description": "Input fields for creating or updating a post or page.",
  "properties": {
    "title": {
      "type": "string",
      "description": "Title of the post"
    },
    "slug": {
      "type": "string",
      "description": "Custom URL slug"
    },
    "lexical": {
      "type": "string",
      "description": "Content in Lexical editor format (JSON string)"
    },
    "html": {
      "type": "string",
      "description": "Content in HTML format, converted to Lexical on save"
    },
    "status": {
      "type": "string",
      "description": "Publication status",
      "enum": [
        "published",
        "draft",
        "scheduled"
      ]
    },
    "visibility": {
      "type": "string",
      "description": "Access visibility level",
      "enum": [
        "public",
        "members",
        "paid",
        "tiers"
      ]
    },
    "featured": {
      "type": "boolean",
      "description": "Whether the post is featured"
    },
    "feature_image": {
      "type": "string",
      "format": "uri",
      "description": "Featured image URL",
      "nullable": true
    },
    "feature_image_alt": {
      "type": "string",
      "description": "Alt text for the featured image",
      "nullable": true
    },
    "feature_image_caption": {
      "type": "string",
      "description": "Caption for the featured image",
      "nullable": true
    },
    "custom_excerpt": {
      "type": "string",
      "description": "Custom excerpt",
      "nullable": true
    },
    "codeinjection_head": {
      "type": "string",
      "description": "Code injection in the head",
      "nullable": true
    },
    "codeinjection_foot": {
      "type": "string",
      "description": "Code injection in the foot",
      "nullable": true
    },
    "custom_template": {
      "type": "string",
      "description": "Custom template name",
      "nullable": true
    },
    "canonical_url": {
      "type": "string",
      "format": "uri",
      "description": "Canonical URL",
      "nullable": true
    },
    "published_at": {
      "type": "string",
      "format": "date-time",
      "description": "Scheduled publication time",
      "nullable": true
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Required for updates to prevent collisions"
    },
    "tags": {
      "type": "array",
      "description": "Tags to associate, can be name strings or tag objects",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "slug": {
                "type": "string"
              }
            }
          },
          {
            "$ref": "#/components/schemas/Tag"
          }
        ]
      }
    },
    "authors": {
      "type": "array",
      "description": "Authors to associate",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "slug": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        }
      }
    },
    "email_subject": {
      "type": "string",
      "description": "Custom email newsletter subject",
      "nullable": true
    },
    "og_image": {
      "type": "string",
      "format": "uri",
      "nullable": true,
      "description": "Open Graph image URL"
    },
    "og_title": {
      "type": "string",
      "nullable": true,
      "description": "Open Graph title"
    },
    "og_description": {
      "type": "string",
      "nullable": true,
      "description": "Open Graph description"
    },
    "twitter_image": {
      "type": "string",
      "format": "uri",
      "nullable": true,
      "description": "Twitter card image URL"
    },
    "twitter_title": {
      "type": "string",
      "nullable": true,
      "description": "Twitter card title"
    },
    "twitter_description": {
      "type": "string",
      "nullable": true,
      "description": "Twitter card description"
    },
    "meta_title": {
      "type": "string",
      "nullable": true,
      "description": "SEO meta title"
    },
    "meta_description": {
      "type": "string",
      "nullable": true,
      "description": "SEO meta description"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/ghost-org-postinput"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.