Opkit Patients API
Create, retrieve, update, and list patient records used as the subject of eligibility inquiries, including demographics and member identifiers needed for verification.
Create, retrieve, update, and list patient records used as the subject of eligibility inquiries, including demographics and member identifiers needed for verification.
openapi: 3.0.1
info:
title: Opkit API
description: >-
REST API for Opkit, an automated health insurance verification platform for
telehealth companies and virtual medical practices. The API exposes
eligibility inquiries, benefits, payers, patients, and webhooks. Requests
are authenticated with a Bearer API key and all payloads are JSON over
HTTPS.
Provenance note: Opkit's platform appears to have been decommissioned after
the company was acqui-hired by 11x in late 2024, and the live documentation
at docs.opkit.co and the API host api.opkit.co are no longer reachable. This
specification is reconstructed from Opkit's publicly described resource model
(eligibility inquiries, benefits, payers, patients, webhooks; Bearer-key
auth; base URL https://api.opkit.co/v1). Endpoint paths and object fields
that could not be verified against live documentation are modeled
conservatively along standard RESTful conventions and should be reconciled
against authoritative Opkit documentation if it becomes available. No values
are presented as guaranteed-accurate beyond the verified auth scheme and
base URL.
contact:
name: Opkit
url: https://www.opkit.co
version: '1.0'
servers:
- url: https://api.opkit.co/v1
description: Opkit API v1 production base URL (host no longer resolving as of catalog date).
security:
- bearerAuth: []
tags:
- name: Eligibility Inquiries
description: Create and retrieve real-time insurance eligibility inquiries.
- name: Benefits
description: Read structured benefit details from completed eligibility inquiries.
- name: Payers
description: Look up insurance carriers (payers) Opkit connects to.
- name: Patients
description: Manage patient records that are the subject of eligibility inquiries.
- name: Webhooks
description: Register and manage webhook endpoints for event notifications.
paths:
/eligibility-inquiries:
get:
operationId: listEligibilityInquiries
tags:
- Eligibility Inquiries
summary: List eligibility inquiries
description: Returns a paginated list of eligibility inquiries on the account.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/StartingAfter'
responses:
'200':
description: A list of eligibility inquiries.
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityInquiryList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createEligibilityInquiry
tags:
- Eligibility Inquiries
summary: Create an eligibility inquiry
description: >-
Submits a real-time insurance eligibility inquiry for a patient against a
payer. Inquiries are resolved asynchronously; poll the inquiry or
subscribe to a webhook to receive the completed result and benefits.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityInquiryCreateRequest'
responses:
'201':
description: The created eligibility inquiry.
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityInquiry'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/eligibility-inquiries/{id}:
get:
operationId: getEligibilityInquiry
tags:
- Eligibility Inquiries
summary: Retrieve an eligibility inquiry
description: Retrieves a single eligibility inquiry, including its status and benefits when complete.
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: The requested eligibility inquiry.
content:
application/json:
schema:
$ref: '#/components/schemas/EligibilityInquiry'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/benefits:
get:
operationId: listBenefits
tags:
- Benefits
summary: List benefits
description: >-
Returns benefit records derived from completed eligibility inquiries,
optionally filtered by eligibility inquiry.
parameters:
- name: eligibility_inquiry_id
in: query
description: Filter benefits to a specific eligibility inquiry.
required: false
schema:
type: string
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/StartingAfter'
responses:
'200':
description: A list of benefit records.
content:
application/json:
schema:
$ref: '#/components/schemas/BenefitList'
'401':
$ref: '#/components/responses/Unauthorized'
/benefits/{id}:
get:
operationId: getBenefit
tags:
- Benefits
summary: Retrieve a benefit
description: Retrieves a single structured benefit record.
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: The requested benefit record.
content:
application/json:
schema:
$ref: '#/components/schemas/Benefit'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/payers:
get:
operationId: listPayers
tags:
- Payers
summary: List payers
description: Returns the list of insurance carriers (payers) Opkit connects to, with optional search.
parameters:
- name: query
in: query
description: Free-text search to match payers by name.
required: false
schema:
type: string
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/StartingAfter'
responses:
'200':
description: A list of payers.
content:
application/json:
schema:
$ref: '#/components/schemas/PayerList'
'401':
$ref: '#/components/responses/Unauthorized'
/payers/{id}:
get:
operationId: getPayer
tags:
- Payers
summary: Retrieve a payer
description: Retrieves a single payer by its identifier.
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: The requested payer.
content:
application/json:
schema:
$ref: '#/components/schemas/Payer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/patients:
get:
operationId: listPatients
tags:
- Patients
summary: List patients
description: Returns a paginated list of patient records on the account.
parameters:
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/StartingAfter'
responses:
'200':
description: A list of patients.
content:
application/json:
schema:
$ref: '#/components/schemas/PatientList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createPatient
tags:
- Patients
summary: Create a patient
description: Creates a patient record to use as the subject of eligibility inquiries.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatientCreateRequest'
responses:
'201':
description: The created patient.
content:
application/json:
schema:
$ref: '#/components/schemas/Patient'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/patients/{id}:
get:
operationId: getPatient
tags:
- Patients
summary: Retrieve a patient
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: The requested patient.
content:
application/json:
schema:
$ref: '#/components/schemas/Patient'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updatePatient
tags:
- Patients
summary: Update a patient
parameters:
- $ref: '#/components/parameters/PathId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatientUpdateRequest'
responses:
'200':
description: The updated patient.
content:
application/json:
schema:
$ref: '#/components/schemas/Patient'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/webhooks:
get:
operationId: listWebhooks
tags:
- Webhooks
summary: List webhook endpoints
description: Returns the webhook endpoints registered on the account.
responses:
'200':
description: A list of webhook endpoints.
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createWebhook
tags:
- Webhooks
summary: Create a webhook endpoint
description: Registers a URL to receive event notifications such as eligibility inquiry completion.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookCreateRequest'
responses:
'201':
description: The created webhook endpoint.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/webhooks/{id}:
get:
operationId: getWebhook
tags:
- Webhooks
summary: Retrieve a webhook endpoint
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'200':
description: The requested webhook endpoint.
content:
application/json:
schema:
$ref: '#/components/schemas/Webhook'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteWebhook
tags:
- Webhooks
summary: Delete a webhook endpoint
parameters:
- $ref: '#/components/parameters/PathId'
responses:
'204':
description: The webhook endpoint was deleted.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: >-
Provide your Opkit API key as a Bearer token in the Authorization
header: `Authorization: Bearer YOUR_API_KEY`.
parameters:
PathId:
name: id
in: path
required: true
description: The unique identifier of the resource.
schema:
type: string
Limit:
name: limit
in: query
required: false
description: Maximum number of records to return per page.
schema:
type: integer
minimum: 1
maximum: 100
default: 20
StartingAfter:
name: starting_after
in: query
required: false
description: Cursor for pagination; the id of the last object on the previous page.
schema:
type: string
responses:
BadRequest:
description: The request was malformed or failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Authentication failed or the API key is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Error:
type: object
properties:
error:
type: object
properties:
type:
type: string
description: A machine-readable error type.
message:
type: string
description: A human-readable description of the error.
EligibilityInquiryCreateRequest:
type: object
required:
- patient_id
- payer_id
properties:
patient_id:
type: string
description: The id of the patient to verify.
payer_id:
type: string
description: The id of the payer to verify coverage against.
member_id:
type: string
description: The patient's member or subscriber identifier on the payer.
service_type:
type: string
description: The benefit/service type to check (e.g. health benefit plan coverage).
metadata:
type: object
additionalProperties: true
description: Arbitrary key/value metadata to associate with the inquiry.
EligibilityInquiry:
type: object
properties:
id:
type: string
object:
type: string
example: eligibility_inquiry
status:
type: string
description: Lifecycle status of the inquiry.
enum:
- pending
- processing
- completed
- error
patient_id:
type: string
payer_id:
type: string
member_id:
type: string
benefits:
type: array
description: Structured benefits, populated once the inquiry completes.
items:
$ref: '#/components/schemas/Benefit'
created_at:
type: string
format: date-time
completed_at:
type: string
format: date-time
nullable: true
metadata:
type: object
additionalProperties: true
EligibilityInquiryList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/EligibilityInquiry'
has_more:
type: boolean
Benefit:
type: object
properties:
id:
type: string
object:
type: string
example: benefit
eligibility_inquiry_id:
type: string
coverage_status:
type: string
description: Whether the plan is active.
enum:
- active
- inactive
- unknown
network_status:
type: string
description: Whether the patient is in- or out-of-network.
enum:
- in_network
- out_of_network
- unknown
plan_name:
type: string
copay:
type: number
nullable: true
coinsurance:
type: number
nullable: true
deductible:
type: number
nullable: true
deductible_remaining:
type: number
nullable: true
out_of_pocket_max:
type: number
nullable: true
BenefitList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/Benefit'
has_more:
type: boolean
Payer:
type: object
properties:
id:
type: string
object:
type: string
example: payer
name:
type: string
description: The display name of the insurance carrier.
PayerList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/Payer'
has_more:
type: boolean
PatientCreateRequest:
type: object
required:
- first_name
- last_name
- date_of_birth
properties:
first_name:
type: string
last_name:
type: string
date_of_birth:
type: string
format: date
metadata:
type: object
additionalProperties: true
PatientUpdateRequest:
type: object
properties:
first_name:
type: string
last_name:
type: string
date_of_birth:
type: string
format: date
metadata:
type: object
additionalProperties: true
Patient:
type: object
properties:
id:
type: string
object:
type: string
example: patient
first_name:
type: string
last_name:
type: string
date_of_birth:
type: string
format: date
created_at:
type: string
format: date-time
metadata:
type: object
additionalProperties: true
PatientList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/Patient'
has_more:
type: boolean
WebhookCreateRequest:
type: object
required:
- url
properties:
url:
type: string
format: uri
description: The HTTPS endpoint that will receive event notifications.
events:
type: array
description: Event types to subscribe to (e.g. eligibility inquiry completion).
items:
type: string
Webhook:
type: object
properties:
id:
type: string
object:
type: string
example: webhook
url:
type: string
format: uri
events:
type: array
items:
type: string
created_at:
type: string
format: date-time
WebhookList:
type: object
properties:
object:
type: string
example: list
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
has_more:
type: boolean