> ## Documentation Index
> Fetch the complete documentation index at: https://docs.getsolum.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a verification of benefits

> Requests a VOB of one active policy of one of your patients. Each specialty needs a `service_type`; its billing credential, CPT codes, places of service and ICD codes are taken from your company's defaults when omitted (the NPI always comes from the credential). The response carries the resolved specialties and `result: null`. A policy has at most one open VOB (pending, in progress or missing information): a second one answers 409 with the open VOB's id in `details.open_vob_id`. 422 when the policy is not an active policy of that patient, a credential is not an active one of your company, or a field can't be resolved (`param` names it, e.g. `specialties[0].cpt_codes`). Creating a VOB moves the patient to your Needs VOB stage unless they are already on a verify-insurance stage.



## OpenAPI

````yaml https://api.getsolum.com/openapi.json post /v1/verification-of-benefits
openapi: 3.1.0
info:
  title: Solum Health API
  description: '## Solum Health Backend API '
  version: 1.0.0
servers: []
security: []
paths:
  /v1/verification-of-benefits:
    post:
      tags:
        - Verification of Benefits
      summary: Create a verification of benefits
      description: >-
        Requests a VOB of one active policy of one of your patients. Each
        specialty needs a `service_type`; its billing credential, CPT codes,
        places of service and ICD codes are taken from your company's defaults
        when omitted (the NPI always comes from the credential). The response
        carries the resolved specialties and `result: null`. A policy has at
        most one open VOB (pending, in progress or missing information): a
        second one answers 409 with the open VOB's id in `details.open_vob_id`.
        422 when the policy is not an active policy of that patient, a
        credential is not an active one of your company, or a field can't be
        resolved (`param` names it, e.g. `specialties[0].cpt_codes`). Creating a
        VOB moves the patient to your Needs VOB stage unless they are already on
        a verify-insurance stage.
      operationId: create_vob_endpoint_v1_verification_of_benefits_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VobCreate'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VobDetailOut'
        '404':
          description: No such VOB (or patient) in your company.
        '409':
          description: The policy already has an open VOB; `details.open_vob_id` names it.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  type:
                    type: string
                    example: validation_error
                  code:
                    type: string
                    example: invalid_parameter
                  message:
                    type: string
                    example: Field validation failed
                  param:
                    type: string
                    example: phone_number
                required:
                  - type
                  - code
                  - message
      security:
        - APIKeyHeader: []
        - HTTPBearer: []
components:
  schemas:
    VobCreate:
      properties:
        patient_id:
          type: string
          title: Patient Id
          description: The patient the policy belongs to.
        patient_policy_id:
          type: string
          title: Patient Policy Id
          description: The active policy to verify.
        priority:
          type: boolean
          title: Priority
          description: Flag the VOB as a priority request.
          default: false
        specialties:
          items:
            $ref: '#/components/schemas/SpecialtyIn'
          type: array
          minItems: 1
          title: Specialties
          description: At least one specialty; a service type may appear once.
      additionalProperties: false
      type: object
      required:
        - patient_id
        - patient_policy_id
        - specialties
      title: VobCreate
      description: Create a VOB of one policy of one patient.
    VobDetailOut:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        patient_id:
          type: string
          format: uuid
          title: Patient Id
        priority:
          type: boolean
          title: Priority
          default: false
        created_by_id:
          type: string
          title: Created By Id
        company_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Company Id
        version:
          type: integer
          title: Version
        status:
          type: string
          title: Status
        active:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Active
        reviewer_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Reviewer User Id
        reviewed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Reviewed At
        completed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Completed At
        completed_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Completed By User Id
        missing_information_since:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Missing Information Since
        sla_paused_seconds:
          type: integer
          title: Sla Paused Seconds
          default: 0
        patient_policy_id:
          type: string
          format: uuid
          title: Patient Policy Id
        backfilled:
          type: boolean
          title: Backfilled
          default: false
        specialties:
          items:
            $ref: '#/components/schemas/SpecialtyOut'
          type: array
          title: Specialties
          default: []
        result_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Result Id
          description: >-
            The id of the VOB's result (`result.id`), on the list with or
            without `include=result`; `null` while it has none.
        result:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Result
        created_by:
          anyOf:
            - $ref: >-
                #/components/schemas/app__shared__work_record_schemas__UserSummary
            - type: 'null'
        patient:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Patient
        missing_information_ask:
          anyOf:
            - $ref: '#/components/schemas/MissingInformationAskOut'
            - type: 'null'
          description: >-
            While the VOB is missing information: the latest comment in which
            Solum asked for it. Null in any other status, or while nobody has
            asked yet.
        missing_information_answered_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Missing Information Answered At
          description: >-
            Your latest comment after that ask (your update notes included);
            null until you answer.
        auto_cancel_on:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          title: Auto Cancel On
          description: >-
            The date Solum will cancel the VOB if the ask stays unanswered, once
            Solum has warned. Null once you have answered
            (`missing_information_answered_at` is set): an answered VOB is not
            cancelled.
        cancellation:
          anyOf:
            - $ref: '#/components/schemas/CancellationOut'
            - type: 'null'
          description: Set once the VOB is cancelled.
      type: object
      required:
        - id
        - created_at
        - updated_at
        - patient_id
        - created_by_id
        - version
        - status
        - patient_policy_id
      title: VobDetailOut
      description: |-
        One VOB as its own endpoints return it (get, create, update, cancel):
        `VobOut` plus what the VOB's page shows beside the request.
    SpecialtyIn:
      properties:
        service_type:
          $ref: '#/components/schemas/ServiceType'
          description: The specialty to verify.
        credentialing_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Credentialing Id
          description: >-
            An active credentialing record of your company to bill under.
            Omitted: the policy's billing credential, else the insurance's
            billing default, else the credential registered for this specialty.
        cpt_codes:
          anyOf:
            - items:
                type: string
              type: array
              maxItems: 50
            - type: 'null'
          title: Cpt Codes
          description: >-
            Up to 50 CPT/HCPCS codes, five letters or digits each (trimmed,
            upper-cased, de-duplicated). Omitted: the company's default CPT
            codes for this specialty. The eligibility check asks the payer about
            the first 8.
        service_locations:
          anyOf:
            - items:
                $ref: '#/components/schemas/ServiceLocation'
              type: array
            - type: 'null'
          title: Service Locations
          description: >-
            At least one place of service. Omitted: the company's places of
            service.
        icd_codes:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Icd Codes
          description: >-
            Diagnosis codes (may be empty). Omitted: the company's default ICD
            codes for this specialty.
      additionalProperties: false
      type: object
      required:
        - service_type
      title: SpecialtyIn
      description: |-
        One specialty (service type) the VOB asks Solum to verify.

        Only `service_type` is required. Omit any other field to take the
        company's default for that service type; a field that has no default is
        refused with 422 naming the specialty and the field
        (`param="specialties[0].cpt_codes"`). The NPI is always copied from the
        credential, never sent.
    SpecialtyOut:
      properties:
        id:
          type: string
          title: Id
        service_type:
          $ref: '#/components/schemas/ServiceType'
        credentialing_id:
          type: string
          title: Credentialing Id
        npi:
          type: string
          title: Npi
        cpt_codes:
          items:
            type: string
          type: array
          title: Cpt Codes
        service_locations:
          items:
            $ref: '#/components/schemas/ServiceLocation'
          type: array
          title: Service Locations
        icd_codes:
          items:
            type: string
          type: array
          title: Icd Codes
        credentialing:
          anyOf:
            - $ref: '#/components/schemas/VobRequestServiceCredentialing'
            - type: 'null'
      type: object
      required:
        - id
        - service_type
        - credentialing_id
        - npi
        - cpt_codes
        - service_locations
        - icd_codes
      title: SpecialtyOut
      description: 'One requested specialty, as stored: every field resolved.'
    app__shared__work_record_schemas__UserSummary:
      properties:
        id:
          type: string
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        email:
          anyOf:
            - type: string
            - type: 'null'
          title: Email
        image:
          anyOf:
            - type: string
            - type: 'null'
          title: Image
        user_type:
          anyOf:
            - type: string
            - type: 'null'
          title: User Type
      type: object
      required:
        - id
      title: UserSummary
    MissingInformationAskOut:
      properties:
        comment_id:
          type: string
          format: uuid
          title: Comment Id
        content:
          type: string
          title: Content
          description: >-
            The comment's text; a staff member mentioned in it reads as "Solum
            AI".
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
        - comment_id
        - content
        - created_at
      title: MissingInformationAskOut
      description: What Solum asked in the current wait on the clinic.
    CancellationOut:
      properties:
        reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Reason
          description: The comment posted with the cancel; null when none is on file.
        cancelled_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Cancelled At
        cancelled_by:
          anyOf:
            - $ref: >-
                #/components/schemas/app__shared__work_record_schemas__UserSummary
            - type: 'null'
      type: object
      title: CancellationOut
      description: Why, when and by whom a VOB was cancelled.
    ServiceType:
      type: string
      enum:
        - medical_care
        - surgical
        - consultation
        - diagnostic_x_ray
        - diagnostic_lab
        - radiation_therapy
        - anesthesia
        - surgical_assistance
        - other_medical
        - blood_charges
        - used_durable_medical_equipment
        - durable_medical_equipment_purchase
        - ambulatory_service_center_facility
        - renal_supplies_in_home
        - alternate_method_dialysis
        - chronic_renal_disease_equipment
        - pre_admission_testing
        - durable_medical_equipment_rental
        - pneumonia_vaccine
        - second_surgical_opinion
        - third_surgical_opinion
        - social_work
        - diagnostic_dental
        - periodontics
        - restorative
        - endodontics
        - maxillofacial_prosthetics
        - adjunctive_dental_services
        - health_benefit_plan_coverage
        - plan_waiting_period
        - chiropractic
        - chiropractic_office_visits
        - dental_care
        - dental_crowns
        - dental_accident
        - orthodontics
        - prosthodontics
        - oral_surgery
        - routine_preventive_dental
        - home_health_care
        - home_health_prescriptions
        - home_health_visits
        - hospice
        - respite_care
        - hospital
        - hospital_inpatient
        - hospital_room_and_board
        - hospital_outpatient
        - hospital_emergency_accident
        - hospital_emergency_medical
        - hospital_ambulatory_surgical
        - long_term_care
        - major_medical
        - medically_related_transportation
        - air_transportation
        - cabulance
        - licensed_ambulance
        - general_benefits
        - in_vitro_fertilization
        - mri_cat_scan
        - donor_procedures
        - acupuncture
        - newborn_care
        - pathology
        - smoking_cessation
        - well_baby_care
        - maternity
        - transplants
        - audiology_exam
        - inhalation_therapy
        - diagnostic_medical
        - private_duty_nursing
        - prosthetic_device
        - dialysis
        - otological_exam
        - chemotherapy
        - allergy_testing
        - immunizations
        - routine_physical
        - family_planning
        - infertility
        - abortion
        - aids
        - emergency_services
        - cancer
        - pharmacy
        - free_standing_prescription_drug
        - mail_order_prescription_drug
        - brand_name_prescription_drug
        - generic_prescription_drug
        - podiatry
        - podiatry_office_visits
        - podiatry_nursing_home_visits
        - professional_physician
        - anesthesiologist
        - professional_visit_office
        - professional_visit_inpatient
        - professional_visit_outpatient
        - professional_visit_nursing_home
        - professional_visit_skilled_nursing_facility
        - professional_visit_home
        - psychiatric
        - psychiatric_room_and_board
        - psychotherapy
        - psychiatric_inpatient
        - psychiatric_outpatient
        - rehabilitation
        - rehabilitation_room_and_board
        - rehabilitation_inpatient
        - rehabilitation_outpatient
        - occupational_therapy
        - physical_medicine
        - speech_therapy
        - skilled_nursing_care
        - skilled_nursing_care_room_and_board
        - substance_abuse
        - alcoholism
        - drug_addiction
        - vision_optometry
        - frames
        - routine_exam
        - lenses
        - nonmedically_necessary_physical
        - experimental_drug_therapy
        - burn_care
        - brand_name_prescription_drug_formulary
        - brand_name_prescription_drug_non_formulary
        - independent_medical_evaluation
        - partial_hospitalization_psychiatric
        - day_care_psychiatric
        - cognitive_therapy
        - massage_therapy
        - pulmonary_rehabilitation
        - cardiac_rehabilitation
        - pediatric
        - nursery
        - skin
        - orthopedic
        - cardiac
        - lymphatic
        - gastrointestinal
        - endocrine
        - neurology
        - eye
        - invasive_procedures
        - gynecological
        - obstetrical
        - obstetrical_gynecological
        - mail_order_prescription_drug_brand_name
        - mail_order_prescription_drug_generic
        - physician_visit_office_sick
        - physician_visit_office_well
        - coronary_care
        - private_duty_nursing_inpatient
        - private_duty_nursing_home
        - surgical_benefits_professional
        - surgical_benefits_facility
        - mental_health_provider_inpatient
        - mental_health_provider_outpatient
        - mental_health_facility_inpatient
        - mental_health_facility_outpatient
        - substance_abuse_facility_inpatient
        - substance_abuse_facility_outpatient
        - screening_x_ray
        - screening_laboratory
        - mammogram_high_risk_patient
        - mammogram_low_risk_patient
        - flu_vaccination
        - eyewear_and_accessories
        - case_management
        - dermatology
        - durable_medical_equipment
        - diabetic_supplies
        - generic_prescription_drug_formulary
        - generic_prescription_drug_non_formulary
        - allergy
        - intensive_care
        - mental_health
        - neonatal_intensive_care
        - oncology
        - physical_therapy
        - pulmonary
        - renal
        - residential_psychiatric_treatment
        - transitional_care
        - transitional_nursery_care
        - urgent_care
      title: ServiceType
      description: |-
        X12 Service Type — human-readable enum values stored in the database.
        See app/utils/service_type_mapping.py for code-to-type mappings.
    ServiceLocation:
      type: string
      enum:
        - home
        - office
        - school
        - daycare
        - community
        - telehealth
        - on_campus_outpatient_hospital
      title: ServiceLocation
      description: Service location enum matching Prisma @@map("service_location").
    VobRequestServiceCredentialing:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        type:
          type: string
          title: Type
        is_active:
          type: boolean
          title: Is Active
      type: object
      required:
        - id
        - name
        - type
        - is_active
      title: VobRequestServiceCredentialing
      description: Denormalised credentialing summary embedded in a VOB specialty.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    HTTPBearer:
      type: http
      scheme: bearer

````