Automattic AI API
The ai API from Automattic — 17 operation(s) for ai.
The ai API from Automattic — 17 operation(s) for ai.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.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.curl "https://apis.io/api/v1/apis/automattic-ai-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: WordPress.com REST API — wpcom/v2 namespace AI API
version: v2
description: Derived by API Evangelist from the WordPress.com REST API route index published at https://public-api.wordpress.com/wpcom/v2/. Paths, HTTP methods, and parameter names/types/descriptions/defaults are taken verbatim from that index. Response schemas are not published in the route index, so successful responses are described but not schematised; the error envelope was observed live on public-api.wordpress.com.
contact:
name: Automattic
url: https://developer.wordpress.com/docs/api/
x-derived-from: https://public-api.wordpress.com/wpcom/v2/
x-derived-by: API Evangelist enrichment pipeline
servers:
- url: https://public-api.wordpress.com
security:
- bearerAuth: []
tags:
- name: ai
paths:
/wpcom/v2/ai/agent/{agent_id}:
post:
operationId: postWpcomV2AiAgentbyAgentId
summary: POST /wpcom/v2/ai/agent/{agent_id}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: agent_id
in: path
required: true
schema:
type: string
/wpcom/v2/ai/agent/{agent_id}/sites:
get:
operationId: getWpcomV2AiAgentbyAgentIdSites
summary: GET /wpcom/v2/ai/agent/{agent_id}/sites
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: agent_id
in: path
required: true
schema:
type: string
/wpcom/v2/ai/bots:
get:
operationId: getWpcomV2AiBots
summary: GET /wpcom/v2/ai/bots
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: product
in: query
required: false
schema:
type: string
enum:
- akismet
- automattic
- beeper
- ciab
- cloudup
- crowdsignal
- dayone
- gravatar
- happytools
- intensedebate
- jetpack
- longreads
- mailpoet
- newspack
- parsely
- pocketcasts
- p2
- sensei
- simplenote
- template
- texts
- tumblr
- vip
- woo
- wordpressjobmanager
- wpcom
description: Return only bots belonging to this product.
- name: search
in: query
required: false
schema:
type: string
description: Return only bots whose slug or description contains this substring (case-insensitive).
- name: include_archived
in: query
required: false
schema:
type: boolean
default: false
description: Include archived versions, and bots whose only versions are archived.
post:
operationId: postWpcomV2AiBots
summary: POST /wpcom/v2/ai/bots
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
yaml:
type: string
description: The bot YAML configuration; its shape determines the bot type.
description:
type: string
description: Human-readable description of the bot.
product:
type: string
enum:
- akismet
- automattic
- beeper
- ciab
- cloudup
- crowdsignal
- dayone
- gravatar
- happytools
- intensedebate
- jetpack
- longreads
- mailpoet
- newspack
- parsely
- pocketcasts
- p2
- sensei
- simplenote
- template
- texts
- tumblr
- vip
- woo
- wordpressjobmanager
- wpcom
description: Product the bot belongs to.
slug_suffix:
type: string
description: Trailing part of the slug; the full slug is composed as {product}-{type}-{suffix}.
status:
type: string
enum:
- draft
- active
- abtest
description: Status of the initial version.
team:
type: string
description: Owning team.
visibility:
type: string
enum:
- all-users
- logged-in-users
- paid-users
- internal-users
description: Who may access the bot.
p2_link:
type: string
description: Optional link to a P2 discussing the bot.
reason:
type: string
description: Optional reason recorded in the audit trail.
required:
- yaml
- description
- product
- slug_suffix
- status
- team
- visibility
/wpcom/v2/ai/bots/{slug}:
get:
operationId: getWpcomV2AiBotsbySlug
summary: GET /wpcom/v2/ai/bots/{slug}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: slug
in: path
required: true
schema:
type: string
- name: version
in: query
required: false
schema:
type: string
description: Specific version to fetch. Omit for the bot's default version — the version the bot loads when run (on a live bot, its active version).
/wpcom/v2/ai/bots/{slug}/versions:
get:
operationId: getWpcomV2AiBotsbySlugVersions
summary: GET /wpcom/v2/ai/bots/{slug}/versions
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: slug
in: path
required: true
schema:
type: string
- name: include_archived
in: query
required: false
schema:
type: boolean
default: false
description: Include archived versions in the response.
post:
operationId: postWpcomV2AiBotsbySlugVersions
summary: POST /wpcom/v2/ai/bots/{slug}/versions
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: slug
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
yaml:
type: string
description: The new version's YAML configuration.
new_version:
type: string
description: New version number, e.g. 2.0 or 1.3.1.
description:
type: string
description: Human-readable description of this version.
status:
type: string
enum:
- draft
- active
- abtest
description: Status to create the version with.
team:
type: string
description: Owning team.
p2_link:
type: string
description: Optional link to a P2 discussing this version.
reason:
type: string
description: Optional reason recorded in the audit trail.
required:
- yaml
- new_version
- description
- status
- team
/wpcom/v2/ai/bots/{slug}/versions/{version}:
get:
operationId: getWpcomV2AiBotsbySlugVersionsbyVersion
summary: GET /wpcom/v2/ai/bots/{slug}/versions/{version}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: slug
in: path
required: true
schema:
type: string
- name: version
in: path
required: true
schema:
type: string
/wpcom/v2/ai/bots/{slug}/versions/{version}/status:
post:
operationId: postWpcomV2AiBotsbySlugVersionsbyVersionStatus
summary: POST /wpcom/v2/ai/bots/{slug}/versions/{version}/status
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: slug
in: path
required: true
schema:
type: string
- name: version
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
new_status:
type: string
enum:
- draft
- active
- abtest
- archived
description: 'Target status: draft, active, abtest, or archived.'
reason:
type: string
description: Why the status is changing; recorded in the audit trail.
p2_link:
type: string
description: Optional link to a P2 discussing the change.
required:
- new_status
- reason
/wpcom/v2/ai/chat/{bot_id}/{chat_id}:
get:
operationId: getWpcomV2AiChatbyBotIdbyChatId
summary: GET /wpcom/v2/ai/chat/{bot_id}/{chat_id}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: bot_id
in: path
required: true
schema:
type: string
- name: chat_id
in: path
required: true
schema:
type: string
- name: page_number
in: query
required: false
schema:
type: integer
default: 1
description: The number of the page to retrieve, limited to 100
- name: items_per_page
in: query
required: false
schema:
type: integer
default: 10
description: The number of items per page.
- name: include_feedback
in: query
required: false
schema:
type: boolean
description: If true, include the feedback rating value for each message in the response.
/wpcom/v2/ai/chats/{bot_ids}:
get:
operationId: getWpcomV2AiChatsbyBotIds
summary: GET /wpcom/v2/ai/chats/{bot_ids}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: bot_ids
in: path
required: true
schema:
type: string
- name: truncation_method
in: query
required: false
schema:
type: string
enum:
- first_message
- last_message
default: last_message
description: The method to use for truncating the conversations. Either "first_message" or "last_message". Defaults to "last_message". Note that this parameter affects the response shape. If it is set to `last_message`, the response will include the last message from each chat, while `first_message` will include the first message.
- name: page_number
in: query
required: false
schema:
type: integer
default: 1
description: The 1-indexed page number to retrieve. Each page contains up to 10 conversations.
/wpcom/v2/ai/chats/{bot_id}:
get:
operationId: getWpcomV2AiChatsbyBotId
summary: GET /wpcom/v2/ai/chats/{bot_id}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: bot_id
in: path
required: true
schema:
type: string
- name: truncation_method
in: query
required: false
schema:
type: string
enum:
- first_message
- last_message
default: last_message
description: The method to use for truncating the conversations. Either "first_message" or "last_message". Defaults to "last_message". Note that this parameter affects the response shape. If it is set to `last_message`, the response will include the last message from each chat, while `first_message` will include the first message.
- name: page_number
in: query
required: false
schema:
type: integer
default: 1
description: The 1-indexed page number to retrieve. Each page contains up to 10 conversations.
/wpcom/v2/ai/dai/workspaces:
get:
operationId: getWpcomV2AiDaiWorkspaces
summary: GET /wpcom/v2/ai/dai/workspaces
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
/wpcom/v2/ai/feedback/{session_uuid}/rate:
post:
operationId: postWpcomV2AiFeedbackbySessionUuidRate
summary: POST /wpcom/v2/ai/feedback/{session_uuid}/rate
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: session_uuid
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
message_id:
type: string
trace_id:
type: string
rating:
type: string
enum:
- up
- down
message_text:
type: string
metadata:
type: object
default: []
required:
- rating
/wpcom/v2/ai/feedback/{session_uuid}/text:
post:
operationId: postWpcomV2AiFeedbackbySessionUuidText
summary: POST /wpcom/v2/ai/feedback/{session_uuid}/text
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: session_uuid
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
message_id:
type: string
trace_id:
type: string
feedback:
type: string
previous_messages:
type: array
default: []
items:
type: object
page_url:
type: string
required:
- message_id
- feedback
/wpcom/v2/ai/jwt:
post:
operationId: postWpcomV2AiJwt
summary: POST /wpcom/v2/ai/jwt
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
requestBody:
content:
application/json:
schema:
type: object
properties:
blog_id:
type: integer
/wpcom/v2/sites/{site_id}/ai/agent/{agent_id}:
post:
operationId: postWpcomV2SitesbySiteIdAiAgentbyAgentId
summary: POST /wpcom/v2/sites/{site_id}/ai/agent/{agent_id}
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: site_id
in: path
required: true
schema:
type: string
- name: agent_id
in: path
required: true
schema:
type: string
/wpcom/v2/sites/{wpcom_site}/ai/asset/{jwt}/download:
get:
operationId: getWpcomV2SitesbyWpcomSiteAiAssetbyJwtDownload
summary: GET /wpcom/v2/sites/{wpcom_site}/ai/asset/{jwt}/download
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: wpcom_site
in: path
required: true
schema:
type: string
- name: jwt
in: path
required: true
schema:
type: string
/wpcom/v2/sites/{wpcom_site}/ai/transcription:
post:
operationId: postWpcomV2SitesbyWpcomSiteAiTranscription
summary: POST /wpcom/v2/sites/{wpcom_site}/ai/transcription
tags:
- ai
responses:
'200':
description: OK
'401':
description: Authentication required
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/WPRestError'
parameters:
- name: wpcom_site
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
type: object
properties:
intent:
type: string
description: 'Transcription intent: dictation, command, agent, or auto.'
selected_text:
type: string
description: Selected text to transform when intent is command.
app_context:
type: string
description: JSON encoded client context.
client:
type: string
description: Client identifier.
client_version:
type: string
description: Client version.
audio_file:
type: string
description: The audio file to transcribe.
save_artifact:
type: boolean
default: false
description: When true, save the transcript as a private wp_guideline artifact post tagged Transcription.
components:
schemas:
WPRestError:
type: object
description: WordPress REST API error envelope (observed on public-api.wordpress.com).
properties:
code:
type: string
example: rest_unauthorized
message:
type: string
example: Authentication required.
data:
type: object
properties:
status:
type: integer
example: 401
securitySchemes:
oauth2:
type: oauth2
description: WordPress.com OAuth 2.1, per https://public-api.wordpress.com/.well-known/openid-configuration
flows:
authorizationCode:
authorizationUrl: https://public-api.wordpress.com/oauth2-1/authorize
tokenUrl: https://public-api.wordpress.com/oauth2-1/token
refreshUrl: https://public-api.wordpress.com/oauth2-1/token
scopes:
global: ''
auth: ''
openid: ''
profile: ''
email: ''
users: ''
sites: ''
posts: ''
comments: ''
taxonomy: ''
follow: ''
sharing: ''
freshly-pressed: ''
notifications: ''
insights: ''
read: ''
stats: ''
media: ''
menus: ''
batch: ''
videos: ''
bearerAuth:
type: http
scheme: bearer