Skip to content
Current wedge API

Build against the VitalCV launch wedge.

This page intentionally stays narrow. It documents the current integration truth: source-backed identity ingest, passport retrieval, employer review actions, workspace context, pilot reporting, and wallet sync.

API host

delightful-essence-production.up.railway.app

https://delightful-essence-production.up.railway.app

Planned migration to api.vitalcv.com

Audit rule

Mutations are auditable

Review actions must persist an audit event before returning success.

Mode

Wedge-first

Older platform and intelligence surfaces are not part of the public integration contract.

Authentication

Public endpoints

Identity ingest and passport retrieval endpoints are currently open for public use during the launch period. No API key required.

Authenticated endpoints

Employer review, workspace, and pilot endpoints require a Clerk session token passed via the Authorization: Bearer <token> header. Workspace context determines org-scoped permissions.

Rate limiting: 60 requests/minute for unauthenticated, 300/minute for authenticated sessions.

Identity ingest

Start the wedge by ingesting an NPI into the current source-backed pipeline.

POST /api/identity/:npi/ingest

Response

{ "runId": "run_abc123", "npi": "1003000126", "status": "started" }

Passport retrieval

Fetch the same passport truth used by clinician and employer surfaces.

GET /api/passport/npi/:npi
GET /api/passport/entity/:id

Response

{ "entity": { "npi": "1003000126", "name": "...", "readiness": { "score": 82, "level": "L2" } }, "sources": [...] }

Employer review

Inspect packets and persist employer actions with audit confirmation.

GET /api/employer-review/:entityId/packet
POST /api/employer-review/:entityId/accept
POST /api/employer-review/:entityId/request-refresh
POST /api/employer-review/:entityId/route-to-review

Response

{ "accepted": true, "auditEventId": "evt_xyz", "timestamp": "2026-04-09T..." }

Workspace context

Resolve persona and active organization context for employer and clinician flows.

GET /api/me/workspaces
POST /api/workspaces/switch

Pilot ops

Operator-only KPI exports and scoped start outcome capture for pilots.

GET /api/internal/pilot/kpis
GET /api/internal/pilot/kpis/export
POST /api/internal/pilot/start-outcome

Wallet sync

Current mobile wallet sync surface used by the Expo client.

GET /api/credentials/wallet
GET /api/credentials/wallet/:subject/summary

Try it

Fetch a passport for any NPI. Paste this command into your terminal.

curl -s 'https://delightful-essence-production.up.railway.app/api/passport/npi/1003000126' | python3 -m json.tool

Quick start

# 1. Ingest an NPI
curl -X POST 'https://delightful-essence-production.up.railway.app/api/identity/1003000126/ingest' \
  -H 'content-type: application/json'

# 2. Retrieve the passport
curl 'https://delightful-essence-production.up.railway.app/api/passport/npi/1003000126'

# 3. Accept as employer (authenticated)
curl -X POST 'https://delightful-essence-production.up.railway.app/api/employer-review/<entityId>/accept' \
  -H 'content-type: application/json' \
  -H 'Authorization: Bearer <clerk-session-token>' \
  -d '{"organizationContextId":"<orgId>","acceptanceReason":"head-start"}'
SDK packages
@vitalcv/wallet-sdkinternal
@vitalcv/verifier-sdkinternal
@vitalcv/issuer-sdkinternal

Integration boundaries

The public contract stays centered on NPI -> readiness -> passport -> review -> start outcome.
Employer actions must write an audit event before success is shown.
Unsupported sources must remain explicitly gated, unavailable, pending, or review-required.
Standards packages exist in the repo, but not every issuer/verifier flow is self-serve from this surface yet.