Sign in with a passkey: verify its assertion and return a session token to present as a bearer (F-028). Authenticated by the assertion it carries.
const url = 'https://example.com/v1/auth/passkey';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"assertion":{"authenticator_data":"example","client_data_json":"example","raw_id":"example","signature":"example"},"credential":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/v1/auth/passkey \ --header 'Content-Type: application/json' \ --data '{ "assertion": { "authenticator_data": "example", "client_data_json": "example", "raw_id": "example", "signature": "example" }, "credential": "example" }'Request Bodyrequired
Section titled “Request Bodyrequired”POST /v1/auth/passkey (F-028): sign in with a passkey.
object
The assertion over a challenge with purpose authenticate.
object
response.authenticatorData, base64url.
response.clientDataJSON, base64url.
rawId, base64url.
response.signature, base64url (DER).
The credential, did:aledgent:cred:….
Examplegenerated
{ "assertion": { "authenticator_data": "example", "client_data_json": "example", "raw_id": "example", "signature": "example" }, "credential": "example"}Responses
Section titled “ Responses ”A session token: present it as a bearer until expires_at. It is a secret.
A session (F-028): present session as a bearer token until expires_at. It is a secret.
object
The passkey it signed in with.
When it expires.
The identity it authenticates.
The session token.
Examplegenerated
{ "credential": "example", "expires_at": 1, "principal": "example", "session": "example"}Refused, with the named condition. The status is the alternative’s x-http-status.
- ERR-NotAuthorised
- ERR-AuthorityRevoked
- ERR-CredentialInvalid
- ERR-RecoveryNotElapsed
- ERR-UnboundedGrant
- ERR-BoundExceeded
- ERR-UnknownAccount
- ERR-AccountFrozen
- ERR-AccountClosed
- ERR-AccountNotEmpty
- ERR-IdentityRestricted
- ERR-UnknownAsset
- ERR-AssetDeprecated
- ERR-PrecisionExceeded
- ERR-ZeroAmount
- ERR-InsufficientAvailable
- ERR-AmountMismatch
- ERR-ReleaseUnsafe
- ERR-OperationTerminal
- ERR-InvalidTransition
- ERR-UnknownOperation
- ERR-DeadlineRequired
- ERR-ClientKeyReused
- ERR-BatchTooLarge
- ERR-UnsupportedLeg
- ERR-SettlementLayerUnavailable
- ERR-DecisionUnavailable
- ERR-ObservationDuplicate
- ERR-ObservationUnassociated
- ERR-EvidenceInsufficient
- ERR-JustificationRequired
- ERR-ApprovalRequired
- ERR-DisclosureUnsupported
- ERR-DisclosureFalse
- ERR-NotDisclosable
- ERR-AnchorNotFinal
- ERR-QueryUnbounded
- ERR-MalformedCommand
- ERR-InitialStateNotSealed
- ERR-IdentifierArchived
- ERR-Internal
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Example
{ "description": "The initiating principal holds no authority that covers this operation, account, asset or bound", "error": "ERR-NotAuthorised"}Refused, with the named condition. The status is the alternative’s x-http-status.
- ERR-NotAuthorised
- ERR-AuthorityRevoked
- ERR-CredentialInvalid
- ERR-RecoveryNotElapsed
- ERR-UnboundedGrant
- ERR-BoundExceeded
- ERR-UnknownAccount
- ERR-AccountFrozen
- ERR-AccountClosed
- ERR-AccountNotEmpty
- ERR-IdentityRestricted
- ERR-UnknownAsset
- ERR-AssetDeprecated
- ERR-PrecisionExceeded
- ERR-ZeroAmount
- ERR-InsufficientAvailable
- ERR-AmountMismatch
- ERR-ReleaseUnsafe
- ERR-OperationTerminal
- ERR-InvalidTransition
- ERR-UnknownOperation
- ERR-DeadlineRequired
- ERR-ClientKeyReused
- ERR-BatchTooLarge
- ERR-UnsupportedLeg
- ERR-SettlementLayerUnavailable
- ERR-DecisionUnavailable
- ERR-ObservationDuplicate
- ERR-ObservationUnassociated
- ERR-EvidenceInsufficient
- ERR-JustificationRequired
- ERR-ApprovalRequired
- ERR-DisclosureUnsupported
- ERR-DisclosureFalse
- ERR-NotDisclosable
- ERR-AnchorNotFinal
- ERR-QueryUnbounded
- ERR-MalformedCommand
- ERR-InitialStateNotSealed
- ERR-IdentifierArchived
- ERR-Internal
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
object
Example
{ "description": "The initiating principal holds no authority that covers this operation, account, asset or bound", "error": "ERR-NotAuthorised"}Headers
Section titled “Headers”On ERR-DecisionUnavailable (503): seconds to wait before retrying with the same client key (DEC-27 (g)).
© 2026 Pagos Cube LLC · Code: Apache-2.0 OR MIT · agents/: AGPL-3.0-or-later · Docs: CC-BY-4.0