Quickstart
Get your first simulated eligibility result.
Send the patient, provider, service date, and scheduled treatment your system already knows. Verora returns a normalized benefit record plus appointment-level cost and coverage guidance.
What machine-to-machine means
Your server sends JSON directly to Verora and receives JSON back. No team member has to retype the case into a portal, and no patient-facing browser stores the integration secret. An MCP client can put a natural-language assistant on top of this same API; the API remains the single source of truth.
Step 1 — Exchange your client credential
Client credentials are environment-bound. The resulting access token is short-lived and used only by your server.
Step 2 — Send the scheduled appointment
Every verification requires an Idempotency-Key. Include one scheduled_treatment with a service date and one line per billable procedure. Fees are whole cents; omit a fee instead of guessing. Reusing the key for the same logical request safely returns the original job.
Step 3 — Read the normalized result
Use the verification ID from the accepted response. Store it alongside your own reference so operations can trace a single request without exposing raw payer responses.
What the partner gathers
- Treated patient: name and date of birth only.
- Coverage identity: exactly one primary coverage and, when present, one secondary. Each coverage carries payer ID or name, member ID, relationship to subscriber, and group number when available. For a non-self relationship, include the subscriber's first name, last name, and date of birth; Verora never assumes a missing relationship is self.
- Treating provider: the NPI that should be used for the eligibility check.
- Appointment facts: service date plus scheduled CDT codes, tooth number, and surfaces when relevant.
- Office fees: the submitted fee for each line so Verora can calculate dollars instead of only percentages.
- Missing facts: read
missing_informationanddata_requests, then let the partner's agent ask the office only for what would materially improve the answer.
The verification API does not write to the PMS. The partner gathers these facts from systems it is already authorized to access—such as its PMS integration, scheduling, or digital intake—and controls how the verification result is displayed. Separately licensed EOB posting requires a practice-approved, certified integration. Never include PMS credentials in API requests or agent prompts.
The value Verora adds
The result includes treatment_analysis for estimated insurance and patient dollars, assumptions, caveats, and exact missing inputs. It also includes filtered coverage_opportunities only when frequency is positively cleared. Unknown frequency is returned as a non-actionable data_requests item. The response does not expose Verora’s internal rules, traces, scores, raw payer payloads, or clinical decision logic.
When both primary and secondary plans independently verify, cob_estimate provides a labeled pre-service estimate or bounded range. It never claims to be an adjudicated patient balance, and an unknown coordination method remains an explicit pending fact.
Step 4 — Answer only the history Verora requests
If data_requests names procedure_history, retrieve only that CDT code's exact last completed date and count from a partner-authorized source. Submit it as an immutable revision. A zero count requires a null date. Do not send appointment notes or invent a frequency rule.
Step 5 — Retrieve the filtered Benefit Form
When capabilities reports benefit_form_artifacts: true, retrieve HTML by default or request PDF. The response headers bind the form to the exact result revision, result hash, and artifact hash. This is still a pre-service estimate—not a promise of payment.
Reference
Start with capability discovery and the verification lifecycle. Credentials select the environment; callers never put an environment selector in the request body. Revisions and feedback are optional Release 2 operations—check capabilities before using them.
POST /api/oauth/token— exchange one environment-bound client credential for a short-lived access token.GET /api/v1/capabilities— read the authenticated public feature and minimum-fact profile.POST /api/v1/verifications/validate— free pre-flight validation (no queue, no payer dial, no billable usage).POST /api/v1/verifications— queue one verification. Optionalforce_fresh: truealways dials the payer (still billable). Returns202 Acceptedand the verification ID.GET /api/v1/verifications/{verificationId}— retrieve status and result.from_cache/verified_atlabel freshness;verified_atis when the payer was contacted, not when the cache was served.GET /api/v1/payers?q=…— search payers; returnedidvalues are accepted ascoverages[].payer.id.GET /api/v1/developer/usage— partner usage/quota for this credential (unpriced accounts are labeled, never shown as $0).GET /api/v1/verifications/{verificationId}/benefit-form— retrieve feature-gated filtered HTML or canonical PDF bound to the immutable result.POST /api/v1/verifications/{verificationId}/revisions— create an immutable successor from corrected facts when enabled.POST /api/v1/verifications/{verificationId}/feedback— record append-only evidence using the returned result revision and hash when enabled.
Install the Verora agent plugin
One client supports Codex and Claude Code. Use Node.js 22 or newer, verify the checksum, and extract the plugin into a stable folder. The download contains no credentials or private Verora engines; your application license determines the available workflows.
Download plugin v0.2.0 · SHA-256 checksum
Set VERORA_API_BASE_URL to https://dev.veroraai.com without an API path. Inject your own VERORA_CLIENT_ID and VERORA_CLIENT_SECRET through the agent launcher's environment or your secret manager. Use a sandbox credential first. Keep credentials out of command arguments, repository files and agent conversations. Each credential selects its approved application environment.
Replace the absolute path with your extracted folder. Restart existing agent sessions after configuring their launch environment. Ask the agent to call whoami, inspect get_capabilities, and discover its licensed tools before testing. Confirm the intended account and sandbox environment before submitting the synthetic verification above. Sandbox calls omit practice workspace IDs.
Claim and received EOB workflows require separate permissions from your Verora operator. The extracted README includes the simulated verification-to-EOB pilot and receipt replay check. Live environments expose only your customer-approved practice workspaces. EOB automation defaults off; live posting additionally requires the practice's explicit policy and native certification. Preparing an EOB does not post a payment.
Sandbox scenarios
Set test.scenario only in sandbox. Scenarios are deterministic so your CI suite has stable expected outcomes.
verified— Eligible result. A successful simulated eligibility response.inactive— Ineligible result. A completed response with inactive coverage.incomplete— Unknown result. A normalized result that requires more data.manual_review— Unknown result. A fixture for your manual-review branch.payer_timeout— Retryable failure. A deterministic failed job to exercise safe retry handling.
Live testing is a controlled readiness gate
It performs real eligibility checks. It is deliberately not a switch on a sandbox request or a self-service signup funnel. Accounts are sales-assisted. Live / live_test access requires: an executed SBAA recorded by a Verora operator, per-application environment approval, an operator-provisioned developer workspace bound to a practice with NPI + tax ID, a matching provider NPI on each request, and commercial terms set by Verora (unpriced accounts do not invent a rate). test.scenario is rejected on live credentials with test_scenario_not_permitted — it is never silently ignored.
Errors & support
Keep the environment, verification ID, request ID, UTC timestamp, and error code. Do not send authorization headers or patient details to support.
| 400 | The request is invalid Check field names, dates, and the sandbox scenario. `test.scenario` on a live credential returns `test_scenario_not_permitted`. Never include patient details in a support ticket. |
| 401 | The access token is invalid or expired Exchange the server-held client credential for a fresh short-lived token. |
| 403 | The environment or workspace is not authorized Confirm the application approval, selected workspace, and provider NPI for the intended environment. |
| 409 | The idempotency key conflicts Reuse a key only for the same logical verification. Generate a new key for a new request. |
| 429 | The request rate is limited Wait for the Retry-After value, then retry the same logical request safely. |
| 503 | The request could not be completed Retry with the same Idempotency-Key and retain the request ID for support. Capacity/retry exhaustion surfaces as a failed job with a labeled error code, not a fake success. |
About webhooks. Poll the verification URL as the source of truth. When GET /api/v1/capabilities reports signed_webhooks: true, feature-gated REST endpoint registration and replay are available for at-least-once notifications. Keep signing secrets in a server-side secret manager; polling remains canonical.