Veterans Affairs Prescriptions API
The Prescriptions API from Veterans Affairs — 8 operation(s) for prescriptions.
The Prescriptions API from Veterans Affairs — 8 operation(s) for prescriptions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/va-prescriptions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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.