vID

The whole screening stack, behind one API.

Invites, reminders, order details, webhooks, monitoring, and disputes — every step of an identity-verified background check, programmable end to end.

20document & biometric checks on every verification
30s–2mtypical verification turnaround, invite to order
8×webhook delivery attempts before an event is dropped
2–3mfor an applicant to complete the entire flow

From invite to insight, in two API calls.

POST an invite, then GET the order when the webhook lands. The applicant and the engine do everything in between.

  1. 01

    Create the invite

    One POST sends a branded vID invite by email — or returns a link, QR code, and 6-character manual-entry code you can hand over in person. Bulk and quick-invite variants cover batch uploads and instant redirects, and re-inviting someone with a pending invite simply returns the existing one, so duplicates are impossible.

    • Email delivery, shareable link, QR code, or short code
    • Bulk creation and instant quick-invite endpoints
    • Built-in dedupe — a pending invite is returned, never duplicated
    Create a vID invite
    curl -X POST https://api.cerebrum.com/v1/vid/invites \
      -H "apikey: $CEREBRUM_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "packageId": "pkg_background_plus_id",
        "deliveryMethod": "EMAIL",
        "contactInformation": {
          "email": "jane.doe@example.com",
          "phoneNumber": "+15551234567",
          "firstName": "Jane",
          "lastName": "Doe"
        },
        "postbackWebhookUrl": "https://yourapp.com/webhooks/cerebrum",
        "metadata": { "internalCandidateId": "cand_88412" }
      }'
  2. 02

    The applicant verifies — in 2–3 minutes

    The applicant opens the invite in the vID app or right in their browser, takes a liveness-checked selfie, scans the front and back of their government ID, and signs disclosures. No typing, no forms, no data entry errors flowing into your screening.

    • Works on any phone or any modern browser
    • Liveness selfie matched against the ID portrait
    • Disclosures and SSN capture built into the flow
    Applicant

    // no request

    Selfie, ID scan, disclosures — on any device, in about the time it takes to make coffee.

  3. 03

    Twenty checks run in under two minutes

    Document authentication, biometric match, MRZ and barcode analysis against AAMVA standards, screen-capture and photocopy detection, tamper and date logic — twenty independent checks per document. Typical turnaround is 30 seconds to 2 minutes, and an order is created automatically the moment verification completes.

    • 20 layered document and biometric checks per order
    • Typical processing: 30 seconds to 2 minutes
    • IP-address risk flagging routes edge cases to human review
    Verification engine

    // no request

    Twenty checks fire automatically. The order appears in your account when they finish.

  4. 04

    Your webhook fires — signed, retried, testable

    Every meaningful change — status, score, dispute resolution, voucher redemption, monitoring reports — posts to your endpoint as a signed Svix webhook. Deliveries retry eight times over more than a day, signatures verify with standard HMAC-SHA256, and a simulate endpoint lets you rehearse every event type before you go live.

    • HMAC-SHA256 signed payloads via Svix
    • 8 delivery attempts across 27+ hours before drop
    • Simulated webhooks for end-to-end testing on demand
    Webhook payload
    {
      "id": "ord_01J8ZK4M3N",
      "idType": "order",
      "event": "ORDER_STATUS_CHANGE",
      "eventDate": "2026-02-09T15:11:49Z",
      "additionalMetadata": { "internalCandidateId": "cand_88412" }
    }
  5. 05

    Fetch the order, expand what you need

    Pull the full order — applicant data, verification results, reportable results, signed disclosures, the vID report PDF, even the selfie — with a single expanded GET. Need more later? Attach county, national criminal, SSN, or AAMVA searches to the same order and track each one to completion.

    • Expandable resources keep responses lean by default
    • Add searches to existing orders at any time
    • List and filter orders across every org you can access
    Get order details
    curl "https://api.cerebrum.com/v1/orders/ord_01J8ZK4M3N?expand=id_verification_data,reportable_results,vid_report" \
      -H "apikey: $CEREBRUM_API_KEY"
  6. 06

    Keep watching with continuous monitoring

    Enrollment is one idempotent call per order. From then on, every reportable delta generates a monitoring report — delivered by webhook with a signed PDF URL. Clean cycles stay silent, and disenrollment is a single request when the relationship ends.

    • Idempotent enroll / disenroll by order ID
    • MONITORING_REPORT_GENERATED webhook on every delta
    • Signed-URL PDFs for every report with findings
    Monitoring

    // no request

    Enroll once. After that the only thing you'll hear back is a signed report when something actually changes.

Everything in the dashboard, scriptable.

If a coordinator can click it, your integration can call it. The API covers the full operating surface of the platform.

Invites, reminders & reorders

Automatic package-level reminders nudge applicants for you. Resend an invite and its expiration resets, cancel it outright, or reorder with a fresh voucher — all without leaving your system.

Order details & rich expansions

Statuses, scores, reportable results, disclosures, files, and the full audit trail — everything the dashboard shows is available over the wire, org-scoped and filterable.

Continuous monitoring

Enroll any completed order in ongoing monitoring and get notified only when something changes — delta reports with signed PDFs, never noise from clean cycles.

Disputes & adverse action

Consumers can dispute straight from their results; you track every dispute from OPEN to RESOLVED by API and send adverse action notices with a single call.

Custom data that round-trips

Attach arbitrary JSON metadata to any invite. It's copied to the order automatically and echoed in every webhook payload, so reconciliation with your internal IDs is free.

Webhooks you can bet the build on.

Seven event types cover the entire order lifecycle. Every payload is HMAC-SHA256 signed with a per-endpoint secret, and deliveries retry on a backoff schedule — immediately, then 5 seconds, 5 minutes, 30 minutes, 2, 5, 10, and 10 hours — before an event is ever dropped.

  • Svix-signed: verify with the svix-id, svix-signature, and svix-timestamp headers
  • Just return any 2xx within 30 seconds — the body is ignored
  • Fire simulated events at your URL any time to rehearse the full flow
ORDER_STATUS_CHANGELifecycle moved — pending to complete
ORDER_SCORE_CHANGEDisposition set or updated
ORDER_CUSTOM_SCORE_CHANGEYour custom score changed
ORDER_DISPUTE_RESOLVEDA dispute reached resolution
VOUCHER_REDEEMEDApplicant accepted the invite
VOUCHER_EXPIREDInvite lapsed unclaimed
MONITORING_REPORT_GENERATEDNew monitoring delta found

Three fields, zero ambiguity.

Every order carries status, score, and alert as independent fields — so your integration never has to guess what “complete” means.

Status — where the order is

PENDING, IN_PROGRESS, IN_DISPUTE, INCOMPLETE, or COMPLETE. It's the lifecycle, nothing more — COMPLETE means reviewed, not passed.

Score — what you decided

The disposition: ID_VERIFIED, NO_ALERTS, REVIEW_REQUIRED, PRE_ADVERSE, ADVERSE_ACTION, and more — plus custom scores you define yourself.

Alert — what was found

A simple binary: NO_ALERTS_FOUND or ALERTS_FOUND. It's a finding, not a verdict — your team keeps the decision.

Score, Status and Alert

Frequently asked questions.

Build on verified identity.

Generate a key in Cognition, send your first invite, and watch a signed webhook land in your endpoint — all before lunch.