Donutwork Docs

Passkey Relay Endpoint Map

Reference contract for backend relay endpoints used by browser passkey integrations.

Passkey Relay Endpoint Map

This page is API-reference oriented. For architecture, benefits and full implementation guidance, see:

Base API domain:

  • https://api.hub.donutwork.com

Relay Contract (Backend Endpoints)

Your frontend should call only your backend relay endpoints. Your backend then calls Donutwork APIs in server-to-server mode.

Your EndpointMethodDonutwork EndpointMethod
/api/passkey/register/optionsPOST/:apiVersion/idp/{externalUserId}/passkey/options.jsonPOST
/api/passkey/register/confirmPOST/:apiVersion/idp/{externalUserId}/passkey/confirm.jsonPOST
/api/passkey/auth/challengePOST/:apiVersion/idp/passkey/challenge.jsonPOST
/api/passkey/auth/verifyPOST/:apiVersion/idp/passkey/verify.jsonPOST
/api/passkey/deleteDELETE/:apiVersion/idp/{externalUserId}/passkey/{credentialId}.jsonDELETE

Request/Response Envelope

register/options

Frontend -> backend:

{
  "passkey": {
    "display_name": "Alexander",
    "account_name": "alexander@enterprise.com"
  }
}

Backend -> frontend (from Donutwork):

{
  "status": "success",
  "passkey": {
    "challenge_id": "ch_01J...",
    "options": {
      "challenge": "BASE64URL..."
    }
  }
}

register/confirm

Frontend -> backend:

{
  "passkey": {
    "challenge_id": "ch_01J...",
    "payload": "{\"id\":\"...\",\"rawId\":\"...\",\"response\":{...}}",
    "device": "Firefox / macOS"
  }
}

auth/challenge

Backend -> frontend (from Donutwork):

{
  "status": "success",
  "passkey": {
    "challenge_id": "ch_01J...",
    "options": {
      "challenge": "BASE64URL..."
    }
  }
}

auth/verify

Frontend -> backend:

{
  "passkey": {
    "challenge_id": "ch_01J...",
    "payload": "{\"id\":\"...\",\"rawId\":\"...\",\"response\":{...}}",
    "device": "Firefox / macOS"
  }
}

Linked API Reference

On this page