Send passkey (WebAuthn) pairing response
Second step of passkey pairing. When WhatsApp offers passkey-based device linking, your webhook receives `pair.passkey_request` carrying the WebAuthn challenge (`public_key`). Resolve it in the account owner's authenticator — in a browser, `navigator.credentials.get({ publicKey })` — and submit the resulting credential here. WUTS forwards it to WhatsApp; on success the `pair.passkey_confirmation` webhook delivers a verification code to show the user.
Second step of passkey pairing. When WhatsApp offers passkey-based device linking, your webhook receives pair.passkey_request carrying the WebAuthn challenge (public_key). Resolve it in the account owner's authenticator — in a browser, navigator.credentials.get({ publicKey }) — and submit the resulting credential here. WUTS forwards it to WhatsApp; on success the pair.passkey_confirmation webhook delivers a verification code to show the user.
Authorization
bearerAuth Per-user API token (UUID v4) sent as Authorization: Bearer <token>. Identifies the tenant and user.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/passkey/response" \ -H "Content-Type: application/json" \ -d '{ "device_id": "wuts-device-001", "response": { "id": "nGViU9nFzQmp7VpAkFyxWQ", "rawId": "nGViU9nFzQmp7VpAkFyxWQ", "type": "public-key", "response": { "clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uZ2V0IiwiY2hhbGxlbmdlIjoiM3EyLTd3In0", "authenticatorData": "SZYN5YgOjGh0NBcPZHZgW4_krrmihjLHmVzzuoMdl2M", "signature": "MEUCIQDKp7C0mXo1Zq7T0YV0Zi5cW5mF9pJb3E0m1o6r7wIgYt2c", "userHandle": null } } }'{ "success": true, "data": { "status": "passkey_response_sent", "device_id": "wuts-device-001", "next": "wait for the pair.passkey_confirmation webhook, show the code to the user, then POST /passkey/confirmation" }}{ "success": false, "error": "response.response.signature is required"}{ "success": false, "error": "unauthorized"}{ "success": false, "error": "no active pairing session — start pairing via /qr or /paircode and wait for the pair.passkey_request webhook"}{ "success": false, "error": "failed to send passkey response: websocket disconnected"}Log out the instance POST
Performs a full logout: clears the stored WhatsApp credentials and removes the companion device server-side. Unlike POST /disconnect (which only drops the socket and keeps credentials), the instance must be re-paired (QR or pairing code) before it can connect again. Requires a live connection.
Set the account profile picture POST
Updates the connected WhatsApp account's own profile photo. The image must be a base64-encoded JPEG; it replaces the current picture and returns the new picture ID.