Backwork Drugs API

Drug formulary and pharmacy benefit evidence

Operations 1

GET /drugs/formulary Search drug formulary evidence #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/backworkhealth-com:backworkhealth-com-drugs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

backworkhealth-com-drugs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Backworkhealth Com Drugs API
  version: 1.0.0
  contact:
    email: support@backworkhealth.com
    url: https://backworkhealth.com
  license:
    name: Proprietary
    url: https://backworkhealth.com/terms
  description: 'Operations tagged Drugs across 2 of this provider''s published API definitions: backworkhealth-com-openapi.json, backworkhealth-com-v1-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://backworkhealth.com/api/v1
  description: Production server
- url: http://localhost:3000/api/v1
  description: Local development
security:
- bearerAuth: []
tags:
- name: Drugs
  description: Drug formulary and pharmacy benefit evidence
paths:
  /drugs/formulary:
    get:
      tags:
      - Drugs
      summary: Search drug formulary evidence
      description: Search commercial pharmacy-benefit evidence from CVS Caremark, Express Scripts, and UnitedHealthcare / Optum Rx. Records are informational; verify current coverage, utilization management, and member-specific benefits with the payer.
      operationId: searchDrugFormularyEvidence
      parameters:
      - name: q
        in: query
        description: Drug name or therapeutic category search query
        required: true
        schema:
          type: string
          minLength: 2
          maxLength: 200
          examples:
          - metformin
      - name: payer
        in: query
        description: Optional payer/PBM source filter
        required: false
        schema:
          default: all
          type: string
          enum:
          - all
          - cvs_caremark
          - express_scripts
          - uhc
      - name: limit
        in: query
        description: Maximum results per source
        required: false
        schema:
          default: 25
          type: number
          minimum: 1
          maximum: 100
      responses:
        '200':
          description: Matching formulary evidence across the requested sources
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    const: true
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/DrugFormularyEvidence'
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                        description: Unique request identifier for tracing
                      timestamp:
                        type: string
                        format: date-time
                        description: Response timestamp
                      search:
                        type: object
                        properties:
                          query:
                            type: string
                          payer:
                            type: string
                        required:
                        - query
                        - payer
                      counts:
                        type: object
                        properties:
                          cvs_caremark:
                            type: integer
                          express_scripts:
                            type: integer
                          uhc:
                            type: integer
                          total:
                            type: integer
                        required:
                        - cvs_caremark
                        - express_scripts
                        - uhc
                        - total
                      limit_per_source:
                        type: integer
                      attributions:
                        $ref: '#/components/schemas/Attributions'
                      disclaimer:
                        type: string
                    required:
                    - request_id
                    - timestamp
                    - search
                    - counts
                    - limit_per_source
                    - attributions
                    - disclaimer
                required:
                - success
                - data
                - meta
        '400':
          description: 'Error: `VALIDATION_ERROR`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error:
                  code: VALIDATION_ERROR
                  message: Request validation failed
                  hint: Fix the fields listed in details, then send the corrected request
                  docUrl: https://backworkhealth.com/docs/errors#validation-error
                  retryable: false
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
        '401':
          description: 'Error: `AUTH_MISSING`, `AUTH_INVALID_FORMAT`, `AUTH_INVALID_TOKEN`, `AUTH_KEY_NOT_FOUND`, `AUTH_KEY_REVOKED`, `AUTH_KEY_SUSPENDED`, `AUTH_TEST_KEY_SANDBOX_ONLY`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error:
                  code: AUTH_MISSING
                  message: Missing Authorization header
                  hint: 'Include "Authorization: Bearer bwk_xxx" header'
                  docUrl: https://backworkhealth.com/docs/errors#auth-missing
                  retryable: false
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
        '402':
          description: 'Error: `BILLING_CREDITS_EXHAUSTED`, plan-gate denial'
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/ErrorResponse'
                - $ref: '#/components/schemas/GateDenialResponse'
              example:
                success: false
                error:
                  code: BILLING_CREDITS_EXHAUSTED
                  message: Your organization has no request credits left for this call
                  hint: details.requests_required is this call's cost and details.requests_available is the balance. Retry once the balance covers the call. An organization admin can manage the plan and usage in the Backwork dashboard at https://backworkhealth.com/api-usage
                  docUrl: https://backworkhealth.com/docs/errors#billing-credits-exhausted
                  retryable: false
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
        '403':
          description: 'Error: `AUTHZ_SCOPE_REQUIRED`, `AUTHZ_ORIGIN_NOT_ALLOWED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error:
                  code: AUTHZ_SCOPE_REQUIRED
                  message: Insufficient permissions for this operation
                  hint: details.required_scopes lists the scopes this operation accepts
                  docUrl: https://backworkhealth.com/docs/errors#authz-scope-required
                  retryable: false
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
        '429':
          description: 'Error: `RATE_LIMIT_EXCEEDED`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error:
                  code: RATE_LIMIT_EXCEEDED
                  message: Rate limit exceeded
                  hint: Wait the number of seconds in the Retry-After header, then retry
                  docUrl: https://backworkhealth.com/docs/errors#rate-limit-exceeded
                  retryable: true
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
        '500':
          description: 'Error: `SERVER_INTERNAL_ERROR`'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                success: false
                error:
                  code: SERVER_INTERNAL_ERROR
                  message: Internal server error
                  hint: Contact support@backworkhealth.com with the request_id from this response
                  docUrl: https://backworkhealth.com/docs/errors#server-internal-error
                  retryable: false
                meta:
                  request_id: req_abc123
                  timestamp: '2024-01-15T10:30:00Z'
    servers:
    - url: https://backworkhealth.com/api/v1
      description: Production server
    - url: http://localhost:3000/api/v1
      description: Local development
components:
  schemas:
    JsonArray:
      type: array
      items:
        $ref: '#/components/schemas/JsonValue'
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          const: false
        error:
          type: object
          properties:
            code:
              $ref: '#/components/schemas/ApiErrorCode'
            message:
              type: string
              description: Human-readable error message
            hint:
              description: Suggestion for resolving the error
              type: string
            docUrl:
              description: Link to error documentation
              type: string
              format: uri
            retryable:
              type: boolean
              description: Whether repeating the identical request later can succeed
            details:
              description: Additional error details
              $ref: '#/components/schemas/JsonValue'
          required:
          - code
          - message
          - retryable
        meta:
          $ref: '#/components/schemas/ResponseMeta'
      required:
      - success
      - error
      - meta
    DrugFormularyEvidence:
      type: object
      properties:
        source:
          type: string
          enum:
          - cvs_caremark
          - express_scripts
          - uhc
        payer_name:
          type: string
        pbm_name:
          type:
          - string
          - 'null'
        formulary_name:
          type:
          - string
          - 'null'
        plan_year:
          anyOf:
          - type: integer
          - type: 'null'
        effective_date:
          type:
          - string
          - 'null'
        drug_name:
          type: string
        matched_text:
          type:
          - string
          - 'null'
        therapeutic_category:
          type:
          - string
          - 'null'
        drug_class:
          type:
          - string
          - 'null'
        tier:
          type:
          - string
          - 'null'
        coverage_status:
          type:
          - string
          - 'null'
        requirements:
          type: object
          properties:
            prior_authorization:
              type:
              - boolean
              - string
              - 'null'
            step_therapy:
              type:
              - boolean
              - string
              - 'null'
            quantity_limit:
              type:
              - boolean
              - string
              - 'null'
            specialty:
              type:
              - boolean
              - 'null'
            text:
              type:
              - string
              - 'null'
            codes:
              type: array
              items:
                type: string
          required:
          - prior_authorization
          - step_therapy
          - quantity_limit
          - specialty
          - text
          - codes
        alternatives:
          type:
          - string
          - 'null'
        preferred_alternatives:
          type:
          - string
          - 'null'
        source_url:
          type:
          - string
          - 'null'
        source_page:
          anyOf:
          - type: integer
          - type: 'null'
      required:
      - source
      - payer_name
      - pbm_name
      - formulary_name
      - plan_year
      - effective_date
      - drug_name
      - matched_text
      - therapeutic_category
      - drug_class
      - tier
      - coverage_status
      - requirements
      - alternatives
      - preferred_alternatives
      - source_url
      - source_page
    Attributions:
      type: object
      properties:
        disclaimer:
          type: string
        cpt:
          type: string
        loinc:
          type: string
        cms:
          type: string
        payer_data:
          type: string
        negotiated_rates:
          type: string
      required:
      - disclaimer
      description: Required notices for the data in this response
    ResponseMeta:
      type: object
      properties:
        request_id:
          type: string
          description: Unique request identifier for tracing
        timestamp:
          type: string
          format: date-time
          description: Response timestamp
      required:
      - request_id
      - timestamp
    ApiErrorCode:
      type: string
      enum:
      - AUTH_MISSING
      - AUTH_INVALID_FORMAT
      - AUTH_INVALID_KEY_FORMAT
      - AUTH_INVALID_TOKEN
      - AUTH_KEY_NOT_FOUND
      - AUTH_KEY_REVOKED
      - AUTH_KEY_SUSPENDED
      - AUTH_KEY_EXPIRED
      - AUTH_SANDBOX_TEST_KEY_REQUIRED
      - AUTH_TEST_KEY_SANDBOX_ONLY
      - AUTHZ_SCOPE_REQUIRED
      - AUTHZ_IP_NOT_ALLOWED
      - AUTHZ_ORIGIN_NOT_ALLOWED
      - BILLING_FEATURE_REQUIRED
      - BILLING_CREDITS_EXHAUSTED
      - RATE_LIMIT_EXCEEDED
      - RATE_QUOTA_EXCEEDED
      - RATE_CONCURRENT_EXCEEDED
      - VALIDATION_ERROR
      - VALIDATION_INVALID_JSON
      - VALIDATION_REQUIRED_FIELD
      - VALIDATION_OUT_OF_RANGE
      - VALIDATION_INVALID_FORMAT
      - PHI_NOT_ALLOWED
      - RESOURCE_NOT_FOUND
      - RESOURCE_POLICY_NOT_FOUND
      - RESOURCE_CODE_NOT_FOUND
      - RESOURCE_JURISDICTION_NOT_FOUND
      - RESOURCE_PAYER_NOT_FOUND
      - RESOURCE_RELEASE_NOT_AVAILABLE
      - REQUEST_INVALID_CURSOR
      - REQUEST_IDEMPOTENCY_CONFLICT
      - REQUEST_IDEMPOTENCY_IN_PROGRESS
      - REQUEST_UNSUPPORTED_CONTENT_TYPE
      - REQUEST_FORMAT_NOT_ACCEPTABLE
      - SERVER_INTERNAL_ERROR
      - SERVER_DATABASE_ERROR
      - SERVER_SEARCH_UNAVAILABLE
      - SERVER_TIMEOUT
      - SERVER_UNAVAILABLE
      - SERVER_IDEMPOTENCY_UNAVAILABLE
      - SERVER_UPSTREAM_UNAVAILABLE
      - COMMERCIAL_SURFACE_UNAVAILABLE
      description: Machine-readable error code
    GateDenialResponse:
      type: object
      properties:
        success:
          type: boolean
          const: false
        error:
          type: object
          properties:
            code:
              type: string
              enum:
              - INVALID_API_KEY
              - SUBSCRIPTION_INACTIVE
              - FEATURE_NOT_AVAILABLE
              - USAGE_LIMIT_EXCEEDED
              - DAILY_LIMIT_EXCEEDED
            message:
              type: string
              description: Which limit or feature check failed, when it resets, and who can manage the plan
          required:
          - code
          - message
        meta:
          $ref: '#/components/schemas/ResponseMeta'
      required:
      - success
      - error
      - meta
      description: The plan does not include this feature or its usage is exhausted.
    JsonObject:
      type: object
      propertyNames:
        type: string
      additionalProperties:
        $ref: '#/components/schemas/JsonValue'
    JsonValue:
      anyOf:
      - type: string
      - type: number
      - type: boolean
      - type: 'null'
      - $ref: '#/components/schemas/JsonArray'
      - $ref: '#/components/schemas/JsonObject'
      description: Any JSON value.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: 'API key in format: bwk_live_xxxxx. Keys issued before the rename (vrt_live_) remain valid. bwk_test_ keys work only on the sandbox.'
x-refined-from:
- backworkhealth-com-openapi.json
- backworkhealth-com-v1-openapi.json