CMS-0057 mandates FHIR APIs by Jan 2027

Prior auth testing
without the headache.

One API key. Simulate prior auth against UHC, Aetna, Cigna, Anthem, and Humana. Validate FHIR resources, run reproducible workflows, and test every denial and appeal scenario — without touching a real payer.

TypeScript — quickstart.ts
import { createClient } from '@pe/sdk';

const pe = createClient({ apiKey: 'pe_live_...' });

// Submit a PA request against a realistic payer model
const run = await pe.pa.submit({
  payerProfile: 'aetna-commercial',
  icd10: 'C34.10',
  scenario: 'auto-approve'
});

// Poll until APPROVED / DENIED / APPEAL_APPROVED
const result = await pe.pa.waitForTerminal(run.id);
// → { status: "APPROVED", timeline: [...] }
Da Vinci CRD / DTR / PAS
US Core 6.1.0
SMART on FHIR 2.0
CMS-0057 Ready
HL7 FHIR R4
5
Payer profiles — UHC, Aetna, Cigna, Anthem, Humana
302+
Tests passing across API, SDK, and simulator
6
PA scenarios — approve, deny, pend, appeal, peer review
40M
PA requests per year going digital by 2027
Platform

Everything you need
to ship healthcare apps.

Stop reading 400-page HL7 implementation guides. Pe handles the hard parts so you can focus on your product.

PA Simulator
Simulate end-to-end prior auth against Aetna, UHC, Cigna, Anthem, and Humana. Choose auto-approve, auto-deny, pend-for-info, peer-to-peer, or appeal scenarios.
FHIR Validator
Validate any FHIR resource against US Core and Da Vinci PAS profiles. AI-powered error explanations and one-click auto-fix via Claude.
Workflow Runner
Define PA test scenarios in YAML and run them reproducibly in CI/CD. 3 built-in templates — happy path, denial + appeal, and bundle validation.
Replay & Appeals
Clone any terminal simulation with a new scenario. File appeals on denied PAs and test the full denial → appeal → approval pipeline.
AI Auto-Fix
Submit a malformed FHIR resource and get a corrected version back, with a plain-English explanation of every change. Powered by Claude.
Developer Dashboard
Real-time request logs, usage charts, error rate tracking, key rotation, and Stripe billing — all in one place.
PA Simulator

Realistic payer
behavior. No payer.

Every simulation runs a pre-computed timeline against a real payer profile. Status advances asynchronously — poll or use waitForTerminal() to block until APPROVED, DENIED, or APPEAL_APPROVED.

01
Auto-approve
PA submitted → APPROVED within configured delay
02
Auto-deny
PA submitted → IN_REVIEW → DENIED
03
Pend for info
PA pended → submit additional info → APPROVED
04
Appeal approve
DENIED → file appeal → APPEAL_APPROVED
05
Peer-to-peer
Escalates to peer-to-peer review before decision
06
Replay
Clone any terminal simulation with a different scenario
denial-appeal.ts
// Deny → appeal → approved
const sim = await pe.pa.submit({
  payerProfile: 'aetna-commercial',
  scenario: 'appeal-approve'
});

// Wait for DENIED
const denied = await pe.pa.waitForTerminal(sim.id);

// File appeal
const appeal = await pe.pa.appeal(denied.id);
// → { status: "APPEAL_APPROVED" }
Pricing

Simple, usage-based.

Start free. Scale as you grow. No contracts, no minimums.

Free
$0/mo
1,000 calls/day
  • PA Simulator (5 payers)
  • FHIR Validator
  • Workflow Runner
  • Request logs
  • AI auto-fix
Get started
POPULAR
Starter
$29/mo
50,000 calls/day
  • PA Simulator (5 payers)
  • FHIR Validator
  • Workflow Runner
  • Request logs
  • AI auto-fix
Start building
Growth
$99/mo
500,000 calls/day
  • Everything in Starter
  • Priority support
  • Custom payer profiles
  • SLA guarantee
  • Team seats
Scale up
Enterprise
Custom
Unlimited · Custom SLA
  • Everything in Growth
  • On-prem deployment
  • HIPAA BAA
  • Dedicated support
  • White-labeling
Contact us