---
title: "Create a multisig proposal"
method: POST
path: "/v1/treasury/{treasury_id}/proposals"
tags: ["Treasury Proposals"]
---

# Create a multisig proposal

`POST /v1/treasury/{treasury_id}/proposals`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/treasury/{treasury_id}/proposals`
- Auth: HTTP bearer

Create a new Safe multisig transaction proposal. The proposer must be a
treasury signer or an agent with an active delegation for the treasury.
If auto-approve rules match, the agent's signature is auto-inserted and
auto-execute fires if threshold is met.

## Path parameters

- `treasury_id` string, uuid, required

## Request body

- CreateTreasuryProposalRequest
  - `to_address` string, required: Destination address (0x-prefixed)
  - `value_wei` string, required: Transaction value in wei
  - `chain` string, required: Chain name (e.g. ethereum, base)
  - `chain_id` integer: Numeric chain ID (alternative to chain name)
  - `data_hex` string: Hex-encoded calldata (optional)
  - `operation` integer: Safe operation type (0 = Call, 1 = DelegateCall)

## Response `201`

Proposal created

- TreasuryProposalResponse
  - `id` string, uuid
  - `treasury_id` string, uuid
  - `proposed_by` string, uuid
  - `proposed_by_type` 'user' | 'agent'
  - `chain` string
  - `chain_id` integer
  - `safe_address` string
  - `to_address` string
  - `value_wei` string
  - `data_hex` string, nullable
  - `operation` integer
  - `safe_tx_hash` string, nullable
  - `nonce` integer, nullable
  - `status` 'pending' | 'approved' | 'executing' | 'executed' | 'rejected' | 'expired'
  - `threshold` integer
  - `expires_at` string, date-time, nullable
  - `executed_tx_hash` string, nullable
  - `executed_at` string, date-time, nullable
  - `signatures` ProposalSignatureResponse[]
    - `id` string, uuid
    - `signer_id` string, uuid
    - `signer_type` 'user' | 'agent'
    - `signer_address` string
    - `signature` string
    - `decision` 'approve' | 'reject'
    - `created_at` string, date-time
  - `created_at` string, date-time

## Other responses

- `400`: Invalid request
- `401`: Authentication required or invalid
- `403`: Insufficient permissions

---

[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)
