Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.
openapi: 3.2.0
info:
title: empryo.com public Blog API
version: 1.0.0
description: 'The read-only public surface of empryo.com — release metadata for the Empryo AI coding agent, plus the machine-readable content mirrors (llms.txt and per-page markdown). Empryo itself is a local tool: the primary programmatic interface is the CLI (`empryo --headless "" --json`), documented at https://empryo.com/docs/headless. No authentication; all endpoints are public GETs. Please cache: release data changes only on releases.'
contact:
name: Empryo
url: https://empryo.com/contact
servers:
- url: https://empryo.com
tags:
- name: Blog
paths:
/api/blog:
get:
operationId: listBlogPosts
summary: Blog index
description: 'Every blog post, newest first: slug, title, description, date, author, canonical URL and its raw-markdown mirror URL.'
responses:
'200':
description: Blog index.
content:
application/json:
schema:
$ref: '#/components/schemas/BlogPostList'
'503':
description: Data temporarily unreadable.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
tags:
- Blog
/blog/{slug}.md:
get:
operationId: getBlogPostMarkdown
summary: Markdown mirror of a blog post
description: Raw-markdown mirror of https://empryo.com/blog/{slug}. The post list is in /llms.txt.
parameters:
- name: slug
in: path
required: true
description: Blog post slug, e.g. `the-genome`.
schema:
type: string
responses:
'200':
description: The post as markdown.
content:
text/markdown:
schema:
type: string
'404':
description: No such post.
content:
text/markdown:
schema:
type: string
tags:
- Blog
components:
schemas:
BlogPostList:
type: object
required:
- posts
properties:
posts:
type: array
items:
type: object
required:
- slug
- title
- url
- markdownUrl
properties:
slug:
type: string
title:
type: string
description:
type: string
date:
type: string
description: Publication date, YYYY-MM-DD.
author:
type: string
url:
type: string
format: uri
markdownUrl:
type: string
format: uri
Error:
type: object
required:
- error
description: Structured error returned by every /api/* endpoint — never HTML.
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
description: Machine-readable error code.
examples:
- not_found
- method_not_allowed
message:
type: string
description: Human-readable explanation.
hint:
type: string
description: Where to look next.