> ## Documentation Index
> Fetch the complete documentation index at: https://docs.caminotreasury.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Recipient

> Save a new recipient (address + label) for the organization. The address is unique per organization; a duplicate returns 400.



## OpenAPI

````yaml /api-reference/openapi.json post /recipients
openapi: 3.1.0
info:
  title: Camino Treasury API
  description: >-
    API for managing treasury wallets, tracking transfers (on-chain and fiat) in
    a unified feed, depositing into C0, withdrawing to wallets, and claiming
    yield distributions.
  version: 1.0.0
servers:
  - url: https://api.caminotreasury.com/v1
security:
  - apiKeyAuth: []
paths:
  /recipients:
    post:
      tags:
        - Recipients
      summary: Create Recipient
      description: >-
        Save a new recipient (address + label) for the organization. The address
        is unique per organization; a duplicate returns 400.
      operationId: createRecipient
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - address
                - label
              properties:
                address:
                  type: string
                  pattern: ^0x[a-fA-F0-9]{40}$
                  description: Ethereum address (normalized to lowercase on write).
                label:
                  type: string
                  minLength: 1
                  maxLength: 100
      responses:
        '201':
          description: Recipient created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Recipient'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/IdempotencyInFlight'
        '422':
          $ref: '#/components/responses/IdempotencyMismatch'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      required: true
      description: >-
        Caller-chosen string (≤256 chars) that uniquely identifies this request.
        Resending the same key replays the original response; reusing the same
        key with a different body returns 422. Keys are scoped per organization.
      schema:
        type: string
        minLength: 1
        maxLength: 256
  schemas:
    Recipient:
      type: object
      description: >-
        A saved destination address (address book entry). Org-scoped; `address`
        is unique per organization.
      required:
        - id
        - address
        - label
        - createdAt
        - updatedAt
      properties:
        id:
          type: integer
          description: Recipient id.
        address:
          type: string
          pattern: ^0x[a-fA-F0-9]{40}$
          description: Lowercase 0x-address.
        label:
          type: string
          minLength: 1
          maxLength: 100
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      example:
        id: 42
        address: '0x742d35cc6634c0532925a3b844bc454e4438f44e'
        label: Treasury Cold Wallet
        createdAt: '2026-05-20T12:00:00.000Z'
        updatedAt: '2026-05-20T12:00:00.000Z'
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: Error message
        details:
          type: object
          description: Optional validation details
  responses:
    BadRequest:
      description: Bad Request - Invalid input
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized - Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    IdempotencyInFlight:
      description: >-
        Conflict — a request with the same Idempotency-Key is still in flight.
        Wait and retry.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    IdempotencyMismatch:
      description: >-
        Unprocessable — the Idempotency-Key was previously used with a different
        request body.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Too Many Requests - Rate limit exceeded. Check the `Retry-After` header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key for authentication. Pass your key in the `x-api-key` header.

````