Capture sessions
Every verification runs in a fresh, single-use session bound to one identity. Your backend creates it, and the app uploads into it with a short-lived token.
/v1/capture-sessions{
"id": "cap_01m...",
"object": "capture_session",
"identity_id": "idn_01m...",
"status": "open",
"nonce": "...",
"expires_at": "2026-10-30T10:03:00Z",
"capture_token": "cap_01m....secret",
"upload_url": "https://api.warka-iq.com/v1/capture-sessions/cap_01m.../frames",
"policy": {
"min_frames": 1,
"max_frames": 5,
"max_bytes_per_frame": 8388608,
"formats": ["image/jpeg", "image/png"],
"challenge": null
}
}Uploading frames
/v1/capture-sessions/{session_id}/framesSend Authorization: Capture <capture_token> with one frame as multipart. Warka validates the file, removes metadata, encrypts it and stores it. A successful upload proves nothing about the camera and records no attendance.
Sessions last about three minutes. Client details such as device model may be attached when the session is created, and Warka treats them as unverified.
Creating a session spends the attempt, even if no frame is ever uploaded. See Quotas and rate limits.
Web apps
A browser can't call upload_url, because the frames endpoint doesn't accept cross-origin requests. In a web app, post the frames to your own backend. Your backend then sends them to verify as frames, in the same multipart request as capture_session_id. Native apps upload directly with the capture token.