ICON Aircraft Content API

Anonymous, read-only access to the editorial and marketing content behind www.iconaircraft.com via the WordPress core REST API (WordPress 6.7.1) — news posts, marketing and policy pages, the media library, and the category and tag taxonomies. The site itself advertises the surface with a rel="https://api.w.org/" link to /wp-json/. Verified live on 2026-08-22 at 159 published posts, 94 pages, 1,709 media items, 5 categories, 38 tags and 242 searchable items.

Documentation

Specifications

Other Resources

Work with this as data

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 Specification

icon-aircraft-content-api-openapi.yml Raw ↑
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