Skip to main content

Verify Passkey API

Verify Passkey endpoints exposed by the Devotel CPaaS API Base path: /api/v1/verify/passkey Endpoint count: 5
No dashboard screen — passkeys are driven from your own application. A WebAuthn passkey is registered and used where the end user is present: your app requests options from these endpoints, runs the browser ceremony (navigator.credentials.create() / .get(), or the @simplewebauthn/browser helper), and posts the resulting attestation or assertion back to the matching verify endpoint. Set the relying party (rpId and origin) to your own domain. The Orbit dashboard covers OTP send/check, profiles, and analytics — it does not enroll or revoke passkeys on a user’s behalf. Retire a lost or rotated key from your app with POST /verify/passkey/factors/{factorId}/revoke.

Issue WebAuthn authentication options

POST /api/v1/verify/passkey/authentication/options
Returns PublicKeyCredentialRequestOptionsJSON the browser hands to navigator.credentials.get(). allowCredentials includes the identity’s registered passkeys with their transport hints.
identity
string
required
The end-user identifier whose registered passkeys should be offered for this authentication ceremony (1–255 characters).
ttlSeconds
integer
Lifetime of the returned authentication challenge, in seconds, before it expires. Defaults to 300 (5 minutes); range 30–600.

Verify WebAuthn authentication assertion

POST /api/v1/verify/passkey/authentication/verify
Verifies the assertion returned by navigator.credentials.get(). On success bumps counter + lastUsedAt. Counter regression auto-revokes the factor (W3C WebAuthn L3 § 6.1.3 cloning signal).
challengeId
string
required
The challengeId returned by POST /verify/passkey/authentication/options.
response
object
required
The AuthenticationResponseJSON returned by the browser’s navigator.credentials.get() (or @simplewebauthn/browser’s startAuthentication()), serialized to JSON.

Revoke a passkey factor

POST /api/v1/verify/passkey/factors/{factorId}/revoke
Flips a passkey factor to revoked. Idempotent — a second call on an already-revoked factor returns the same response.
factorId
string
required

Issue WebAuthn registration options

POST /api/v1/verify/passkey/registration/options
Returns PublicKeyCredentialCreationOptionsJSON the browser hands to navigator.credentials.create(). The resulting attestation must be submitted to /verify/passkey/registration/verify within the TTL.
identity
string
required
Stable identifier for the end user enrolling this passkey — your user id, email, or username (1–255 characters).
friendlyName
string
required
Human-readable label for the credential, shown in the operating-system prompt during enrollment (1–120 characters).
ttlSeconds
integer
Lifetime of the returned registration challenge, in seconds, before it expires. Defaults to 300 (5 minutes); range 30–600.

Verify WebAuthn registration attestation

POST /api/v1/verify/passkey/registration/verify
Verifies the attestation returned by navigator.credentials.create(). On success creates a verify_passkey_factor row from the credential public key + counter + transports.
challengeId
string
required
The challengeId returned by POST /verify/passkey/registration/options.
response
object
required
The RegistrationResponseJSON returned by the browser’s navigator.credentials.create() (or @simplewebauthn/browser’s startRegistration()), serialized to JSON.