---
title: "Create a new omnibus structure within a domain"
method: POST
path: "/v1/domains/{domainId}/omnibus"
tags: ["Omnibus"]
---

# Create a new omnibus structure within a domain

`POST /v1/domains/{domainId}/omnibus`

## Path parameters

- `domainId` string, uuid, required

## Request body

- OmnibusCreateOmnibusRequest
  - `alias` string, required — Alias for the omnibus account
  - `vaultId` string, uuid, required — Identifier of the vault where the omnibus account keys will be stored
  - `keyStrategy` 'VaultHard' | 'VaultSoft' | 'Random', required
  - `lockStatus` 'Unlocked' | 'Locked'
  - `ledgerIds` string[] — List of ledger IDs to activate on the omnibus account. If omitted, all enabled ledgers compatible with the vault and key strategy are activated automatically.
  - `description` string — Optional description for the omnibus account
  - `customProperties` object — Custom key-value properties for the omnibus account
  - `ignoredAccountIds` string[] — List of custody account IDs to ignore during event processing (e.g., Gas Station account)
  - `sponsoringGasStationId` string, uuid — Entity ID of the Gas Station account that will sponsor fees for this omnibus account.

## Response `201`

Omnibus structure created

- OmnibusCreateOmnibusResponse
  - `omnibus` OmnibusOmnibusResponse, required
    - `id` string, uuid, required — Unique identifier of the omnibus structure
    - `domainId` string, uuid, required — Identifier of the domain this omnibus structure belongs to
    - `custodyAccountId` string, uuid, required — Identifier of the custody account backing this omnibus structure
    - `alias` string, required — Alias of the omnibus structure
    - `status` 'CREATING' | 'PENDING_SPONSORSHIP' | 'ACTIVE' | 'FAILED', required
    - `lockStatus` 'UNLOCKED' | 'LOCKED', required
    - `ignoredAccountIds` string[], required — List of custody account IDs to ignore during event processing
    - `createdAt` string, date-time, required — Timestamp when the omnibus structure was created
    - `updatedAt` string, date-time, required — Timestamp when the omnibus structure was last updated
    - `sponsoringGasStationId` string, uuid — Entity ID of the Gas Station account that sponsors fees for this omnibus account
    - `balances` OmnibusTenantBalanceEntry[] — Balances of the host tenant per ticker/ledger combination
      - `tickerId` string, uuid, required — Ticker identifier
      - `ledgerId` string, required — Ledger identifier
      - `reserved` string, required — Reserved amount
      - `quarantined` string, required — Quarantined amount
      - `availableBalance` string — Available balance from accounting service; absent if the accounting service is unavailable
  - `unsignedIntent` OmnibusUnsignedIntentPayload, required — Complete Propose object ready to be signed and submitted to Custody via POST /v1/intents. The frontend signs this object and sends it as the "request" field in ProposeIntentBody.
    - `type` 'Propose', required — Intent type, always "Propose"
    - `id` string, uuid, required — Unique identifier for the intent
    - `author` OmnibusUnsignedIntentPayloadAuthor, required — The user proposing the intent
      - `domainId` string, uuid, required
      - `id` string, uuid, required
    - `expiryAt` string, date-time, required — Expiry time for the intent
    - `targetDomainId` string, uuid, required — Domain where the intent will be executed
    - `payload` unknown, required
    - `description` string — Description of the intent
    - `customProperties` object, required — Intent-level custom properties

## Other responses

- `400` — Intent dry-run validation failed
- `409` — An omnibus structure already exists for this domain

---

[API](https://skmtc.net/ripple/apis/ripple-custody-api.md) · [All operations](https://skmtc.net/ripple/apis/ripple-custody-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ripple/ripple-custody-api/revisions/0b55c0ddf07a/schema)
