---
title: "Co-sign and broadcast a multisig transfer"
method: POST
path: "/v1/treasury/wallets/{chain}/multisig/broadcast"
tags: ["Key Custody"]
---

# Co-sign and broadcast a multisig transfer

`POST /v1/treasury/wallets/{chain}/multisig/broadcast`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/treasury/wallets/{chain}/multisig/broadcast`
- Auth: HTTP bearer

`raw` must be a transfer this wallet prepared (and not yet submitted),
`device_signature` D's signature over sha256(raw), and `X-Passkey-Token`
a passkey assertion bound to `tss_sign` and the hex sha256 of `raw`. The
vault re-checks the raw against what was prepared, adds its own
signature last, and broadcasts D + V. The vault's key never signs
alone. Audited `treasury_wallet.send`; fires `wallet.transfer.sent`.

## Headers

- `X-Passkey-Token` string, required

## Request body

- MultisigSignedRawRequest
  - `raw` string, required: Base64 raw bytes exactly as prepared.
  - `device_signature` string, required: Hex 65-byte recoverable ECDSA signature (r ‖ s ‖ v, low-S) by D over sha256(raw).

## Response `200`

Broadcast

- TreasuryWalletSendResponse
  - `tx_hash` string, required
  - `from` string, required
  - `to` string, required
  - `value_wei` string, required
  - `chain` string, required
  - `status` string, required
  - `user_op_hash` string: UserOperation hash (only present for gasless sends via paymaster)
  - `raw_tx` string: Raw signed transaction, non-EVM only (hex for Bitcoin and Cardano, base64 for Solana and for a Tron multisig `Transaction`).

## Other responses

- `400`: Invalid request
- `401`: Authentication required or invalid
- `403`: Insufficient permissions
- `404`: Resource not found
- `409`: Resource already exists or conflict

---

[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/5fa0918f3b41?raw)
