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.
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.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/verifiable-dea-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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