Verifiable DEA API

These endpoints allow you to add DEA registration numbers to a provider and perform DEA registration lookups. Unlike license verifications a DEA registration lookup is done immediately.

Business capability
Practitioner Credentialing BC-2890.10

Operations 8

POST /providers/{providerId}/dea/{registrationNumber} Attach a DEA registration number to a provider #
GET /providers/{providerId}/dea/{registrationNumber} Get a specific DEA registration from a provider #
DELETE /providers/{providerId}/dea/{registrationNumber} Detach a DEA registration number from a provider #
GET /providers/{providerId}/dea/{registrationNumber}/verifications/{verificationId} Get a specific DEA registration verification #
PATCH /providers/{providerId}/dea/{registrationNumber}/verifications/{verificationId} Resolve problems with a DEA registration verification #
GET /providers/{providerId}/dea/{registrationNumber}/verifications/{verificationId}/diff Diff two DEA registration verifications #
GET /providers/{providerId}/dea List all DEA registrations from a provider #
GET /providers/{providerId}/dea/{registrationNumber}/verifications List all verifications for a DEA registration #

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/verifiable-dea-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

verifiable-dea-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Verifiable API Documentation DEA API
  description: '# Introduction


    This document contains the official documentation for the latest version of the Verifiable API.'
  version: 26.12.1.962
servers:
- url: https://discovery.verifiable.com/api
  description: Production
- url: https://discovery-staging.verifiable.com/api
  description: Staging
tags:
- name: DEA
  description: These endpoints allow you to add DEA registration numbers to a provider and perform DEA registration lookups. Unlike license verifications a DEA registration lookup is done immediately.
paths:
  /providers/{providerId}/dea/{registrationNumber}:
    post:
      tags:
      - DEA
      summary: Attach a DEA registration number to a provider
      description: To perform a DEA registration lookup you must first attach a DEA registration number to a provider. Everytime you call this endpoint a new verification will be made.
      operationId: AttachDeaRegistration
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider to attach the DEA registration number to.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The DEA registration number to attach to the provider.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeaRegistrationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
    get:
      tags:
      - DEA
      summary: Get a specific DEA registration from a provider
      description: Returns the data and latest verification for a specific DEA registration attached to a specific provider.
      operationId: GetDeaRegistration
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider that holds the DEA registration.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The DEA registration number to get the data for.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeaRegistrationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
    delete:
      tags:
      - DEA
      summary: Detach a DEA registration number from a provider
      description: This will delete the DEA registration lookup record for the specified provider.
      operationId: DetachDeaRegistration
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider to detach the DEA registration number from.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The DEA registration number to detach from the provider.
        required: true
        schema:
          type: string
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
  /providers/{providerId}/dea/{registrationNumber}/verifications/{verificationId}:
    get:
      tags:
      - DEA
      summary: Get a specific DEA registration verification
      description: Returns the data for a specific previously executed DEA registration verification. This endpoint can be used to retrieve historical results on older verifications.
      operationId: GetDeaVerification
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider that holds the DEA registration.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The registration number that was previously verified.
        required: true
        schema:
          type: string
      - name: verificationId
        in: path
        description: The identifier describing the verification that you want to retrieve.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeaVerificationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
    patch:
      tags:
      - DEA
      summary: Resolve problems with a DEA registration verification
      description: After a verification is executed we sometimes are uncertain about the results we get from the source. For example when the name of the DEA registration does not match the name that was used for the provider. In such cases we mark the verification `status` as `NeedsReview`. It is expected that this status is resolved by the end user. The resolution can be patched by using this endpoint.
      operationId: ResolveDeaVerificationProblems
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider that holds the DEA registration.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The DEA registration number that has a verification problem.
        required: true
        schema:
          type: string
      - name: verificationId
        in: path
        description: The identifier describing the verification that needs to be patched.
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeaVerificationResolutionModel'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeaVerificationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: Conflict
        '500':
          description: Server Error
      security:
      - Bearer: []
  /providers/{providerId}/dea/{registrationNumber}/verifications/{verificationId}/diff:
    get:
      tags:
      - DEA
      summary: Diff two DEA registration verifications
      description: Returns the diff according to jsondiffpatch format between the specified verification and the previous successful verification.
      operationId: GetDeaVerificationDiff
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider that holds the DEA registration.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The registration number that was previously verified.
        required: true
        schema:
          type: string
      - name: verificationId
        in: path
        description: The identifier describing the verification that you want to diff with the previous one.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeaVerificationDiffModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '409':
          description: Conflict
        '500':
          description: Server Error
      security:
      - Bearer: []
  /providers/{providerId}/dea:
    get:
      tags:
      - DEA
      summary: List all DEA registrations from a provider
      description: Returns a list of all DEA registrations previously attached to the specified provider.
      operationId: ListDeaRegistrations
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider to list all DEA registrations for.
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeaRegistrationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '404':
          description: Not Found
        '500':
          description: Server Error
      security:
      - Bearer: []
  /providers/{providerId}/dea/{registrationNumber}/verifications:
    get:
      tags:
      - DEA
      summary: List all verifications for a DEA registration
      description: It is possible to perform more than one verification for any given DEA registration. In order to go back in history you can use this endpoint to get a list of all verifications for the specified DEA registration.
      operationId: ListDeaVerifications
      parameters:
      - name: providerId
        in: path
        description: The identifier describing the provider that holds the DEA registration.
        required: true
        schema:
          type: string
          format: uuid
      - name: registrationNumber
        in: path
        description: The DEA registration number to get the verifications from.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DeaVerificationModel'
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
        '402':
          description: Client Error
        '403':
          description: Forbidden
        '500':
          description: Server Error
      security:
      - Bearer: []
components:
  schemas:
    DeaxVerificationResult:
      type: object
      properties:
        number:
          type: string
          description: DEA-X number.
        certifiedPatientLimit:
          type: integer
          description: Certified Patient Limit.
          format: int32
      additionalProperties: false
    DeaVerificationResult:
      type: object
      properties:
        businessActivityCode:
          type: string
          description: The business activity code from the DEA registration.
        drugSchedules:
          type: array
          items:
            type: string
          description: The drug schedules from the DEA registration.
        expirationDate:
          type: string
          description: The date at which this DEA registration expires.
          format: date-time
        name:
          type: string
          description: The name of the DEA registration holder.
        additionalCompanyInfo:
          type: string
          description: Additional information about the DEA registration holder.
        address1:
          type: string
          description: The address of the DEA registration holder.
        address2:
          type: string
          description: If applicable, an extra address line of the DEA registration holder.
        city:
          type: string
          description: The city of the DEA registration holder.
        state:
          type: string
          description: The state of the DEA registration holder.
        zipCode:
          type: string
          description: The zip code of the DEA registration holder
        businessActivitySubCode:
          type: string
          description: The business activity sub-code from the DEA registration.
        paymentIndicator:
          enum:
          - Paid
          - Exempt
          type: string
          description: The payment indicator from the DEA registration.
        active:
          type: boolean
          description: Set to true if this DEA registration is active.
        problems:
          type: array
          items:
            enum:
            - NameMismatch
            type: string
          description: Array of problems that resulted in a `NeedsReview` status for the verification.
        businessActivity:
          type: string
          description: Textual description of the bussiness code and sub-code.
          readOnly: true
      additionalProperties: false
    DeaVerificationModel:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for this verification.
          format: uuid
        timestamp:
          type: string
          description: Timestamp of when the verification took place.
          format: date-time
        lastUpdated:
          type: string
          description: Timestamp of the last update for DEA records.
          format: date-time
        lastSync:
          type: string
          description: Timestamp of the last DEA data sync.
          format: date-time
        status:
          enum:
          - Found
          - Failed
          - NeedsReview
          - NotFound
          - Pending
          - Working
          type: string
          description: The current status for this verification. If you patch the verification status (in case the status is `NeedsReview`) this property will be updated, but `originalStatus` will remain the same.
        originalStatus:
          enum:
          - Found
          - Failed
          - NeedsReview
          - NotFound
          - Pending
          - Working
          type: string
          description: The original status as our verification process determined. Unlike `status` the `originalStatus` can never change.
        results:
          $ref: '#/components/schemas/DeaVerificationResult'
        deaxResults:
          $ref: '#/components/schemas/DeaxVerificationResult'
      additionalProperties: false
    DeaVerificationResolutionModel:
      type: object
      properties:
        status:
          enum:
          - Found
          - Failed
          - NeedsReview
          - NotFound
          - Pending
          - Working
          type: string
          description: The correct status for this verification.
      additionalProperties: false
    DeaVerificationDiffModel:
      type: object
      properties:
        old:
          $ref: '#/components/schemas/DeaVerificationModel'
        new:
          $ref: '#/components/schemas/DeaVerificationModel'
        diff:
          description: Diff in [jsondiffpatch](https://github.com/benjamine/jsondiffpatch) format.
      additionalProperties: false
    DeaRegistrationModel:
      type: object
      properties:
        id:
          type: string
          format: uuid
        providerId:
          type: string
          description: Identifier of the provider associated with this DEA registration.
          format: uuid
        registrationNumber:
          type: string
          description: The DEA registration number.
        currentVerification:
          $ref: '#/components/schemas/DeaVerificationModel'
      additionalProperties: false
  securitySchemes:
    Bearer:
      type: http
      description: 'Enter your bearer token in the format: Bearer {your token}'
      scheme: bearer
      bearerFormat: custom
x-tagGroups:
- name: Authentication
  tags:
  - Authentication
- name: Definitions
  tags:
  - Definitions
- name: Providers
  tags:
  - Providers
  - ProvidersInfo
  - ProviderProfiles
  - Notes
  - Files
- name: Facilities
  tags:
  - Facilities
  - FacilitiesInfo
  - FacilitiesSpecialties
- name: Verifications
  tags:
  - Licenses
  - Datasets
  - DEA
  - BoardCertifications
- name: Monitoring
  tags:
  - Monitoring
  - Alerts
- name: Credentialing
  tags:
  - CredentialingRequests
- name: Integrations
  tags:
  - Integrations
  - Webhooks
- name: Audits
  tags:
  - Audit
- name: Account
  tags:
  - Users
- name: Organizations
  tags:
  - Reports
- name: Models
  tags:
  - Dataset Records
  - Webhook Callbacks