Verify a DID authentication proof and create a session.
curl --request POST \ --url https://auth.example.com/api/auth/dids/verify \ --header 'Content-Type: application/json' \ --data '{ "challenge_id": "challenge_123", "proof": "eyJhbGciOiJFZERTQSJ9..." }'Works only where the tenant allows DID login (authentication-methods.did.login_enabled, default false); otherwise 403 (503 when the settings cannot be read), decided before the challenge is consumed, the DID is resolved, an account is looked up or a session is opened. A DID that is not linked, or whose link has no lookup route, answers like an unlinked DID (link required), not with a server error. Linking a DID (/api/auth/dids/register/*) is governed by the same setting; listing and unlinking (/api/auth/dids) are not, so a user can always remove a DID.
Request Body required
Section titled “Request Body required ”object
Example
{ "challenge_id": "challenge_123", "proof": "eyJhbGciOiJFZERTQSJ9..."}Responses
Section titled “ Responses ”Successful JSON response.
object
Example
{ "session_id": "sess_123", "user_id": "user_123", "expires_in": 86400}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}Error response.
object
Optional browser-side WebAuthn Signal API hint. When unknown_credential is true, clients that just received a WebAuthn credential assertion may call PublicKeyCredential.signalUnknownCredential() for that credential ID.
object
Example generated
{ "error": "example", "error_description": "example", "message": "example", "webauthn_signal": { "unknown_credential": true }}