Generated by API Evangelist
Written by API Evangelist tooling for Ghost's API. It is a proposal applied on top of the contract, not a document Ghost publishes.
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Ghost Org Posts API
version: 1.0.0
extends: openapi/ghost-org-posts-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 6
- target: $.paths['/posts/'].get
update:
x-apievangelist-phrasing:
intent: List posts including drafts
effect: read
questions:
- How do I list all my posts including drafts and scheduled ones?
- Can I filter posts by tag and sort by publish date?
- Which related data can I include when listing posts?
instructions:
- text: List posts matching {filter}.
slots:
filter: query.filter
- text: Show me {limit} posts ordered by {order}.
slots:
limit: query.limit
order: query.order
- text: List posts with {include} in {formats} format.
slots:
include: query.include
formats: query.formats
method: generated
generated: '2026-09-26'
- target: $.paths['/posts/'].post
update:
x-apievangelist-phrasing:
intent: Create a post
effect: write
questions:
- How do I publish a new blog post programmatically?
- Can I tag a new post with a tag that doesn't exist yet?
- Is the title the only required field for a new post?
instructions:
- text: Create post {posts}.
slots:
posts: requestBody.posts
- text: Write a new draft post with the title and HTML body in {posts}.
slots:
posts: requestBody.posts
method: generated
generated: '2026-09-26'
- target: $.paths['/posts/{id}/'].get
update:
x-apievangelist-phrasing:
intent: Get a post by ID
effect: read
questions:
- How do I load one post by ID, including drafts and scheduled ones?
- Can I get a single post's content as HTML?
instructions:
- text: Get post {id}.
slots:
id: path.id
- text: Get post {id} with content in {formats}.
slots:
id: path.id
formats: query.formats
method: generated
generated: '2026-09-26'
- target: $.paths['/posts/{id}/'].put
update:
x-apievangelist-phrasing:
intent: Update a post
effect: write
questions:
- How do I edit a post without resending every field?
- Why does editing a post need the current updated_at?
instructions:
- text: Update post {id} with {posts}.
slots:
id: path.id
posts: requestBody.posts
- text: Change the title of post {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/posts/{id}/'].delete
update:
x-apievangelist-phrasing:
intent: Delete a post
effect: destructive
questions:
- How do I permanently delete a blog post?
- Can a deleted post be restored?
instructions:
- text: Delete post {id}.
slots:
id: path.id
- text: Permanently remove post {id}.
slots:
id: path.id
method: generated
generated: '2026-09-26'
- target: $.paths['/posts/slug/{slug}/'].get
update:
x-apievangelist-phrasing:
intent: Get a published post by slug
effect: read
questions:
- How do I find a post when I know its URL but not its ID?
- Can I look up a published post by slug?
instructions:
- text: Get the post with slug {slug}.
slots:
slug: path.slug
- text: Look up post {slug} with {include}.
slots:
slug: path.slug
include: query.include
method: generated
generated: '2026-09-26'
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.