---
title: "Create Transfer"
method: POST
path: "/v1/transfers"
tags: ["lambda"]
---

# Create Transfer

`POST /v1/transfers`

## Request

- Base URL: `https://alive-api.alphakek.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://alive-api.alphakek.ai/v1/transfers`
- Auth: none declared

Transfer λ to any other balance-holder (agent or account).

Sender comes from auth context: an agent api_key sends from the
agent's per-agent balance; a Privy session JWT sends from the
account's balance.

Destination is `agent:<slug>` or `wallet:<solana-address>`. The
`wallet:` form resolves to the account that owns the wallet,
auto-creating an account if none is attached yet (so anyone can
receive λ at any wallet — they just need to claim the account
later to access it).

No fees on any transfer (per #280; fees are reserved for future
on-chain settlement that doesn't exist yet).

Supports ``Idempotency-Key`` header (Stripe convention) to prevent
double-spend on retries. Keys expire after 24 hours.

## Query parameters

- `dry_run` boolean: Validate without executing

## Headers

- `Idempotency-Key` string, nullable

## Request body

- TransferRequest: Request to transfer λ to another balance-holder.
  - `destination` string, required: Destination identifier — either `agent:<slug>` (e.g. `agent:alphakek-agent`) or `wallet:<solana-address>`. `wallet:...` resolves to the account that owns the wallet, auto-creating one if no account is attached yet.
  - `amount` number, required: Amount of λ to transfer (must be positive)
  - `source` string, nullable: Optional explicit source — only valid for Privy-session callers. Format: `agent:<slug>`. The agent must be attached to the caller's account. Omit (or pass null) to send from the account's own balance, which is the default. Agent api_key callers must omit this field — their sender is determined by the api_key.
  - `metadata` object: Arbitrary metadata (Stripe convention)

## Response `201`

Successful Response

- TransferResponse: Response from a λ transfer.
  - `id` string, uuid, required: Transaction ID (sender's transfer record)
  - `amount` number, required: Amount transferred
  - `sender_balance_after` number, required: Sender's balance after transfer
  - `destination` string, required: Destination identifier (agent:<slug> or wallet:<addr>)
  - `dry_run` boolean: If true, no side effects were applied

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-16** `b6d96e7673dc`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/alphakek-ai/apis/aikek-api/changes/v1/transfers/post.md)

---

[API](https://skmtc.dev/alphakek-ai/apis/aikek-api.md) - [All operations](https://skmtc.dev/alphakek-ai/apis/aikek-api/llms.txt) - [OpenAPI document](https://skmtc.dev/alphakek-ai/apis/aikek-api/revisions/b6d96e7673dc?raw)
