Concepts

Statuses

The lifecycle of a session and of the checks inside it.

View as Markdown

Session

created ─(link opened)─▶ started ─▶ in_progress ─(all steps submitted)─▶ processing
                                                                          │ rules
                                         ┌────────────────────────────────┼─────────────────┐
                                         ▼                                ▼                 ▼
                                     approved                         declined            review
                                                                                            │ reviewer
                                                               approved · declined · resubmission_requested
                                                                                            │
                                                                     back to in_progress ◀──┘
created | started | in_progress ─(expires_at)─▶ expired        any active status ─(cancel)─▶ cancelled
StatusMeaningWebhook
createdSession created; the link hasn't been opened.session.created
startedThe applicant opened the flow.session.started
in_progressThe applicant is completing steps.—
processingEverything is submitted; checks and rules are running.session.processing
approvedFinal: approved by rules or a reviewer.session.approved
declinedFinal: declined by rules or a reviewer.session.declined
reviewWaiting for a reviewer.session.review
resubmission_requestedA reviewer asked the applicant to redo some steps.session.resubmission_requested
expiredFinal: not finished before expires_at (default 7 days).session.expired
cancelledFinal: cancelled via the API or dashboard.session.cancelled

Admins can override a final decision (audited) with POST /v1/sessions/:id/decision.

Check

pending → running → passed | failed | inconclusive | error

error is retried (up to 3 times with backoff), then the session goes to review. inconclusive means the check couldn't decide (for example an unreadable document), or — with provider: "manual" — that it is waiting for a reviewer (manual verification).

verified_by says who decided a passed / failed check: source (the registry or a cryptographic check) or reviewer (manual verification).

In the SDKs

The mobile and web SDKs report complete with a status hint (often processing, since checks run after submission). Always read the final status from the webhook or the API.

On this page