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

# Public-data evidence about one provider (by NPI)

> Public-data evidence about ONE specific provider: Medicare-derived experience, facility outcome context (facility-level, never the clinician's own outcome), Medicare payment anchors, or an explained absence. Use only once the conversation is focused on one provider. Anonymous limit: 60 requests per minute per IP.



## OpenAPI

````yaml /api-reference/pricing-openapi.yaml post /api/pricing.v1/provider-evidence
openapi: 3.1.0
info:
  title: Arlo Health Pricing API
  version: 1.0.0
  summary: >-
    US in-network cost estimates and provider network status from insurers'
    published rate files. No login or key required.
  description: >-
    Free, anonymous price-transparency API. Estimates come from insurers'
    machine-readable rate files and Medicare's fee schedules (Anthem, Blue Cross
    Blue Shield plans via BlueCard, Blue Shield of California, UnitedHealthcare,
    Cigna, Aetna, HCSC, Original Medicare) and public CMS data.


    Read the guide before relaying numbers to a person:
    https://api.arlohealth.ai/api/pricing.v1/guide.md


    What to get from the person, in order of impact: insurer name (required),
    location (for a named clinic, the clinic's city or ZIP), the exact service
    (age, new vs established, screening vs symptom, body part, contrast),
    employer or plan name from the card (turns ranges into exact rates), group
    number (Blue Cross Blue Shield IL/TX/OK/NM/MT only), provider name or NPI,
    and from a past bill or Explanation of Benefits the billing NPI and Tax ID
    (settles which entity bills).


    Three rules that apply to every response:

    1. Relay `disclaimer` every time. Estimates are never guarantees, and the
    number is a negotiated rate, not out-of-pocket cost.

    2. A named clinic, brand, or provider goes to `network-status` first.
    `search` is area discovery and does not resolve who bills.

    3. Never quote a single number while the billing entity is unresolved
    (`billingOutlook.mode` = partitioned, `multiEntity` = true, or several
    `billingCandidates`).


    Data vintage: 2026-08 payer files.
  termsOfService: https://arlohealth.ai/tos
  contact:
    name: Arlo Health
    email: keaton@arlohealth.ai
    url: https://arlohealth.ai
  x-agent-guide: https://api.arlohealth.ai/api/pricing.v1/guide.md
  x-skill: https://api.arlohealth.ai/api/pricing.v1/skill.md
  x-disclaimer: >-
    Estimates come from the insurer's published machine-readable rate files
    (latest monthly data) and are not a guarantee of price. Actual billing can
    differ based on plan specifics, services performed, and your deductible
    status. Confirm cost and network status when scheduling.
servers:
  - url: https://api.arlohealth.ai
    description: Production
security:
  - {}
  - bearerAuth: []
tags:
  - name: Discovery
    description: >-
      Read these first: the guide, the contract, the service catalog, and the
      supported insurers. Cacheable for an hour.
  - name: Pricing
    description: >-
      The lookups. Anonymous calls are rate limited per IP per minute; a few are
      served at a time per caller.
externalDocs:
  description: Agent guide (markdown)
  url: https://api.arlohealth.ai/api/pricing.v1/guide.md
paths:
  /api/pricing.v1/provider-evidence:
    post:
      tags:
        - Pricing
      summary: Public-data evidence about one provider (by NPI)
      description: >-
        Public-data evidence about ONE specific provider: Medicare-derived
        experience, facility outcome context (facility-level, never the
        clinician's own outcome), Medicare payment anchors, or an explained
        absence. Use only once the conversation is focused on one provider.
        Anonymous limit: 60 requests per minute per IP.
      operationId: getProviderEvidence
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: >-
                Public-data evidence about ONE specific provider:
                Medicare-derived experience, facility outcome context
                (facility-level, never the clinician's own outcome), Medicare
                payment anchors, or an explained absence. Use only once the
                conversation is focused on one provider.
              properties:
                npi:
                  type: string
                  description: >-
                    The provider's 10-digit NPI. Resolve it first via
                    network-status (name search) or from search results.
                code:
                  type: string
                  description: Optional catalog code to scope evidence to one service.
              required:
                - npi
            example:
              npi: '1003041625'
              code: '45378'
      responses:
        '200':
          description: Evidence card payload
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider:
                    type: object
                    properties:
                      npi:
                        type: number
                      name:
                        type:
                          - string
                          - 'null'
                      entityType:
                        type: string
                        description: organization | individual
                      city:
                        type:
                          - string
                          - 'null'
                      state:
                        type:
                          - string
                          - 'null'
                    required:
                      - npi
                  service:
                    type: object
                    description: >-
                      Echo of the resolved service. VERIFY appliesTo against the
                      actual patient before relaying any number.
                    properties:
                      code:
                        type: string
                      name:
                        type: string
                      category:
                        type: string
                      appliesTo:
                        type: string
                        description: >-
                          The selection fact baked into this code (age band, new
                          vs established, screening vs diagnostic, contrast,
                          duration).
                      priceNote:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Pricing semantics that change what the number means
                          (per-unit billing, ACA preventive $0 cost-share,
                          facility fee excludes the physician's separate bill).
                          Relay whenever present.
                      medicareNote:
                        type:
                          - string
                          - 'null'
                        description: >-
                          Original Medicare responses only, on codes Medicare
                          does not pay under this code (routine physicals,
                          telemedicine-specific codes, anesthesia, contraceptive
                          IUD): what Medicare covers instead and which code to
                          use. Relay it and switch codes when it names one.
                      relatedCodes:
                        type: array
                        description: >-
                          Sibling codes selected by a different patient fact
                          (age band, complexity, screening vs diagnostic). If
                          one fits the patient better, re-call with it.
                        items:
                          type: object
                          properties:
                            code:
                              type: string
                            name:
                              type:
                                - string
                                - 'null'
                            when:
                              type: string
                              description: The patient fact that selects this sibling.
                  signals:
                    type: array
                    description: >-
                      Pre-gated evidence signals from public CMS data. Relay
                      each signal's 'display' sentence as written; never
                      compress into ranking or 'best doctor' language; never
                      treat absence as negative (non-Medicare practices
                      legitimately lack data). An 'exclusion' signal (federal
                      OIG exclusion list) is a legal-status safety notice:
                      always relay it plainly.
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: >-
                            volume | outcome_context | optout | absence |
                            exclusion
                        hcpcs:
                          type: string
                        floor:
                          type: number
                          description: >-
                            Volume floor: performed at least this many per year
                            (Medicare).
                        pctl:
                          type: number
                          description: >-
                            National percentile. Present only when high
                            (positives-only display).
                        level:
                          type: string
                          description: >-
                            'facility' signals describe the facility, never the
                            clinician.
                        facility:
                          type: string
                        measure:
                          type: string
                        score:
                          type:
                            - number
                            - 'null'
                        ci:
                          type: array
                          items:
                            type:
                              - number
                              - 'null'
                        verdict:
                          type:
                            - string
                            - 'null'
                        denominator:
                          type:
                            - number
                            - 'null'
                        display:
                          type: string
                          description: >-
                            Derivation sentence. Relay verbatim or summarize
                            without changing meaning.
                      required:
                        - type
                        - display
                  medicareAnchors:
                    type: array
                    description: >-
                      What Medicare actually paid this provider per service.
                      Reference points from public data, not fair-price claims
                      and not the patient's price.
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                        setting:
                          type: string
                          description: facility | office
                        service:
                          type:
                            - string
                            - 'null'
                        medicareAllowed:
                          type: number
                        year:
                          type: number
                      required:
                        - code
                        - medicareAllowed
                        - year
                  signalDefinitions:
                    type: object
                  methodology:
                    type: string
                  corrections:
                    type: string
                  disclaimer:
                    type: string
                    description: >-
                      ALWAYS convey to the patient: estimates come from the
                      insurer's published data and are not a price guarantee.
                  needsMoreInfo:
                    type: array
                    description: >-
                      Asks to relay to the patient. Answering them improves the
                      estimate (ranges become the plan's exact rates). Each ask
                      names the field, why it matters, and how to obtain it. A
                      medicare_type ask means the numbers assume Original
                      Medicare and the person must confirm they are not on a
                      Medicare Advantage plan.
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                        ask:
                          type: string
                        why:
                          type: string
                        how:
                          type: string
                          description: >-
                            How to obtain it: ask the patient, read an EOB, or a
                            public lookup (e.g. NPI registry).
                        options:
                          type: array
                          items:
                            type: string
                      required:
                        - field
                        - ask
          headers:
            X-Arlo-Api-Version:
              schema:
                type: string
              description: Contract version (currently 1).
            Link:
              schema:
                type: string
              description: >-
                rel="service-doc" points at guide.md, rel="service-desc" at
                openapi.json.
        '429':
          description: >-
            Too many requests: the per-IP limit for this route was exceeded
            (RATE_LIMITED), or the service is busy (BUSY). Wait Retry-After
            seconds and try again.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: >-
                      Machine-readable code: RATE_LIMITED | BUSY |
                      PRICING_PUBLIC_DISABLED | NOT_FOUND |
                      PRICING_SEARCH_FAILED | PRICING_NETWORK_STATUS_FAILED |
                      PROVIDER_EVIDENCE_FAILED
                  message:
                    type: string
                  retryAfterSeconds:
                    type: number
                required:
                  - error
          headers:
            Retry-After:
              schema:
                type: integer
        '503':
          description: Anonymous pricing is paused. Honor Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: >-
                      Machine-readable code: RATE_LIMITED | BUSY |
                      PRICING_PUBLIC_DISABLED | NOT_FOUND |
                      PRICING_SEARCH_FAILED | PRICING_NETWORK_STATUS_FAILED |
                      PROVIDER_EVIDENCE_FAILED
                  message:
                    type: string
                  retryAfterSeconds:
                    type: number
                required:
                  - error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Optional. An Arlo account token adds linked-coverage plan matching and
        family-member patientId. Anonymous calls resolve the plan from planHints
        only.

````