ARC Content API

Anonymous read access to the general content surface of www.arc.gov as JSON: 204 newsroom posts, 176 site pages, a 6,293-item media library holding the PDFs behind ARC's reports and infographics, and a site-wide search endpoint that covers every public post type at once.

Operations 7

GET /wp/v2/posts GET /wp/v2/posts #
GET /wp/v2/posts/{id} GET /wp/v2/posts/{id} #
GET /wp/v2/pages GET /wp/v2/pages #
GET /wp/v2/pages/{id} GET /wp/v2/pages/{id} #
GET /wp/v2/media GET /wp/v2/media #
GET /wp/v2/media/{id} GET /wp/v2/media/{id} #
GET /wp/v2/search GET /wp/v2/search #

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/arc-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 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 Specification

appalachian-regional-commission-content-api-openapi.yml Raw ↑
# method: derived
# x-source-url: https://www.arc.gov/wp-json/
# generated: '2026-09-07'
# Derived by the API Evangelist enrichment pipeline from the provider's own live
# discovery document. The Appalachian Regional Commission publishes no OpenAPI.
openapi: 3.1.0
info:
  title: ARC Content API (WordPress REST wp/v2)
  version: wp/v2
  summary: Anonymous read access to ARC newsroom posts, site pages, the media library and site-wide search.
  description: 'The Appalachian Regional Commission publishes www.arc.gov on WordPress, which exposes the WordPress
    REST API at https://www.arc.gov/wp-json/. This document covers the general content surface: the ARC newsroom
    (204 posts as of 2026-09-07), site pages (176), the media library (6,293 attachments, largely PDF reports and
    infographics) and the site-wide search endpoint.


    The `wp/v2` namespace at https://www.arc.gov/wp-json/ is readable anonymously — no key, no OAuth, no registration.
    Write methods are advertised on these same routes but reject anonymous callers (WordPress authenticates writes
    with Application Passwords over HTTP Basic), so only the GET surface is documented here.


    This document was DERIVED mechanically by API Evangelist from the route-discovery document served at https://www.arc.gov/wp-json/
    on 2026-09-07 — every path, method and query parameter below is taken verbatim from that descriptor, and each
    collection route was called live to confirm it answers 200 anonymously. The Appalachian Regional Commission
    does not publish an OpenAPI definition of its own; this is the content API its CMS exposes, not a product API.'
  contact:
    name: Appalachian Regional Commission
    url: https://www.arc.gov/contact-arc/
  license:
    name: U.S. Government Work
    url: https://www.arc.gov/arc-web-and-privacy-policy/
  x-derived-by: API Evangelist enrichment pipeline
  x-derived-from: https://www.arc.gov/wp-json/
  x-derived-on: '2026-09-07'
  x-provider-published: false
servers:
- url: https://www.arc.gov/wp-json
  description: Production (arc.gov WordPress REST API)
tags:
- name: Content
paths:
  /wp/v2/posts:
    get:
      operationId: getPosts
      summary: GET /wp/v2/posts
      description: List ARC newsroom posts (press releases, announcements, blog items). 204 records live on 2026-09-07.
      tags:
      - Content
      parameters:
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published after a given ISO8601 compliant date.
      - name: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes posts assigned to specific authors.
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published before a given ISO8601 compliant date.
      - name: categories
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the categories taxonomy.
      - name: categories_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the categories taxonomy.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: format
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - standard
            - aside
            - chat
            - gallery
            - link
            - image
            - quote
            - status
            - video
            - audio
        description: Limit result set to items assigned one or more given formats.
      - name: global_type
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the global_type taxonomy.
      - name: global_type_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the global_type taxonomy.
      - name: ignore_sticky
        in: query
        required: false
        schema:
          type: boolean
          default: true
        description: Whether to ignore sticky posts or not.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified after a given ISO8601 compliant date.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified before a given ISO8601 compliant date.
      - name: newsroom_topic
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the newsroom_topic taxonomy.
      - name: newsroom_topic_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the newsroom_topic taxonomy.
      - name: newsroom_types
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the newsroom_types taxonomy.
      - name: newsroom_types_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the newsroom_types taxonomy.
      - name: office_inspector_general_type
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the office_inspector_general_type
          taxonomy.
      - name: office_inspector_general_type_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the office_inspector_general_type
          taxonomy.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: operational_guidance_type
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the operational_guidance_type taxonomy.
      - name: operational_guidance_type_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the operational_guidance_type
          taxonomy.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
        description: Sort collection by post attribute.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
          minimum: 1
        description: Current page of the collection.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
        description: Maximum number of items to be returned in result set.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: search_columns
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
        description: Array of column names to be searched.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - name: slug
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to posts with one or more specific slugs.
      - name: states_counties
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the states_counties taxonomy.
      - name: states_counties_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the states_counties
          taxonomy.
      - name: status
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - publish
            - future
            - draft
            - pending
            - private
            - trash
            - auto-draft
            - inherit
            - request-pending
            - request-confirmed
            - request-failed
            - request-completed
            - acf-disabled
            - dp-rewrite-republish
            - draft-revision
            - pending-revision
            - future-revision
            - any
            - draft-revision
            - pending-revision
            - future-revision
          default: publish
        description: Limit result set to posts assigned one or more statuses.
      - name: sticky
        in: query
        required: false
        schema:
          type: boolean
        description: Limit result set to items that are sticky.
      - name: tags
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the tags taxonomy.
      - name: tags_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the tags taxonomy.
      - name: tax_relation
        in: query
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
        description: Limit result set based on relationship between multiple taxonomies.
      - name: tax_year
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the tax_year taxonomy.
      - name: tax_year_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the tax_year taxonomy.
      responses:
        '200':
          description: Success. JSON body; collection routes also return `X-WP-Total` and `X-WP-TotalPages` headers.
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current `per_page`.
              schema:
                type: integer
          content:
            application/json:
              schema: {}
        '400':
          description: Bad request — an invalid parameter was supplied. Body is the WordPress REST error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '401':
          description: Unauthorized — the route requires an authenticated WordPress user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '403':
          description: Forbidden — the capability is disabled for anonymous callers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '404':
          description: Not found — no resource exists with the supplied identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
  /wp/v2/posts/{id}:
    get:
      operationId: getPostsByid
      summary: GET /wp/v2/posts/{id}
      description: Read `/wp/v2/posts/{id}` from the WordPress REST API at https://www.arc.gov/wp-json.
      tags:
      - Content
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the post.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: excerpt_length
        in: query
        required: false
        schema:
          type: integer
        description: Override the default excerpt length.
      - name: password
        in: query
        required: false
        schema:
          type: string
        description: The password for the post if it is password protected.
      responses:
        '200':
          description: Success. JSON body; collection routes also return `X-WP-Total` and `X-WP-TotalPages` headers.
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current `per_page`.
              schema:
                type: integer
          content:
            application/json:
              schema: {}
        '400':
          description: Bad request — an invalid parameter was supplied. Body is the WordPress REST error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '401':
          description: Unauthorized — the route requires an authenticated WordPress user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '403':
          description: Forbidden — the capability is disabled for anonymous callers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '404':
          description: Not found — no resource exists with the supplied identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
  /wp/v2/pages:
    get:
      operationId: getPages
      summary: GET /wp/v2/pages
      description: List ARC site pages — programs, investment priorities, about, applicant resources. 176 records
        live on 2026-09-07.
      tags:
      - Content
      parameters:
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published after a given ISO8601 compliant date.
      - name: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes posts assigned to specific authors.
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published before a given ISO8601 compliant date.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: investment_priority_topic
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the investment_priority_topic taxonomy.
      - name: investment_priority_topic_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the investment_priority_topic
          taxonomy.
      - name: menu_order
        in: query
        required: false
        schema:
          type: integer
        description: Limit result set to posts with a specific menu_order value.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified after a given ISO8601 compliant date.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified before a given ISO8601 compliant date.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          - menu_order
          default: date
        description: Sort collection by post attribute.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
          minimum: 1
        description: Current page of the collection.
      - name: parent
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to items with particular parent IDs.
      - name: parent_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to all items except those of a particular parent ID.
      - name: per_page
        in: query
        required: false
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
        description: Maximum number of items to be returned in result set.
      - name: search
        in: query
        required: false
        schema:
          type: string
        description: Limit results to those matching a string.
      - name: search_columns
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - post_title
            - post_content
            - post_excerpt
          default: []
        description: Array of column names to be searched.
      - name: search_semantics
        in: query
        required: false
        schema:
          type: string
          enum:
          - exact
        description: How to interpret the search input.
      - name: slug
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to posts with one or more specific slugs.
      - name: states_counties
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items with specific terms assigned in the states_counties taxonomy.
      - name: states_counties_exclude
        in: query
        required: false
        schema:
          type: object
        description: Limit result set to items except those with specific terms assigned in the states_counties
          taxonomy.
      - name: status
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - publish
            - future
            - draft
            - pending
            - private
            - trash
            - auto-draft
            - inherit
            - request-pending
            - request-confirmed
            - request-failed
            - request-completed
            - acf-disabled
            - dp-rewrite-republish
            - draft-revision
            - pending-revision
            - future-revision
            - any
            - draft-revision
            - pending-revision
            - future-revision
          default: publish
        description: Limit result set to posts assigned one or more statuses.
      - name: tax_relation
        in: query
        required: false
        schema:
          type: string
          enum:
          - AND
          - OR
        description: Limit result set based on relationship between multiple taxonomies.
      responses:
        '200':
          description: Success. JSON body; collection routes also return `X-WP-Total` and `X-WP-TotalPages` headers.
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current `per_page`.
              schema:
                type: integer
          content:
            application/json:
              schema: {}
        '400':
          description: Bad request — an invalid parameter was supplied. Body is the WordPress REST error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '401':
          description: Unauthorized — the route requires an authenticated WordPress user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '403':
          description: Forbidden — the capability is disabled for anonymous callers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '404':
          description: Not found — no resource exists with the supplied identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
  /wp/v2/pages/{id}:
    get:
      operationId: getPagesByid
      summary: GET /wp/v2/pages/{id}
      description: Read `/wp/v2/pages/{id}` from the WordPress REST API at https://www.arc.gov/wp-json.
      tags:
      - Content
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
        description: Unique identifier for the post.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: excerpt_length
        in: query
        required: false
        schema:
          type: integer
        description: Override the default excerpt length.
      - name: password
        in: query
        required: false
        schema:
          type: string
        description: The password for the post if it is password protected.
      responses:
        '200':
          description: Success. JSON body; collection routes also return `X-WP-Total` and `X-WP-TotalPages` headers.
          headers:
            X-WP-Total:
              description: Total number of records matching the query.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available at the current `per_page`.
              schema:
                type: integer
          content:
            application/json:
              schema: {}
        '400':
          description: Bad request — an invalid parameter was supplied. Body is the WordPress REST error envelope.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '401':
          description: Unauthorized — the route requires an authenticated WordPress user.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '403':
          description: Forbidden — the capability is disabled for anonymous callers.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
        '404':
          description: Not found — no resource exists with the supplied identifier.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RestError'
  /wp/v2/media:
    get:
      operationId: getMedia
      summary: GET /wp/v2/media
      description: 'List the ARC media library: PDF reports, infographics, maps and images. 6,293 records live on
        2026-09-07.'
      tags:
      - Content
      parameters:
      - name: after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published after a given ISO8601 compliant date.
      - name: author
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to posts assigned to specific authors.
      - name: author_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes posts assigned to specific authors.
      - name: before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts published before a given ISO8601 compliant date.
      - name: context
        in: query
        required: false
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
        description: Scope under which the request is made; determines fields present in response.
      - name: exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Ensure result set excludes specific IDs.
      - name: include
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to specific IDs.
      - name: media_type
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
            enum:
            - image
            - video
            - text
            - application
            - audio
        description: Limit result set to attachments of a particular media type or media types.
      - name: mime_type
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
        description: Limit result set to attachments of a particular MIME type or MIME types.
      - name: modified_after
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified after a given ISO8601 compliant date.
      - name: modified_before
        in: query
        required: false
        schema:
          type: string
          format: date-time
        description: Limit response to posts modified before a given ISO8601 compliant date.
      - name: offset
        in: query
        required: false
        schema:
          type: integer
        description: Offset the result set by a specific number of items.
      - name: order
        in: query
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        description: Order sort attribute ascending or descending.
      - name: orderby
        in: query
        required: false
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
        description: Sort collection by post attribute.
      - name: page
        in: query
        required: false
        schema:
          type: integer
          default: 1
          minimum: 1
        description: Current page of the collection.
      - name: parent
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to items with particular parent IDs.
      - name: parent_exclude
        in: query
        required: false
        schema:
          type: array
          items:
            type: integer
          default: []
        description: Limit result set to all items except those of a particular parent ID.
      - name: per_page

# --- truncated at 32 KB (42 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appalachian-regional-commission/refs/heads/main/openapi/appalachian-regional-commission-content-api-openapi.yml