API Integration Guide
API Integration Guide
The Partner API enables you to integrate account verification into your application. Users verify their accounts through an iframe-based browser session, and you receive cryptographically attested proof of data authenticity.
Authentication
All Partner API endpoints require authentication via your API key:
x-api-key: your_api_key_hereAlternatively, you can use the Authorization header:
Authorization: Bearer your_api_key_hereAll requests must include Content-Type: application/json.
Response Format
All responses are wrapped in a standard envelope:
{
"status": "success",
"data": { ... }
}Error responses return the appropriate HTTP status code with error details in the body.
Endpoints
Get Available Platforms
Retrieves the list of verification platforms available for browser sessions.
Headers
x-api-key
Yes
Your partner API key
Response
id
number
Platform identifier (use this as platformId when creating sessions)
name
string
Unique platform slug
displayName
string
Human-readable platform name
description
string | null
Platform description
icon
string | null
Platform logo URL
loginUrl
string
Default login URL for this platform
allowCustomUrl
boolean
Whether custom URLs are permitted
config
object | null
Platform-specific configuration
isActive
boolean
Whether the platform is currently available
createdAt
string
ISO 8601 creation timestamp
updatedAt
string | null
ISO 8601 last update timestamp
Create Browser Session
Initiates a new verification session for a given platform.
Headers
x-api-key
Yes
Your partner API key
Content-Type
Yes
application/json
Request Body
platformId
number
Yes
Platform ID from the platforms endpoint
receiverData
object
No
Metadata about the person performing verification (name, email, phone, etc.)
expiresInHours
integer
No
Session TTL in hours. Range: 1β168 (7 days). Defaults to maximum if not provided
webhookUrl
string
No
HTTPS URL to receive session status webhooks. Must use HTTPS with a valid TLD
externalReferenceId
string
No
Your internal reference ID for tracking this session
Response
sessionId
string
Unique session identifier (UUID)
status
string
Initial session status (CREATED)
embedUrl
string
URL for iframe embedding β load this in your UI
platformId
number
Platform ID for this session
expiresAt
string
ISO 8601 expiration timestamp
createdAt
string
ISO 8601 creation timestamp
externalReferenceId
string
Only present if provided in the request
Get Browser Session
Retrieves the current status and results of a browser session. Use this to poll for session completion or check verification results.
Headers
x-api-key
Yes
Your partner API key
Path Parameters
id
The sessionId returned from session creation
Response
sessionId
string
Session identifier
status
string
Current session status (see Session Lifecycle)
progress
number
Verification progress percentage (0β100)
embedUrl
string
Iframe embed URL
streamUrl
string | null
WebSocket stream URL (when session is active)
platformId
number
Platform ID
platform
object
Platform details (id, name, displayName, icon, loginUrl)
expiresAt
string
ISO 8601 expiration timestamp
createdAt
string
ISO 8601 creation timestamp
completedAt
string | null
ISO 8601 completion timestamp (only for terminal states)
errorMessage
string | null
Error description (only when status is ERROR)
errorCode
string | null
Machine-readable error code (only when status is ERROR)
hasAttestation
boolean
Present and true when cryptographic attestation is available
extractedData
object | null
Verified account data (only when verification is complete)
Note: The full attestation object is not returned in this endpoint.
hasAttestationindicates that a cryptographic proof exists for this session.
List Browser Sessions
Returns a paginated list of browser sessions created by your API key.
Headers
x-api-key
Yes
Your partner API key
Query Parameters
status
string
No
Filter by session status (e.g., COMPLETED, ERROR)
limit
integer
No
Results per page. Range: 1β100. Default: 20
offset
integer
No
Pagination offset. Default: 0
Response
sessions
array
Array of session objects
total
number
Total number of sessions matching the filter
limit
number
The limit used for this request
offset
number
The offset used for this request
Session Lifecycle
Sessions progress through the following statuses:
CREATED
Session created, browser environment not yet assigned
INITIALIZING
Browser environment spinning up
READY
Browser ready, waiting for user to connect
CONNECTED
User connected via iframe, can interact with the browser
LOADING_TREE
Session agent is loading the verification workflow
RUNNING
Executing verification steps
AWAITING_USER
Waiting for user action (login, 2FA, security questions)
COLLECTING_DATA
Extracting account data after successful login
VERIFYING
Generating cryptographic attestation
Terminal statuses:
COMPLETED
Verification successful β attestation and extracted data available
PARTIAL_COMPLETE
Verification partially succeeded β some data was collected but the full workflow did not complete
ERROR
An error occurred β check errorMessage and errorCode
CANCELLED
User cancelled the session
TERMINATED
Session was terminated (manually or due to expiration)
Webhooks
When you provide a webhookUrl during session creation, we send a POST request to your endpoint when the session reaches a terminal status (COMPLETED, PARTIAL_COMPLETE, ERROR, CANCELLED, TERMINATED).
Requirements:
Must be a valid HTTPS URL with a valid TLD
Must respond with a
2xxstatus code within 30 seconds
Webhook Payload:
Rate Limits
API endpoints enforce rate limits to ensure fair usage:
Global limit: 120 requests per 60 seconds per API key
Session creation and bulk operations have additional per-endpoint limits
When rate limited, you'll receive a 429 Too Many Requests response. Implement exponential backoff in your retry logic.
Security
All browser sessions run in isolated environments β no credentials are stored or transmitted to CR3DENTIALS servers
Iframe access is secured with short-lived, single-use tokens
Webhook URLs must use HTTPS
API keys can be rotated at any time via the dashboard
Zero-knowledge proof protocols ensure data authenticity without exposing raw credentials
Last updated
