Every API 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 apis
7 MCP tools reach this
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.
All 92 tools
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/icon-aircraft-content-api"
All apis
curl "https://apis.io/api/v1/apis?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.
openapi: 3.1.0
info:
title: ICON Aircraft Content API
version: wp/v2
description: >-
Anonymous, read-only access to the editorial and marketing content behind www.iconaircraft.com,
served by the WordPress core REST API (WordPress 6.7.1). ICON Aircraft publishes no developer
program and no product API; this surface is the machine-readable projection of its corporate
website — news posts, marketing and policy pages, the media library, and the category/tag
taxonomy — and is captured here for discovery purposes only.
Derived by API Evangelist from the live route index at https://www.iconaircraft.com/wp-json/
(HTTP 200, 233 routes, 10 namespaces) and from anonymous GET probes of each collection listed
below on 2026-08-22. Only routes that answered 200 without credentials are described. Write
methods exist on these routes but require a WordPress application password and are therefore
excluded. The /wp/v2/users collection also answers anonymously; it is deliberately NOT described
here because it returns identifiable author records.
contact:
name: ICON Aircraft
url: https://www.iconaircraft.com/company/contact/
license:
name: All rights reserved — ICON Aircraft
url: https://www.iconaircraft.com/terms-of-use/
servers:
- url: https://www.iconaircraft.com/wp-json
description: Production WordPress REST API (Pantheon origin, Fastly edge)
tags:
- name: Posts
description: ICON Aircraft news and press releases.
- name: Pages
description: Marketing, product, policy and landing pages.
- name: Media
description: The site media library — photography, video posters and documents.
- name: Taxonomy
description: Categories and tags applied to posts.
- name: Search
description: Cross-type site search.
- name: Discovery
description: Self-describing metadata about the content types this site exposes.
paths:
/:
get:
operationId: getApiRoot
summary: Get the API discovery document
description: >-
Returns the WordPress REST API index — site name, description, URL, registered namespaces,
the full route table, and the supported authentication methods.
tags: [Discovery]
responses:
'200':
description: The API index document.
content:
application/json:
schema:
$ref: '#/components/schemas/ApiRoot'
/wp/v2/posts:
get:
operationId: listPosts
summary: List news posts
description: >-
Lists published ICON Aircraft news posts, newest first. Verified live at 159 published
posts on 2026-08-22. Paginated via page/per_page; the total count and page count are
returned in the X-WP-Total and X-WP-TotalPages response headers.
tags: [Posts]
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/orderbyPost'
- $ref: '#/components/parameters/categories'
- $ref: '#/components/parameters/tags'
- $ref: '#/components/parameters/context'
- $ref: '#/components/parameters/embed'
responses:
'200':
description: A page of posts.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
Link:
$ref: '#/components/headers/Link'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Post'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/posts/{id}:
get:
operationId: getPost
summary: Get a single news post
tags: [Posts]
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/context'
- $ref: '#/components/parameters/embed'
responses:
'200':
description: The post.
content:
application/json:
schema:
$ref: '#/components/schemas/Post'
'404':
$ref: '#/components/responses/NotFound'
/wp/v2/pages:
get:
operationId: listPages
summary: List site pages
description: >-
Lists published marketing, product, policy and landing pages. Verified live at 94 published
pages on 2026-08-22. Pages are hierarchical — use the parent field to walk the tree.
tags: [Pages]
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/order'
- $ref: '#/components/parameters/context'
- $ref: '#/components/parameters/embed'
responses:
'200':
description: A page of pages.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Page'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/pages/{id}:
get:
operationId: getPage
summary: Get a single page
tags: [Pages]
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/context'
- $ref: '#/components/parameters/embed'
responses:
'200':
description: The page.
content:
application/json:
schema:
$ref: '#/components/schemas/Page'
'404':
$ref: '#/components/responses/NotFound'
/wp/v2/media:
get:
operationId: listMedia
summary: List media library items
description: >-
Lists items in the site media library — ICON A5 photography, video posters, brochures and
other uploaded assets, each with its generated size renditions. Verified live at 1,709
items on 2026-08-22.
tags: [Media]
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/mediaType'
- $ref: '#/components/parameters/context'
responses:
'200':
description: A page of media items.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/MediaItem'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/media/{id}:
get:
operationId: getMediaItem
summary: Get a single media item
tags: [Media]
parameters:
- $ref: '#/components/parameters/id'
- $ref: '#/components/parameters/context'
responses:
'200':
description: The media item.
content:
application/json:
schema:
$ref: '#/components/schemas/MediaItem'
'404':
$ref: '#/components/responses/NotFound'
/wp/v2/categories:
get:
operationId: listCategories
summary: List post categories
description: >-
Lists the category taxonomy applied to posts. Verified live at 5 categories on 2026-08-22.
tags: [Taxonomy]
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/hideEmpty'
responses:
'200':
description: A page of categories.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Term'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/categories/{id}:
get:
operationId: getCategory
summary: Get a single category
tags: [Taxonomy]
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: The category term.
content:
application/json:
schema:
$ref: '#/components/schemas/Term'
'404':
$ref: '#/components/responses/NotFound'
/wp/v2/tags:
get:
operationId: listTags
summary: List post tags
description: >-
Lists the tag taxonomy applied to posts. Verified live at 38 tags on 2026-08-22.
tags: [Taxonomy]
parameters:
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- $ref: '#/components/parameters/search'
- $ref: '#/components/parameters/hideEmpty'
responses:
'200':
description: A page of tags.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Term'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/tags/{id}:
get:
operationId: getTag
summary: Get a single tag
tags: [Taxonomy]
parameters:
- $ref: '#/components/parameters/id'
responses:
'200':
description: The tag term.
content:
application/json:
schema:
$ref: '#/components/schemas/Term'
'404':
$ref: '#/components/responses/NotFound'
/wp/v2/search:
get:
operationId: searchContent
summary: Search across content types
description: >-
Cross-type site search returning lightweight result stubs (id, title, url, type, subtype).
Verified live at 242 searchable items on 2026-08-22.
tags: [Search]
parameters:
- name: search
in: query
required: true
description: The search term.
schema:
type: string
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/perPage'
- name: type
in: query
description: Limit results to a search-result type.
schema:
type: string
enum: [post, term, post-format]
default: post
- name: subtype
in: query
description: Limit results to one or more content subtypes (for example post or page).
schema:
type: string
default: any
responses:
'200':
description: A page of search results.
headers:
X-WP-Total:
$ref: '#/components/headers/XWPTotal'
X-WP-TotalPages:
$ref: '#/components/headers/XWPTotalPages'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SearchResult'
'400':
$ref: '#/components/responses/InvalidParam'
/wp/v2/types:
get:
operationId: listTypes
summary: List registered content types
description: >-
Returns the content types this site registers and their REST base paths. ICON Aircraft
registers one site-specific type beyond WordPress core, `work`, which is REST-visible but
held 0 published entries when probed on 2026-08-22.
tags: [Discovery]
responses:
'200':
description: A map of type slug to type descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/ContentType'
/wp/v2/taxonomies:
get:
operationId: listTaxonomies
summary: List registered taxonomies
tags: [Discovery]
responses:
'200':
description: A map of taxonomy slug to taxonomy descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/Taxonomy'
/wp/v2/statuses:
get:
operationId: listStatuses
summary: List post statuses
tags: [Discovery]
responses:
'200':
description: A map of status slug to status descriptor.
content:
application/json:
schema:
type: object
additionalProperties:
type: object
properties:
name:
type: string
slug:
type: string
public:
type: boolean
queryable:
type: boolean
/oembed/1.0/embed:
get:
operationId: getOEmbed
summary: Get an oEmbed representation of a URL on this site
tags: [Discovery]
parameters:
- name: url
in: query
required: true
description: The URL of the ICON Aircraft post or page to embed.
schema:
type: string
format: uri
- name: format
in: query
schema:
type: string
enum: [json, xml]
default: json
- name: maxwidth
in: query
schema:
type: integer
default: 600
responses:
'200':
description: The oEmbed document.
content:
application/json:
schema:
$ref: '#/components/schemas/OEmbed'
'404':
$ref: '#/components/responses/NotFound'
components:
headers:
XWPTotal:
description: Total number of items in the collection matching the query.
schema:
type: integer
XWPTotalPages:
description: Total number of pages available for the query.
schema:
type: integer
Link:
description: RFC 8288 pagination links (rel="next" / rel="prev").
schema:
type: string
parameters:
page:
name: page
in: query
description: 1-indexed page of the collection to return.
schema:
type: integer
minimum: 1
default: 1
perPage:
name: per_page
in: query
description: Items per page. Maximum 100.
schema:
type: integer
minimum: 1
maximum: 100
default: 10
search:
name: search
in: query
description: Limit results to those matching a string.
schema:
type: string
order:
name: order
in: query
schema:
type: string
enum: [asc, desc]
default: desc
orderbyPost:
name: orderby
in: query
schema:
type: string
enum: [author, date, id, include, modified, parent, relevance, slug, title]
default: date
categories:
name: categories
in: query
description: Limit results to items assigned to the given category IDs.
schema:
type: array
items:
type: integer
tags:
name: tags
in: query
description: Limit results to items assigned to the given tag IDs.
schema:
type: array
items:
type: integer
hideEmpty:
name: hide_empty
in: query
description: Return only terms that are assigned to at least one item.
schema:
type: boolean
default: false
mediaType:
name: media_type
in: query
schema:
type: string
enum: [image, video, text, application, audio]
context:
name: context
in: query
description: >-
Scope of the response. Anonymous callers may only use `view` and `embed`; `edit` requires
authentication and returns 401 otherwise.
schema:
type: string
enum: [view, embed, edit]
default: view
embed:
name: _embed
in: query
description: Embed linked resources (author, terms, featured media) into the _embedded member.
schema:
type: boolean
id:
name: id
in: path
required: true
description: Unique numeric identifier for the object.
schema:
type: integer
responses:
NotFound:
description: No object exists with that identifier.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
InvalidParam:
description: One or more query parameters failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: The requested context or resource requires authentication.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
RenderedText:
type: object
description: A WordPress rendered-text field.
properties:
rendered:
type: string
description: HTML rendering of the field.
protected:
type: boolean
Post:
type: object
properties:
id:
type: integer
date:
type: string
format: date-time
date_gmt:
type: string
format: date-time
modified:
type: string
format: date-time
slug:
type: string
status:
type: string
type:
type: string
link:
type: string
format: uri
title:
$ref: '#/components/schemas/RenderedText'
content:
$ref: '#/components/schemas/RenderedText'
excerpt:
$ref: '#/components/schemas/RenderedText'
author:
type: integer
description: Numeric author id. Resolving it exposes an identifiable person; see the profile note.
featured_media:
type: integer
categories:
type: array
items:
type: integer
tags:
type: array
items:
type: integer
_links:
type: object
additionalProperties: true
Page:
type: object
properties:
id:
type: integer
date:
type: string
format: date-time
modified:
type: string
format: date-time
slug:
type: string
status:
type: string
type:
type: string
link:
type: string
format: uri
title:
$ref: '#/components/schemas/RenderedText'
content:
$ref: '#/components/schemas/RenderedText'
excerpt:
$ref: '#/components/schemas/RenderedText'
parent:
type: integer
menu_order:
type: integer
template:
type: string
_links:
type: object
additionalProperties: true
MediaItem:
type: object
properties:
id:
type: integer
date:
type: string
format: date-time
slug:
type: string
link:
type: string
format: uri
title:
$ref: '#/components/schemas/RenderedText'
caption:
$ref: '#/components/schemas/RenderedText'
alt_text:
type: string
media_type:
type: string
mime_type:
type: string
source_url:
type: string
format: uri
media_details:
type: object
properties:
width:
type: integer
height:
type: integer
file:
type: string
sizes:
type: object
additionalProperties: true
Term:
type: object
properties:
id:
type: integer
count:
type: integer
description:
type: string
link:
type: string
format: uri
name:
type: string
slug:
type: string
taxonomy:
type: string
parent:
type: integer
SearchResult:
type: object
properties:
id:
type: integer
title:
type: string
url:
type: string
format: uri
type:
type: string
subtype:
type: string
_links:
type: object
additionalProperties: true
ContentType:
type: object
properties:
name:
type: string
slug:
type: string
description:
type: string
hierarchical:
type: boolean
has_archive:
oneOf:
- type: boolean
- type: string
rest_base:
type: string
taxonomies:
type: array
items:
type: string
Taxonomy:
type: object
properties:
name:
type: string
slug:
type: string
description:
type: string
hierarchical:
type: boolean
rest_base:
type: string
types:
type: array
items:
type: string
OEmbed:
type: object
properties:
version:
type: string
provider_name:
type: string
provider_url:
type: string
format: uri
type:
type: string
title:
type: string
html:
type: string
width:
type: integer
height:
type: integer
ApiRoot:
type: object
properties:
name:
type: string
description:
type: string
url:
type: string
format: uri
home:
type: string
format: uri
namespaces:
type: array
items:
type: string
authentication:
type: object
additionalProperties: true
routes:
type: object
additionalProperties: true
Error:
type: object
description: >-
The WordPress REST error envelope. Not RFC 9457 — the media type is application/json and the
machine-readable code lives in `code`, not `type`.
properties:
code:
type: string
examples: [rest_post_invalid_id, rest_invalid_param, rest_forbidden]
message:
type: string
data:
type: object
properties:
status:
type: integer
additionalProperties: true