Walgreens Appointments API

Appointment scheduling and management

OpenAPI Specification

walgreens-appointments-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Walgreens Prescription Refill Appointments API
  description: Enables medication management application developers to process prescription refills and transfers at any Walgreens pharmacy location. Supports barcode scanning for refill initiation and image-based prescription transfers from other pharmacies. Processes prescriptions from 8,200+ Walgreens pharmacies with mobile-optimized WebView checkout flows.
  version: 1.0.0
  contact:
    url: https://developer.walgreens.com
  termsOfService: https://developer.walgreens.com/terms
servers:
- url: https://services.walgreens.com
  description: Production
- url: https://services-qa.walgreens.com
  description: Sandbox
security:
- apiKey: []
tags:
- name: Appointments
  description: Appointment scheduling and management
paths:
  /api/vaccine/scheduling/timeslots/v1:
    post:
      operationId: getVaccineTimeslots
      summary: Get Vaccine Timeslots
      description: Retrieves available appointment timeslots for specified vaccines at Walgreens locations near a given zip code and coordinates. Returns locations with their available dates and time slots, vaccine product information, and distance from the specified position.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TimeslotsRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              state: IL
              zipCode: '60601'
              dob: '1990-05-15'
              vaccine:
              - '207'
              appointmentAvailability:
                startDateTime: '2026-05-10'
              position:
                latitude: 41.8827
                longitude: -87.6233
      responses:
        '200':
          description: Available vaccine appointment locations and timeslots
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeslotsResponse'
        '400':
          description: Malformed request body
        '403':
          description: Invalid API key
        '500':
          description: Internal server error
  /api/vaccine/scheduling/hold/v1:
    post:
      operationId: holdVaccineAppointment
      summary: Hold Vaccine Appointment
      description: Reserves a specific vaccine appointment timeslot at a Walgreens location, returning an engagement ID for use in subsequent patient registration and confirmation steps. The hold is temporary and must be confirmed to finalize the booking.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HoldRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              locationId: store-5823
              appointmentDate: '2026-05-10T09:30:00-05:00'
              slot: 09:30 am
              channel: Mobile
              client: MyHealthApp
              engagementType: Guest
              vaccines:
              - code: '207'
                productId: covid-moderna-001
                rxRequired: false
      responses:
        '200':
          description: Appointment hold successful, returns engagement ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HoldResponse'
        '400':
          description: Malformed request body
        '401':
          description: Request unauthorized
        '403':
          description: Invalid API key
        '409':
          description: Cannot place hold for timeslot - slot unavailable
        '500':
          description: Internal server error
  /api/vaccine/scheduling/confirm/v1:
    patch:
      operationId: confirmVaccineAppointment
      summary: Confirm Vaccine Appointment
      description: Finalizes a vaccine appointment reservation, converting the held timeslot into a confirmed booking. Must be called after patient information has been attached to the engagement. Returns HTTP 204 on success.
      tags:
      - Appointments
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConfirmRequest'
            example:
              apiKey: YOUR_API_KEY
              affId: YOUR_AFFILIATE_ID
              engagementId: eng-12345-abc
      responses:
        '204':
          description: Appointment confirmed successfully
        '400':
          description: Malformed request body
        '401':
          description: Request unauthorized
        '403':
          description: Invalid API key
        '409':
          description: Cannot confirm appointment
        '500':
          description: Internal server error
components:
  schemas:
    VaccineLocation:
      type: object
      properties:
        locationId:
          type: string
          description: Unique location identifier
        name:
          type: string
          description: Store name
        storenumber:
          type: string
          description: Walgreens store number
        description:
          type: string
          description: Store description
        position:
          type: object
          properties:
            latitude:
              type: number
            longitude:
              type: number
        address:
          type: object
          properties:
            line1:
              type: string
            line2:
              type: string
            city:
              type: string
            state:
              type: string
            country:
              type: string
            zip:
              type: string
        phone:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              number:
                type: string
        distance:
          type: number
          description: Distance in miles from search coordinates
        timeZone:
          type: string
          description: Location timezone
        appointmentAvailability:
          type: array
          items:
            $ref: '#/components/schemas/AppointmentAvailability'
    HoldResponse:
      type: object
      properties:
        engagementId:
          type: string
          description: Unique engagement identifier for subsequent steps
    TimeslotsResponse:
      type: object
      properties:
        locations:
          type: array
          items:
            $ref: '#/components/schemas/VaccineLocation'
    TimeslotsRequest:
      type: object
      required:
      - apiKey
      - affId
      - state
      - zipCode
      - dob
      - vaccine
      - appointmentAvailability
      - position
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        state:
          type: string
          description: Two-character US state code
        zipCode:
          type: string
          description: Patient or search zip code
        dob:
          type: string
          format: date
          description: Patient date of birth in YYYY-MM-DD format
        vaccine:
          type: array
          items:
            type: string
          maxItems: 4
          description: Array of up to 4 vaccine code IDs
        appointmentAvailability:
          type: object
          required:
          - startDateTime
          properties:
            startDateTime:
              type: string
              format: date
              description: Start date for available appointments
            endDateTime:
              type: string
              format: date
              description: Optional end date for appointment range
        position:
          type: object
          required:
          - latitude
          - longitude
          properties:
            latitude:
              type: number
              format: double
              description: Search latitude coordinate
            longitude:
              type: number
              format: double
              description: Search longitude coordinate
    HoldRequest:
      type: object
      required:
      - apiKey
      - affId
      - locationId
      - appointmentDate
      - slot
      - channel
      - client
      - engagementType
      - vaccines
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        locationId:
          type: string
          description: Store location ID from timeslots response
        appointmentDate:
          type: string
          description: ISO format appointment date/time with timezone offset
          example: '2026-05-10T09:30:00-05:00'
        slot:
          type: string
          description: Time slot to hold
          example: 09:30 am
        channel:
          type: string
          enum:
          - Web
          - Mobile
          description: Client channel type
        client:
          type: string
          description: Client application identifier
        engagementType:
          type: string
          enum:
          - Guest
          description: Engagement type, always Guest
        vaccines:
          type: array
          items:
            type: object
            required:
            - code
            - productId
            - rxRequired
            properties:
              code:
                type: string
                description: Vaccine code
              productId:
                type: string
                description: Vaccine product identifier
              rxRequired:
                type: boolean
                description: Whether a prescription is required
        userResponses:
          type: array
          items:
            type: object
            properties:
              details:
                type: array
                items:
                  type: object
                  properties:
                    answer:
                      type: string
                    question:
                      type: string
    ConfirmRequest:
      type: object
      required:
      - apiKey
      - affId
      - engagementId
      properties:
        apiKey:
          type: string
          description: Your Walgreens API key
        affId:
          type: string
          description: Your affiliate identifier
        engagementId:
          type: string
          description: Engagement ID from the hold response
    AppointmentAvailability:
      type: object
      properties:
        manufacturer:
          type: array
          items:
            type: object
            properties:
              productId:
                type: string
              vaccineCode:
                type: string
              vaccineName:
                type: string
              category:
                type: string
              prescriptionRequired:
                type: boolean
        date:
          type: string
          format: date
          description: Available date
        day:
          type: string
          description: Day of week
        slots:
          type: array
          items:
            type: string
          description: Available time slots (e.g. "09:30 am")
        numberOfSlotsAvailable:
          type: integer
          description: Total number of open slots for the date
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: apiKey
      description: API key obtained from Walgreens Developer Portal