VA Facilities API

Search and retrieve VA medical facilities, benefits offices, vet centers, and cemeteries by location, service, or identifier.

OpenAPI Specification

va-facilities-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: VA Facilities API
  description: >-
    The Department of Veterans Affairs Facilities API provides programmatic
    access to information about VA medical centers, clinics, vet centers,
    benefits offices, and cemeteries across the United States. Consumers can
    search by location, list facilities by type, retrieve details, and access
    services offered, operating hours, and patient-satisfaction or wait-time
    data where published.
  version: '1'
  contact:
    name: VA API Platform
    url: https://developer.va.gov/support/contact-us
  termsOfService: https://developer.va.gov/terms-of-service
  license:
    name: Creative Commons Attribution 4.0
    url: https://creativecommons.org/licenses/by/4.0/
externalDocs:
  description: VA Facilities API documentation
  url: https://developer.va.gov/explore/api/va-facilities
servers:
  - url: https://sandbox-api.va.gov/services/va_facilities/v1
    description: Sandbox
  - url: https://api.va.gov/services/va_facilities/v1
    description: Production
tags:
  - name: Facilities
    description: Search and retrieve VA facilities
  - name: Services
    description: Health, benefits, and other services offered at facilities
  - name: NearbyFacilities
    description: Locate facilities near a given address or coordinates
security:
  - ApiKeyAuth: []
paths:
  /facilities:
    get:
      tags: [Facilities]
      summary: List or search VA facilities
      description: Search VA facilities by bounding box, ids, type, services, zip, state, or visn.
      operationId: listFacilities
      parameters:
        - name: bbox[]
          in: query
          schema:
            type: array
            items:
              type: number
            minItems: 4
            maxItems: 4
          description: Bounding box (lng_min, lat_min, lng_max, lat_max)
        - name: ids
          in: query
          schema:
            type: string
          description: Comma-separated facility IDs
        - name: type
          in: query
          schema:
            type: string
            enum: [health, benefits, cemetery, vet_center]
        - name: services[]
          in: query
          schema:
            type: array
            items:
              type: string
        - name: state
          in: query
          schema:
            type: string
            pattern: ^[A-Z]{2}$
        - name: zip
          in: query
          schema:
            type: string
            pattern: ^[0-9]{5}(-[0-9]{4})?$
        - name: visn
          in: query
          schema:
            type: string
        - name: page
          in: query
          schema:
            type: integer
            default: 1
        - name: per_page
          in: query
          schema:
            type: integer
            default: 30
            maximum: 100
      responses:
        '200':
          description: Collection of facilities
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FacilityCollection'
  /facilities/{id}:
    get:
      tags: [Facilities]
      summary: Retrieve a single VA facility
      operationId: getFacilityById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Facility detail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Facility'
        '404':
          description: Facility not found
  /nearby:
    get:
      tags: [NearbyFacilities]
      summary: Find facilities near an address or coordinates
      operationId: findNearby
      parameters:
        - name: lat
          in: query
          schema:
            type: number
        - name: lng
          in: query
          schema:
            type: number
        - name: street_address
          in: query
          schema:
            type: string
        - name: city
          in: query
          schema:
            type: string
        - name: state
          in: query
          schema:
            type: string
        - name: zip
          in: query
          schema:
            type: string
        - name: drive_time
          in: query
          schema:
            type: integer
            enum: [10, 20, 30, 40, 50, 60, 70, 80, 90]
      responses:
        '200':
          description: Nearby facilities
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NearbyCollection'
  /facilities/{id}/services:
    get:
      tags: [Services]
      summary: List services offered by a facility
      operationId: getFacilityServices
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Service list
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Service'
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
  schemas:
    Facility:
      type: object
      required: [id, type, attributes]
      properties:
        id:
          type: string
          example: vha_688
        type:
          type: string
          example: facility
        attributes:
          type: object
          properties:
            name:
              type: string
            facilityType:
              type: string
              enum: [va_health_facility, va_benefits_facility, va_cemetery, vet_center]
            classification:
              type: string
            website:
              type: string
              format: uri
            lat:
              type: number
            long:
              type: number
            timeZone:
              type: string
            address:
              $ref: '#/components/schemas/Addresses'
            phone:
              $ref: '#/components/schemas/Phone'
            hours:
              $ref: '#/components/schemas/Hours'
            services:
              type: object
            visn:
              type: string
    FacilityCollection:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Facility'
        meta:
          type: object
        links:
          type: object
    NearbyCollection:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Facility'
    Addresses:
      type: object
      properties:
        mailing:
          $ref: '#/components/schemas/Address'
        physical:
          $ref: '#/components/schemas/Address'
    Address:
      type: object
      properties:
        zip:
          type: string
        city:
          type: string
        state:
          type: string
        address1:
          type: string
        address2:
          type: string
        address3:
          type: string
    Phone:
      type: object
      properties:
        main:
          type: string
        fax:
          type: string
        afterHours:
          type: string
        patientAdvocate:
          type: string
        mentalHealthClinic:
          type: string
        enrollmentCoordinator:
          type: string
        pharmacy:
          type: string
    Hours:
      type: object
      additionalProperties:
        type: string
    Service:
      type: object
      properties:
        name:
          type: string
        serviceId:
          type: string
        link:
          type: string
        active:
          type: boolean