---
title: "Provision a Ethereum wallet"
method: POST
path: "/contracts/v1/signers"
tags: ["Contracts"]
---

# Provision a Ethereum wallet

`POST /contracts/v1/signers`

## Request

- Base URL: `https://api.run402.com`
- URL: `https://api.run402.com/contracts/v1/signers`
- Auth: HTTP bearer

Provision a Ethereum wallet for signing smart-contract transactions on behalf of the project. Cost: $0.04/day rental ($1.20/month, billed daily as kms_wallet_rental). Requires $1.20 of allowance at creation (30 days of rent). Private keys never leave the platform's key custody. Supported chains: base-mainnet, base-sepolia. Non-custodial: see https://run402.com/humans/terms.html#non-custodial-kms-wallets.

## Request body

- object
  - `chain` 'base-mainnet' | 'base-sepolia', required
  - `recovery_address` string: Optional 0x-prefixed address for auto-drain on day-90 deletion.

## Response `201`

Wallet provisioned

- Signer
  - `id` string
  - `project_id` string, required: Run402 project ID. Public IDs are not UUIDs.
  - `chain` 'base-mainnet' | 'base-sepolia', required
  - `address` string, required
  - `status` 'active' | 'suspended' | 'deleted', required
  - `recovery_address` string
  - `low_balance_threshold_wei` string
  - `last_alert_sent_at` string, date-time, nullable
  - `last_rent_debited_on` string, nullable
  - `suspended_at` string, date-time, nullable
  - `deleted_at` string, date-time, nullable
  - `created_at` string, date-time, required
  - `native_balance_wei` string
  - `native_balance_usd_micros` integer
  - `non_custodial_notice` string

## Other responses

- `400`: Unsupported chain or invalid recovery address
- `403`: `ALLOWANCE_INSUFFICIENT`: the allowance cannot cover the 30-day rent prepay (`required_usd_micros`, `allowance_usd_micros`); top up via /orgs/v1/:org_id/checkouts. `PROJECT_HAS_NO_ORGANIZATION`: the project has no organization to bill.

---

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