Skip to main content
POST
cURL

Authorizations

X-Monaco-Signature
string
header
required

Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.

Body

application/json
asset
string | null
amount
string | null
idempotencyKey
string | null

Optional submission identity, shared with order create (same 1-64 characters from [A-Za-z0-9._:-], same per user and application namespace). Retrying the same key and request within 15 minutes of the original acceptance returns the original transfer result, including its movementId, without moving money again; balance figures in a replayed response are as of the retry. The same key with a different request, or a key already used on another endpoint, returns IDEMPOTENCY_KEY_CONFLICT (HTTP 409 / gRPC ALREADY_EXISTS). ORDER_SUBMISSION_UNAVAILABLE and ORDER_SUBMISSION_CAPACITY_EXCEEDED (HTTP 503 / gRPC UNAVAILABLE) mean the outcome is held but cannot be read, or no new key can be accepted: retry with the same key and request. The window does not extend on retries; after it the key moves money again. Generate a fresh key for each intended transfer and keep it across retries of that transfer.

Response

OK

movementId
string | null
marginAccountId
string | null
asset
string | null
amount
string | null
status
string | null
newEquity
string | null
newTotalCollateralValue
string | null
newWithdrawableCollateral
string | null

The largest amount a further transfer-out will accept after this one. See MarginAccountSummary.withdrawable_collateral: this is an allocation-bounded figure, not clamped equity headroom. Truncated toward zero at the collateral asset's precision.

strategyKey
string | null

The request's strategyKey (the sub-account key), echoed; a risk-bucket transfer-in that sent none reports default.

riskBucketId
string | null

Present when collateral was allocated to a risk bucket.

marginMode
string | null

Present when collateral was allocated to a risk bucket. Values: ISOLATED, CROSS.

selectedTradingPairIds
string<uuid>[] | null

The cross bucket's scope: the markets where it has an open position, sorted by trading pair id. Only on cross risk-bucket transfers, and omitted while empty — i.e. while the bucket has no open position.

Minimum string length: 1
positionMarginCredited
boolean | null

Whether the transfer was committed to a position's stored margin. Present only when a position-margin credit was in play: true — the credit landed; false — a credit was requested (or defaulted) but degraded to a plain allocation because the bucket's persisted position row was stale (close/reopen race) — re-issue the Adjust Margin once the new position row lands if the commitment still matters. Absent on plain allocations, parent deposits, and releases.