Veterans Affairs Prescriptions API

The Prescriptions API from Veterans Affairs — 8 operation(s) for prescriptions.

Operations 8

GET /v1/prescriptions /v1/prescriptions #
GET /v1/prescriptions/{id} /v1/prescriptions/{id} #
PATCH /v1/prescriptions/{id}/refill /v1/prescriptions/{id}/refill #
GET /v1/prescriptions/list_refillable_prescriptions /v1/prescriptions/list_refillable_prescriptions #
PATCH /v1/prescriptions/refill_prescriptions /v1/prescriptions/refill_prescriptions #
GET /v2/prescriptions /v2/prescriptions #
GET /v2/prescriptions/list_refillable_prescriptions /v2/prescriptions/list_refillable_prescriptions #
POST /v2/prescriptions/refill /v2/prescriptions/refill #

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/va-prescriptions-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

va-prescriptions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: VA My Health Prescriptions API
  license:
    name: CC0 1.0 Universal
  description: 'The Department of Veterans Affairs My Health APIs. All paths are relative to https://api.va.gov/my_health.

    '
servers:
- url: https://api.va.gov/my_health
security:
- CookieAuth: []
tags:
- name: Prescriptions
paths:
  /v1/prescriptions:
    get:
      description: List medications.
      operationId: get_prescriptions
      parameters:
      - description: One refill status to filter on
        in: query
        name: refill_status
        required: false
        schema:
          type: string
      - description: The page number to get based on your page size
        in: query
        name: page
        required: false
        schema:
          type: string
      - description: The size of the pagination you want
        in: query
        name: per_page
        required: false
        schema:
          type: string
      - description: The attribute to sort on, negated for descending
        in: query
        name: sort
        required: false
        schema:
          type: string
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: ./schemas/V1PrescriptionList.yml
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Not authorized for access to secure messages
      summary: /v1/prescriptions
      tags:
      - Prescriptions
  /v1/prescriptions/{id}:
    get:
      description: Get prescription.
      operationId: get_prescription
      parameters:
      - description: prescription id
        in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: ./schemas/Prescription.yml
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Not authorized for access to secure messages
      summary: /v1/prescriptions/{id}
      tags:
      - Prescriptions
  /v1/prescriptions/{id}/refill:
    patch:
      description: Refill the prescription
      operationId: patch_refill_prescription
      parameters:
      - description: The id of the prescription
        in: path
        name: id
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '204':
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Not authorized for access to secure messages
      summary: /v1/prescriptions/{id}/refill
      tags:
      - Prescriptions
  /v1/prescriptions/list_refillable_prescriptions:
    get:
      description: List refillable medications.
      operationId: get_list_refillable_prescriptions
      parameters:
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: ./schemas/V1PrescriptionList.yml
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Not authorized for access to secure messages
      summary: /v1/prescriptions/list_refillable_prescriptions
      tags:
      - Prescriptions
  /v1/prescriptions/refill_prescriptions:
    patch:
      description: Refill the prescriptions
      operationId: patch_refill_prescription
      parameters:
      - description: Array of the prescription ids
        in: query
        name: ids
        required: true
        schema:
          type: array
          items:
            type: string
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '204':
          description: Success
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Not authorized for access to secure messages
      summary: /v1/prescriptions/refill_prescriptions
      tags:
      - Prescriptions
  /v2/prescriptions:
    get:
      description: 'List medications for the current user. This endpoint uses the Unified Health Data (Oracle Health) backend

        and requires the `mhv_medications_cerner_pilot` feature flag to be enabled.


        Supports filtering, sorting, and pagination. Results can be filtered by prescription status and sorted

        by various attributes. Pending (PD) prescriptions are included based on the `mhv_medications_display_pending_meds`

        feature flag.

        '
      operationId: get_v2_prescriptions
      parameters:
      - description: Filter prescriptions by disp_status (comma-separated for multiple values, e.g., "Active,Expired")
        in: query
        name: filter[disp_status][eq]
        required: false
        schema:
          type: string
          example: Active
      - description: The page number for pagination
        in: query
        name: page
        required: false
        schema:
          type: integer
          minimum: 1
          example: 1
      - description: The number of items per page
        in: query
        name: per_page
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 100
          example: 20
      - description: 'The attribute to sort by. Prefix with "-" for descending order.

          Supported values: "alphabetical-rx-name", "last-fill-date", or field names like "disp_status", "prescription_name", "dispensed_date"

          '
        in: query
        name: sort
        required: false
        schema:
          type: string
          example: alphabetical-rx-name
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: ./schemas/V2PrescriptionList.yml
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Forbidden - Feature not available or user not authorized
        '500':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Internal Server Error
      summary: /v2/prescriptions
      tags:
      - Prescriptions
  /v2/prescriptions/list_refillable_prescriptions:
    get:
      description: 'List refillable medications for the current user. This endpoint returns prescriptions that can be refilled,

        including those marked as refillable or renewable (Active/Expired within 120 days).


        Uses the Unified Health Data (Oracle Health) backend and requires the `mhv_medications_cerner_pilot` feature flag.

        '
      operationId: get_v2_list_refillable_prescriptions
      parameters:
      - $ref: '#/components/parameters/InflectionHeader'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                required:
                - data
                - meta
                properties:
                  data:
                    type: array
                    items:
                      $ref: ./schemas/PrescriptionDetail.yml
                  meta:
                    type: object
                    required:
                    - recently_requested
                    properties:
                      recently_requested:
                        type: array
                        description: 'List of prescriptions with status "Active: Refill in Process" or "Active: Submitted"

                          '
                        items:
                          type: object
          description: OK
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Forbidden - Feature not available or user not authorized
        '500':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Internal Server Error
      summary: /v2/prescriptions/list_refillable_prescriptions
      tags:
      - Prescriptions
  /v2/prescriptions/refill:
    post:
      description: "Refill one or more prescriptions in a batch operation. This endpoint accepts an array of prescription orders,\neach containing a station number and prescription ID. Returns detailed results for each refill attempt,\nincluding successful refills and any errors encountered.\n\nUses the Unified Health Data (Oracle Health) backend and requires the `mhv_medications_cerner_pilot` feature flag.\n\n<strong>NOTES:</strong>\n<ul>\n  <li>All orders are processed in a single batch operation</li>\n  <li>Partial failures are allowed - some prescriptions may succeed while others fail</li>\n  <li>Each order must include both stationNumber and id fields</li>\n  <li>At least one order must be provided</li>\n  <li>Results include separate lists for successful and failed refills</li>\n</ul>\n"
      operationId: post_v2_refill_prescriptions
      parameters:
      - $ref: '#/components/parameters/InflectionHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: ./schemas/PrescriptionRefillRequest.yml
        description: Array of prescription orders to refill
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: ./schemas/PrescriptionRefillResponse.yml
          description: OK - Refill operation completed (may include partial failures)
        '400':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Bad Request - Invalid request format or missing required fields
        '401':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Forbidden - Feature not available or user not authorized
        '500':
          content:
            application/json:
              schema:
                $ref: ./schemas/Errors.yml
          description: Internal Server Error
      summary: /v2/prescriptions/refill
      tags:
      - Prescriptions
components:
  parameters:
    InflectionHeader:
      in: header
      name: X-Key-Inflection
      required: false
      schema:
        type: string
        enum:
        - camel
        - snake
      description: Instructs the API to return camelCase keys rather than snake_case
  securitySchemes:
    CookieAuth:
      type: apiKey
      name: api_session
      in: cookie
      description: An authenticated session is established using the Sessions Controller to initiate federated authentication with an external credential provider, after which an API session token is established in the api_session cookie.