Automattic Taxonomy API
The taxonomy API from Automattic — 13 operation(s) for taxonomy.
The taxonomy API from Automattic — 13 operation(s) for taxonomy.
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-taxonomy-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 v1.1 Taxonomy API
version: v1.1
description: 'The WordPress.com REST API, operated by Automattic. Derived by API Evangelist from Automattic''s own self-describing help document at https://public-api.wordpress.com/rest/v1.1/help (Accept: application/json), which publishes every endpoint''s method, path, description, path/query/body parameters and response fields. Security schemes come from https://public-api.wordpress.com/.well-known/openid-configuration. The error envelope was observed live.'
termsOfService: https://wordpress.com/tos/
contact:
name: WordPress.com Developer Resources
url: https://developer.wordpress.com/docs/api/
x-derived-from: https://public-api.wordpress.com/rest/v1.1/help
x-derived-by: API Evangelist enrichment pipeline
servers:
- url: https://public-api.wordpress.com/rest/v1.1
security:
- bearerAuth: []
tags:
- name: taxonomy
paths:
/sites/{site}/categories:
get:
operationId: getSitesBySiteCategories
summary: Get a list of a site's categories.
description: Get a list of a site's categories.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
found:
type: integer
description: The number of categories returned.
categories:
type: array
items: {}
description: Array of category objects.
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
- name: number
in: query
required: false
schema:
type: integer
description: 'The number of categories to return. Limit: 1000. Default: 100.'
- name: offset
in: query
required: false
schema:
type: integer
description: 0-indexed offset.
- name: page
in: query
required: false
schema:
type: integer
description: Return the Nth 1-indexed page of categories. Takes precedence over the offset parameter.
- name: search
in: query
required: false
schema:
type: string
description: Limit response to include only categories whose names or slugs match the provided search query.
- name: order
in: query
required: false
schema:
type: string
enum:
- ASC
- DESC
description: 'ASC: (default) Return categories in ascending order.; DESC: Return categories in descending order.'
- name: order_by
in: query
required: false
schema:
type: string
enum:
- name
- count
description: 'name: (default) Order by the name of each category.; count: Order by the number of posts in each category.'
/sites/{site}/categories/new:
post:
operationId: postSitesBySiteCategoriesNew
summary: Create a new category.
description: Create a new category.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: The category ID.
name:
type: string
description: The name of the category.
slug:
type: string
description: The slug of the category.
description:
type: string
description: The description of the category.
post_count:
type: integer
description: The number of posts using this category.
feed_url:
type: string
description: The URL of the feed for this category.
parent:
type: integer
description: The parent ID for the category.
meta:
type: object
description: Meta data
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name of the category
description:
type: string
description: A description of the category
parent:
type: integer
description: ID of the parent category
/sites/{site}/categories/slug:{category}:
get:
operationId: getSitesBySiteCategoriesSlugCategory
summary: Get information about a single category.
description: Get information about a single category.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: The category ID.
name:
type: string
description: The name of the category.
slug:
type: string
description: The slug of the category.
description:
type: string
description: The description of the category.
post_count:
type: integer
description: The number of posts using this category.
feed_url:
type: string
description: The URL of the feed for this category.
parent:
type: integer
description: The parent ID for the category.
meta:
type: object
description: Meta data
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: category
in: path
required: true
schema:
type: string
description: The category slug
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
post:
operationId: postSitesBySiteCategoriesSlugCategory
summary: Edit a category.
description: Edit a category.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: The category ID.
name:
type: string
description: The name of the category.
slug:
type: string
description: The slug of the category.
description:
type: string
description: The description of the category.
post_count:
type: integer
description: The number of posts using this category.
feed_url:
type: string
description: The URL of the feed for this category.
parent:
type: integer
description: The parent ID for the category.
meta:
type: object
description: Meta data
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: category
in: path
required: true
schema:
type: string
description: The category slug
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
name:
type: string
description: Name of the category
description:
type: string
description: A description of the category
parent:
type: integer
description: ID of the parent category
/sites/{site}/categories/slug:{category}/delete:
post:
operationId: postSitesBySiteCategoriesSlugCategoryDelete
summary: Delete a category.
description: Delete a category.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: The category ID.
name:
type: string
description: The name of the category.
slug:
type: string
description: The slug of the category.
description:
type: string
description: The description of the category.
post_count:
type: integer
description: The number of posts using this category.
feed_url:
type: string
description: The URL of the feed for this category.
parent:
type: integer
description: The parent ID for the category.
meta:
type: object
description: Meta data
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: category
in: path
required: true
schema:
type: string
description: The category slug
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
/sites/{site}/post-types/{post_type}/taxonomies:
get:
operationId: getSitesBySitePostTypesByPostTypeTaxonomies
summary: Get a list of taxonomies associated with a post type.
description: Get a list of taxonomies associated with a post type.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
found:
type: integer
description: The number of taxonomies found
taxonomies:
type: array
items: {}
description: A list of available taxonomies
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: post_type
in: path
required: true
schema:
type: string
description: Post type
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
/sites/{site}/tags:
get:
operationId: getSitesBySiteTags
summary: Get a list of a site's tags.
description: Get a list of a site's tags.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
found:
type: integer
description: The number of tags returned.
tags:
type: array
items: {}
description: Array of tag objects.
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" containing the "real" HTTP status code and headers.'
- name: pretty
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Output pretty JSON'
- name: meta
in: query
required: false
schema:
type: string
description: 'Optional. Loads data from the endpoints found in the ''meta'' part of the response. Comma-separated list. Example: meta=site,likes'
- name: fields
in: query
required: false
schema:
type: string
description: 'Optional. Returns specified fields only. Comma-separated list. Example: fields=ID,title'
- name: callback
in: query
required: false
schema:
type: string
description: An optional JSONP callback function.
- name: number
in: query
required: false
schema:
type: integer
description: 'The number of tags to return. Limit: 1000. Default: 100.'
- name: offset
in: query
required: false
schema:
type: integer
description: 0-indexed offset.
- name: page
in: query
required: false
schema:
type: integer
description: Return the Nth 1-indexed page of tags. Takes precedence over the offset parameter.
- name: search
in: query
required: false
schema:
type: string
description: Limit response to include only tags whose names or slugs match the provided search query.
- name: order
in: query
required: false
schema:
type: string
enum:
- ASC
- DESC
description: 'ASC: (default) Return tags in ascending order.; DESC: Return tags in descending order.'
- name: order_by
in: query
required: false
schema:
type: string
enum:
- name
- count
description: 'name: (default) Order by the name of each tag.; count: Order by the number of posts in each tag.'
/sites/{site}/tags/new:
post:
operationId: postSitesBySiteTagsNew
summary: Create a new tag.
description: Create a new tag.
tags:
- taxonomy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
ID:
type: integer
description: The tag ID.
name:
type: string
description: The name of the tag.
slug:
type: string
description: The slug of the tag.
description:
type: string
description: The description of the tag.
post_count:
type: integer
description: The number of posts using this t.
meta:
type: object
description: Meta data
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'401':
description: Authorization required
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: Not found
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
parameters:
- name: site
in: path
required: true
schema:
type: string
description: Site ID or domain
- name: context
in: query
required: false
schema:
type: string
enum:
- display
- edit
description: 'display: (default) Formats the output as HTML for display. Shortcodes are parsed, paragraph tags are added, etc..; edit: Formats the output for editing. Shortcodes are left unparsed, significant whitespace is kept, etc..'
- name: http_envelope
in: query
required: false
schema:
type: boolean
description: 'false: (default); true: Some environments (like in-browser JavaScript or Flash) block or divert responses with a non-200 HTTP status code. Setting this parameter will force the HTTP status code to always be 200. The JSON response is wrapped in an "envelope" contain
# --- truncated at 32 KB (66 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/automattic/refs/heads/main/openapi/automattic-taxonomy-api-openapi.yml