---
title: "Begin passkey transaction authorization"
method: POST
path: "/v1/auth/passkeys/tx-assert/begin"
tags: ["Authentication"]
---

# Begin passkey transaction authorization

`POST /v1/auth/passkeys/tx-assert/begin`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/auth/passkeys/tx-assert/begin`
- Auth: HTTP bearer

Requires `tx_digest` — SHA-256 hex of the canonical digest for the
treasury action being authorized (`send` or `swap`). The server
recomputes this digest on send/swap and rejects passkey tokens that
do not match.

## Request body

- PasskeyTxAssertBeginRequest
  - `tx_digest` string, required: 64-char hex SHA-256 of canonical send or swap params
  - `action` 'send' | 'swap': Treasury action being authorized. Defaults to `send`.

## Response `200`

WebAuthn challenge

- PasskeyAssertBeginResponse
  - `challenge` string, required
  - `rp_id` string, required
  - `timeout` integer, required
  - `user_verification` string, required
  - `allow_credentials` AllowCredential[], required
    - `id` string, required
    - `type` 'public-key', required
    - `transports` string[]

## Other responses

- `400`: Missing or invalid tx_digest, or invalid action
- `403`: Insufficient permissions
- `404`: No passkeys registered for the user

---

[API](https://skmtc.dev/1claw/apis/1claw-api.md) · [All operations](https://skmtc.dev/1claw/apis/1claw-api/llms.txt) · [OpenAPI document](https://skmtc.dev/1claw/apis/1claw-api/revisions/ae109b496830?raw)
