Create a verification session for identity bootstrapping. Paid tier required.
session_id — goes in the verification URL (user-facing)poll_secret — given to the agent for polling (never in URLs)| Header | Required | Description |
|---|---|---|
X-API-Key | Yes | Your API key (paid or enterprise tier) |
Content-Type | Yes | application/json |
| Field | Type | Required | Description |
|---|---|---|---|
context | string | No | Freeform context label (e.g., “wine_purchase”) |
product_name | string | No | Product name shown during verification (max 200 chars) |
GET /v1/sessions/:token. There is no browser redirect back to the merchant — this API does not accept return_url or any payment-method metadata.
| Status | Meaning |
|---|---|
pending | User hasn’t completed verification yet |
verified | User verified — operator_token included in response |
consumed | Token already issued to a previous poll |
expired | Session expired (1 hour TTL) |
failed | Stripe Identity verification did not succeed (unreadable ID, selfie mismatch, etc.) |
flagged | Identity verified but sanctions screening flagged a potential match — credential issuance is blocked pending manual review |
operator_token included:
consumed without the token.
Consumed — token already issued to a previous poll:
| Field | Type | When present | Description |
|---|---|---|---|
next_steps | object | Always | Action guidance that varies by status |
retry_after_seconds | number | pending | Recommended poll interval in seconds |
token_ttl_seconds | number | verified | TTL of the issued operator token in seconds |
X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.