state.gov Content API

The Department of State runs www.state.gov on WordPress and exposes the WordPress REST API anonymously at https://www.state.gov/wp-json. Alongside the core WordPress resources the Department registers its own content types and taxonomies — state_press_release, state_briefing, state_report, state_biography, state_bureau, state_country, state_policy_issue, state_trip_travel and sixteen more — giving structured JSON access to press releases, press briefings, the flagship annual reports, principal biographies, bureau pages and country and policy landing content. 473 routes are advertised in the index; 65 read operations are public with no key, no registration and no quota. Write operations exist but require a Department editorial account. The Department publishes no OpenAPI; the description in this repo was derived mechanically from its own route index and OPTIONS schemas.

Operations 158

GET /wp/v2/categories List categories #
POST /wp/v2/categories Create a categories item #
GET /wp/v2/categories/{id} Retrieve a categories item #
PATCH /wp/v2/categories/{id} Update a categories item #
DELETE /wp/v2/categories/{id} Delete a categories item #
GET /wp/v2/media List media #
POST /wp/v2/media Create a media item #
GET /wp/v2/media/{id} Retrieve a media item #
PATCH /wp/v2/media/{id} Update a media item #
DELETE /wp/v2/media/{id} Delete a media item #
GET /wp/v2/pages List pages #
POST /wp/v2/pages Create a pages item #
GET /wp/v2/pages/{id} Retrieve a pages item #
PATCH /wp/v2/pages/{id} Update a pages item #
DELETE /wp/v2/pages/{id} Delete a pages item #
GET /wp/v2/posts List posts #
POST /wp/v2/posts Create a posts item #
GET /wp/v2/posts/{id} Retrieve a posts item #
PATCH /wp/v2/posts/{id} Update a posts item #
DELETE /wp/v2/posts/{id} Delete a posts item #
GET /wp/v2/search List search #
GET /wp/v2/state_archive_tags List state_archive_tags #
POST /wp/v2/state_archive_tags Create a state_archive_tags item #
GET /wp/v2/state_archive_tags/{id} Retrieve a state_archive_tags item #
PATCH /wp/v2/state_archive_tags/{id} Update a state_archive_tags item #
DELETE /wp/v2/state_archive_tags/{id} Delete a state_archive_tags item #
GET /wp/v2/state_author_groups List state_author_groups #
POST /wp/v2/state_author_groups Create a state_author_groups item #
GET /wp/v2/state_author_groups/{id} Retrieve a state_author_groups item #
PATCH /wp/v2/state_author_groups/{id} Update a state_author_groups item #
DELETE /wp/v2/state_author_groups/{id} Delete a state_author_groups item #
GET /wp/v2/state_biography List state_biography #
POST /wp/v2/state_biography Create a state_biography item #
GET /wp/v2/state_biography/{id} Retrieve a state_biography item #
PATCH /wp/v2/state_biography/{id} Update a state_biography item #
DELETE /wp/v2/state_biography/{id} Delete a state_biography item #
GET /wp/v2/state_biography_types List state_biography_types #
POST /wp/v2/state_biography_types Create a state_biography_types item #
GET /wp/v2/state_biography_types/{id} Retrieve a state_biography_types item #
PATCH /wp/v2/state_biography_types/{id} Update a state_biography_types item #
DELETE /wp/v2/state_biography_types/{id} Delete a state_biography_types item #
GET /wp/v2/state_briefing List state_briefing #
POST /wp/v2/state_briefing Create a state_briefing item #
GET /wp/v2/state_briefing/{id} Retrieve a state_briefing item #
PATCH /wp/v2/state_briefing/{id} Update a state_briefing item #
DELETE /wp/v2/state_briefing/{id} Delete a state_briefing item #
GET /wp/v2/state_briefing_type List state_briefing_type #
POST /wp/v2/state_briefing_type Create a state_briefing_type item #
GET /wp/v2/state_briefing_type/{id} Retrieve a state_briefing_type item #
PATCH /wp/v2/state_briefing_type/{id} Update a state_briefing_type item #
DELETE /wp/v2/state_briefing_type/{id} Delete a state_briefing_type item #
GET /wp/v2/state_bureau List state_bureau #
POST /wp/v2/state_bureau Create a state_bureau item #
GET /wp/v2/state_bureau/{id} Retrieve a state_bureau item #
PATCH /wp/v2/state_bureau/{id} Update a state_bureau item #
DELETE /wp/v2/state_bureau/{id} Delete a state_bureau item #
GET /wp/v2/state_countries_and_areas List state_countries_and_areas #
POST /wp/v2/state_countries_and_areas Create a state_countries_and_areas item #
GET /wp/v2/state_countries_and_areas/{id} Retrieve a state_countries_and_areas item #
PATCH /wp/v2/state_countries_and_areas/{id} Update a state_countries_and_areas item #
DELETE /wp/v2/state_countries_and_areas/{id} Delete a state_countries_and_areas item #
GET /wp/v2/state_country List state_country #
POST /wp/v2/state_country Create a state_country item #
GET /wp/v2/state_country/{id} Retrieve a state_country item #
PATCH /wp/v2/state_country/{id} Update a state_country item #
DELETE /wp/v2/state_country/{id} Delete a state_country item #
GET /wp/v2/state_document_type List state_document_type #
POST /wp/v2/state_document_type Create a state_document_type item #
GET /wp/v2/state_document_type/{id} Retrieve a state_document_type item #
PATCH /wp/v2/state_document_type/{id} Update a state_document_type item #
DELETE /wp/v2/state_document_type/{id} Delete a state_document_type item #
GET /wp/v2/state_ext_content List state_ext_content #
POST /wp/v2/state_ext_content Create a state_ext_content item #
GET /wp/v2/state_ext_content/{id} Retrieve a state_ext_content item #
PATCH /wp/v2/state_ext_content/{id} Update a state_ext_content item #
DELETE /wp/v2/state_ext_content/{id} Delete a state_ext_content item #
GET /wp/v2/state_live_draft_tags List state_live_draft_tags #
POST /wp/v2/state_live_draft_tags Create a state_live_draft_tags item #
GET /wp/v2/state_live_draft_tags/{id} Retrieve a state_live_draft_tags item #
PATCH /wp/v2/state_live_draft_tags/{id} Update a state_live_draft_tags item #
DELETE /wp/v2/state_live_draft_tags/{id} Delete a state_live_draft_tags item #
GET /wp/v2/state_people List state_people #
POST /wp/v2/state_people Create a state_people item #
GET /wp/v2/state_people/{id} Retrieve a state_people item #
PATCH /wp/v2/state_people/{id} Update a state_people item #
DELETE /wp/v2/state_people/{id} Delete a state_people item #
GET /wp/v2/state_policy_issue List state_policy_issue #
POST /wp/v2/state_policy_issue Create a state_policy_issue item #
GET /wp/v2/state_policy_issue/{id} Retrieve a state_policy_issue item #
PATCH /wp/v2/state_policy_issue/{id} Update a state_policy_issue item #
DELETE /wp/v2/state_policy_issue/{id} Delete a state_policy_issue item #
GET /wp/v2/state_policy_issues List state_policy_issues #
POST /wp/v2/state_policy_issues Create a state_policy_issues item #
GET /wp/v2/state_policy_issues/{id} Retrieve a state_policy_issues item #
PATCH /wp/v2/state_policy_issues/{id} Update a state_policy_issues item #
DELETE /wp/v2/state_policy_issues/{id} Delete a state_policy_issues item #
GET /wp/v2/state_press_release List state_press_release #
POST /wp/v2/state_press_release Create a state_press_release item #
GET /wp/v2/state_press_release/{id} Retrieve a state_press_release item #
PATCH /wp/v2/state_press_release/{id} Update a state_press_release item #
DELETE /wp/v2/state_press_release/{id} Delete a state_press_release item #
GET /wp/v2/state_report List state_report #
POST /wp/v2/state_report Create a state_report item #
GET /wp/v2/state_report/{id} Retrieve a state_report item #
PATCH /wp/v2/state_report/{id} Update a state_report item #
DELETE /wp/v2/state_report/{id} Delete a state_report item #
GET /wp/v2/state_report_types List state_report_types #
POST /wp/v2/state_report_types Create a state_report_types item #
GET /wp/v2/state_report_types/{id} Retrieve a state_report_types item #
PATCH /wp/v2/state_report_types/{id} Update a state_report_types item #
DELETE /wp/v2/state_report_types/{id} Delete a state_report_types item #
GET /wp/v2/state_rss_feeds List state_rss_feeds #
POST /wp/v2/state_rss_feeds Create a state_rss_feeds item #
GET /wp/v2/state_rss_feeds/{id} Retrieve a state_rss_feeds item #
PATCH /wp/v2/state_rss_feeds/{id} Update a state_rss_feeds item #
DELETE /wp/v2/state_rss_feeds/{id} Delete a state_rss_feeds item #
GET /wp/v2/state_standard_land List state_standard_land #
POST /wp/v2/state_standard_land Create a state_standard_land item #
GET /wp/v2/state_standard_land/{id} Retrieve a state_standard_land item #
PATCH /wp/v2/state_standard_land/{id} Update a state_standard_land item #
DELETE /wp/v2/state_standard_land/{id} Delete a state_standard_land item #
GET /wp/v2/state_state List state_state #
POST /wp/v2/state_state Create a state_state item #
GET /wp/v2/state_state/{id} Retrieve a state_state item #
PATCH /wp/v2/state_state/{id} Update a state_state item #
DELETE /wp/v2/state_state/{id} Delete a state_state item #
GET /wp/v2/state_states List state_states #
POST /wp/v2/state_states Create a state_states item #
GET /wp/v2/state_states/{id} Retrieve a state_states item #
PATCH /wp/v2/state_states/{id} Update a state_states item #
DELETE /wp/v2/state_states/{id} Delete a state_states item #
GET /wp/v2/state_subjects List state_subjects #
POST /wp/v2/state_subjects Create a state_subjects item #
GET /wp/v2/state_subjects/{id} Retrieve a state_subjects item #
PATCH /wp/v2/state_subjects/{id} Update a state_subjects item #
DELETE /wp/v2/state_subjects/{id} Delete a state_subjects item #
GET /wp/v2/state_term_coll List state_term_coll #
POST /wp/v2/state_term_coll Create a state_term_coll item #
GET /wp/v2/state_term_coll/{id} Retrieve a state_term_coll item #
PATCH /wp/v2/state_term_coll/{id} Update a state_term_coll item #
DELETE /wp/v2/state_term_coll/{id} Delete a state_term_coll item #
GET /wp/v2/state_trip_travel List state_trip_travel #
POST /wp/v2/state_trip_travel Create a state_trip_travel item #
GET /wp/v2/state_trip_travel/{id} Retrieve a state_trip_travel item #
PATCH /wp/v2/state_trip_travel/{id} Update a state_trip_travel item #
DELETE /wp/v2/state_trip_travel/{id} Delete a state_trip_travel item #
GET /wp/v2/state_years List state_years #
POST /wp/v2/state_years Create a state_years item #
GET /wp/v2/state_years/{id} Retrieve a state_years item #
PATCH /wp/v2/state_years/{id} Update a state_years item #
DELETE /wp/v2/state_years/{id} Delete a state_years item #
GET /wp/v2/tags List tags #
POST /wp/v2/tags Create a tags item #
GET /wp/v2/tags/{id} Retrieve a tags item #
PATCH /wp/v2/tags/{id} Update a tags item #
DELETE /wp/v2/tags/{id} Delete a tags item #
GET /wp/v2/taxonomies List taxonomies #
GET /wp/v2/types List types #

Documentation

Specifications

Schemas & Data

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/state-gov-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

department-of-state-state-gov-content-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: U.S. Department of State — state.gov Content API
  version: wp/v2
  summary: Public, unauthenticated read access to state.gov press releases, briefings, reports, biographies, bureaus, country
    pages and policy issues.
  description: 'The Department of State publishes www.state.gov on WordPress and exposes the WordPress REST API at https://www.state.gov/wp-json.
    Alongside the core WordPress resources the Department registers its own content types and taxonomies (state_press_release,
    state_briefing, state_report, state_biography, state_bureau, state_country, state_policy_issue, state_trip_travel and
    others), all readable anonymously over HTTPS with no API key. Write operations exist but require an authenticated editorial
    account (WordPress Application Passwords) and are not available to the public.


    This description was derived mechanically from the Department''s own live discovery documents: the route index at https://www.state.gov/wp-json/
    and an HTTP OPTIONS request against each collection and item route, which returns the provider-authored JSON Schema and
    argument list for that resource. No paths, parameters or schemas were invented. The verbatim source documents are kept
    in openapi/_original/.'
  contact:
    name: U.S. Department of State
    url: https://www.state.gov/
  license:
    name: U.S. Government Work (17 U.S.C. 105) — see the state.gov copyright notice
    url: https://www.state.gov/copyright-information/
servers:
- url: https://www.state.gov/wp-json
  description: Production state.gov WordPress REST API.
externalDocs:
  description: WordPress REST API handbook — the upstream specification this surface implements
  url: https://developer.wordpress.org/rest-api/
tags:
- name: categories
  description: WordPress category taxonomy.
- name: media
  description: Media library attachments (images, PDFs, video posters).
- name: pages
  description: state.gov pages.
- name: posts
  description: WordPress posts.
- name: search
  description: Cross-content search across state.gov content types.
- name: state_archive_tags
  description: Archive tag taxonomy.
- name: state_author_groups
  description: Author group taxonomy.
- name: state_biography
  description: Biographies of Department principals and officials.
- name: state_biography_types
  description: Biography type taxonomy.
- name: state_briefing
  description: Press briefings, remarks and transcripts.
- name: state_briefing_type
  description: Briefing type taxonomy.
- name: state_bureau
  description: Bureaus and offices of the Department of State.
- name: state_countries_and_areas
  description: Countries and areas taxonomy.
- name: state_country
  description: Country and area landing content.
- name: state_document_type
  description: Document type taxonomy.
- name: state_ext_content
  description: Externally sourced content syndicated onto state.gov.
- name: state_live_draft_tags
  description: Live draft tag taxonomy.
- name: state_people
  description: People records used across state.gov.
- name: state_policy_issue
  description: Policy issue landing content.
- name: state_policy_issues
  description: Policy issues taxonomy.
- name: state_press_release
  description: Press releases issued by the Office of the Spokesperson and Department bureaus.
- name: state_report
  description: Department reports (human rights, religious freedom, trafficking in persons, and others).
- name: state_report_types
  description: Report type taxonomy.
- name: state_rss_feeds
  description: Configured RSS feed definitions.
- name: state_standard_land
  description: Standard landing pages.
- name: state_state
  description: State (U.S. state) content type.
- name: state_states
  description: U.S. states taxonomy.
- name: state_subjects
  description: Subject taxonomy.
- name: state_term_coll
  description: Term collection content.
- name: state_trip_travel
  description: Official travel by the Secretary and other principals.
- name: state_years
  description: Year taxonomy.
- name: tags
  description: WordPress post tag taxonomy.
- name: taxonomies
  description: Registered taxonomies and their REST bases.
- name: types
  description: Registered content types and their REST bases.
security: []
paths:
  /wp/v2/categories:
    get:
      operationId: listCategory
      summary: List categories
      description: WordPress category taxonomy. Returns a JSON array; total counts are carried in the X-WP-Total and X-WP-TotalPages
        response headers.
      tags:
      - categories
      security: []
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: page
        in: query
        description: Current page of the collection.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: asc
      - name: orderby
        in: query
        description: Sort collection by term attribute.
        schema:
          type: string
          enum:
          - id
          - include
          - name
          - slug
          - include_slugs
          - term_group
          - description
          - count
          default: name
      - name: hide_empty
        in: query
        description: Whether to hide terms not assigned to any posts.
        schema:
          type: boolean
          default: false
      - name: parent
        in: query
        description: Limit result set to terms assigned to a specific parent.
        schema:
          type: integer
      - name: post
        in: query
        description: Limit result set to terms assigned to a specific post.
        schema:
          type: integer
          default: null
      - name: slug
        in: query
        description: Limit result set to terms with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      responses:
        '200':
          description: A collection of categories items.
          headers:
            X-WP-Total:
              description: Total number of matching items.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createCategory
      summary: Create a categories item
      description: Create a new categories item. Requires an authenticated editorial account; anonymous callers receive 401.
      tags:
      - categories
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  description: HTML description of the term.
                  type: string
                name:
                  description: HTML title for the term.
                  type: string
                slug:
                  description: An alphanumeric identifier for the term unique to its type.
                  type: string
                parent:
                  description: The parent term ID.
                  type: integer
                meta:
                  description: Meta fields.
                  type: object
                acf:
                  description: ACF field data
                  type: object
              required:
              - name
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /wp/v2/categories/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: Unique identifier for the categories item.
      schema:
        type: integer
    get:
      operationId: getCategory
      summary: Retrieve a categories item
      tags:
      - categories
      security: []
      description: Retrieve a single categories item by numeric id.
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The requested item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateCategory
      summary: Update a categories item
      tags:
      - categories
      description: Update an existing categories item. Requires an authenticated editorial account. WordPress accepts POST,
        PUT or PATCH for this operation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                description:
                  description: HTML description of the term.
                  type: string
                name:
                  description: HTML title for the term.
                  type: string
                slug:
                  description: An alphanumeric identifier for the term unique to its type.
                  type: string
                parent:
                  description: The parent term ID.
                  type: integer
                meta:
                  description: Meta fields.
                  type: object
                acf:
                  description: ACF field data
                  type: object
      responses:
        '200':
          description: The updated item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCategory
      summary: Delete a categories item
      tags:
      - categories
      description: Trash or permanently delete a categories item. Requires an authenticated editorial account.
      parameters:
      - name: force
        in: query
        description: Required to be true, as terms do not support trashing.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: The deleted item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Category'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/media:
    get:
      operationId: listAttachment
      summary: List media
      description: Media library attachments (images, PDFs, video posters). Returns a JSON array; total counts are carried
        in the X-WP-Total and X-WP-TotalPages response headers.
      tags:
      - media
      security: []
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: page
        in: query
        description: Current page of the collection.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: after
        in: query
        description: Limit response to posts published after a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: modified_after
        in: query
        description: Limit response to posts modified after a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: author
        in: query
        description: Limit result set to posts assigned to specific authors.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: author_exclude
        in: query
        description: Ensure result set excludes posts assigned to specific authors.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: before
        in: query
        description: Limit response to posts published before a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: modified_before
        in: query
        description: Limit response to posts modified before a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: search_semantics
        in: query
        description: How to interpret the search input.
        schema:
          type: string
          enum:
          - exact
      - name: offset
        in: query
        description: Offset the result set by a specific number of items.
        schema:
          type: integer
      - name: order
        in: query
        description: Order sort attribute ascending or descending.
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - name: orderby
        in: query
        description: Sort collection by post attribute.
        schema:
          type: string
          enum:
          - author
          - date
          - id
          - include
          - modified
          - parent
          - relevance
          - slug
          - include_slugs
          - title
          default: date
      - name: parent
        in: query
        description: Limit result set to items with particular parent IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: parent_exclude
        in: query
        description: Limit result set to all items except those of a particular parent ID.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: search_columns
        in: query
        description: Array of column names to be searched.
        schema:
          type: array
          default: []
          items:
            enum:
            - post_title
            - post_content
            - post_excerpt
            type: string
      - name: slug
        in: query
        description: Limit result set to posts with one or more specific slugs.
        schema:
          type: array
          items:
            type: string
      - name: status
        in: query
        description: Limit result set to posts assigned one or more statuses.
        schema:
          type: array
          default: inherit
          items:
            enum:
            - inherit
            - private
            - trash
            type: string
      - name: media_type
        in: query
        description: Limit result set to attachments of a particular media type or media types.
        schema:
          type: array
          default: null
          items:
            type: string
            enum:
            - image
            - video
            - text
            - application
            - audio
      - name: mime_type
        in: query
        description: Limit result set to attachments of a particular MIME type or MIME types.
        schema:
          type: array
          default: null
          items:
            type: string
      responses:
        '200':
          description: A collection of media items.
          headers:
            X-WP-Total:
              description: Total number of matching items.
              schema:
                type: integer
            X-WP-TotalPages:
              description: Total number of pages available.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: createAttachment
      summary: Create a media item
      description: Create a new media item. Requires an authenticated editorial account; anonymous callers receive 401.
      tags:
      - media
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  description: The date the post was published, in the site's timezone.
                  type:
                  - string
                  - 'null'
                  format: date-time
                date_gmt:
                  description: The date the post was published, as GMT.
                  type:
                  - string
                  - 'null'
                  format: date-time
                slug:
                  description: An alphanumeric identifier for the post unique to its type.
                  type: string
                status:
                  description: A named status for the post.
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  - congress
                  - press
                title:
                  description: The title for the post.
                  type: object
                  properties:
                    raw:
                      description: Title for the post, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML title for the post, transformed for display.
                      type: string
                      readOnly: true
                author:
                  description: The ID for the author of the post.
                  type: integer
                featured_media:
                  description: The ID of the featured media for the post.
                  type: integer
                comment_status:
                  description: Whether or not comments are open on the post.
                  type: string
                  enum:
                  - open
                  - closed
                ping_status:
                  description: Whether or not the post can be pinged.
                  type: string
                  enum:
                  - open
                  - closed
                meta:
                  description: Meta fields.
                  type: object
                  properties:
                    _acf_changed:
                      type: boolean
                      title: ''
                      description: ''
                      default: false
                template:
                  description: The theme file to use to display the post.
                  type: string
                acf:
                  description: ACF field data
                  type: object
                alt_text:
                  description: Alternative text to display when attachment is not displayed.
                  type: string
                caption:
                  description: The attachment caption.
                  type: object
                  properties:
                    raw:
                      description: Caption for the attachment, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML caption for the attachment, transformed for display.
                      type: string
                      readOnly: true
                description:
                  description: The attachment description.
                  type: object
                  properties:
                    raw:
                      description: Description for the attachment, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML description for the attachment, transformed for display.
                      type: string
                      readOnly: true
                post:
                  description: The ID for the associated post of the attachment.
                  type: integer
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /wp/v2/media/{id}:
    parameters:
    - name: id
      in: path
      required: true
      description: Unique identifier for the media item.
      schema:
        type: integer
    get:
      operationId: getAttachment
      summary: Retrieve a media item
      tags:
      - media
      security: []
      description: Retrieve a single media item by numeric id.
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      responses:
        '200':
          description: The requested item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateAttachment
      summary: Update a media item
      tags:
      - media
      description: Update an existing media item. Requires an authenticated editorial account. WordPress accepts POST, PUT
        or PATCH for this operation.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                date:
                  description: The date the post was published, in the site's timezone.
                  type:
                  - string
                  - 'null'
                  format: date-time
                date_gmt:
                  description: The date the post was published, as GMT.
                  type:
                  - string
                  - 'null'
                  format: date-time
                slug:
                  description: An alphanumeric identifier for the post unique to its type.
                  type: string
                status:
                  description: A named status for the post.
                  type: string
                  enum:
                  - publish
                  - future
                  - draft
                  - pending
                  - private
                  - acf-disabled
                  - congress
                  - press
                title:
                  description: The title for the post.
                  type: object
                  properties:
                    raw:
                      description: Title for the post, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML title for the post, transformed for display.
                      type: string
                      readOnly: true
                author:
                  description: The ID for the author of the post.
                  type: integer
                featured_media:
                  description: The ID of the featured media for the post.
                  type: integer
                comment_status:
                  description: Whether or not comments are open on the post.
                  type: string
                  enum:
                  - open
                  - closed
                ping_status:
                  description: Whether or not the post can be pinged.
                  type: string
                  enum:
                  - open
                  - closed
                meta:
                  description: Meta fields.
                  type: object
                  properties:
                    _acf_changed:
                      type: boolean
                      title: ''
                      description: ''
                      default: false
                template:
                  description: The theme file to use to display the post.
                  type: string
                acf:
                  description: ACF field data
                  type: object
                alt_text:
                  description: Alternative text to display when attachment is not displayed.
                  type: string
                caption:
                  description: The attachment caption.
                  type: object
                  properties:
                    raw:
                      description: Caption for the attachment, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML caption for the attachment, transformed for display.
                      type: string
                      readOnly: true
                description:
                  description: The attachment description.
                  type: object
                  properties:
                    raw:
                      description: Description for the attachment, as it exists in the database.
                      type: string
                    rendered:
                      description: HTML description for the attachment, transformed for display.
                      type: string
                      readOnly: true
                post:
                  description: The ID for the associated post of the attachment.
                  type: integer
      responses:
        '200':
          description: The updated item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteAttachment
      summary: Delete a media item
      tags:
      - media
      description: Trash or permanently delete a media item. Requires an authenticated editorial account.
      parameters:
      - name: force
        in: query
        description: Whether to bypass Trash and force deletion.
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: The deleted item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Attachment'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /wp/v2/pages:
    get:
      operationId: listPage
      summary: List pages
      description: state.gov pages. Returns a JSON array; total counts are carried in the X-WP-Total and X-WP-TotalPages response
        headers.
      tags:
      - pages
      security: []
      parameters:
      - name: context
        in: query
        description: Scope under which the request is made; determines fields present in response.
        schema:
          type: string
          enum:
          - view
          - embed
          - edit
          default: view
      - name: page
        in: query
        description: Current page of the collection.
        schema:
          type: integer
          default: 1
          minimum: 1
      - name: per_page
        in: query
        description: Maximum number of items to be returned in result set.
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
      - name: search
        in: query
        description: Limit results to those matching a string.
        schema:
          type: string
      - name: after
        in: query
        description: Limit response to posts published after a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: modified_after
        in: query
        description: Limit response to posts modified after a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: author
        in: query
        description: Limit result set to posts assigned to specific authors.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: author_exclude
        in: query
        description: Ensure result set excludes posts assigned to specific authors.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: before
        in: query
        description: Limit response to posts published before a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: modified_before
        in: query
        description: Limit response to posts modified before a given ISO8601 compliant date.
        schema:
          type: string
          format: date-time
      - name: exclude
        in: query
        description: Ensure result set excludes specific IDs.
        schema:
          type: array
          default: []
          items:
            type: integer
      - name: include
        in: query
        description: Limit result set to specific IDs.
        schema:
          type: array
          default: []
          items:
            type: i

# --- truncated at 32 KB (722 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/department-of-state/refs/heads/main/openapi/department-of-state-state-gov-content-openapi.yml