Skip to main content
POST
/
api
/
v1
/
trading
/
deposit
Deposit cash
curl --request POST \
  --url https://staging.zerolatencylabs.com/api/v1/trading/deposit \
  --header 'Content-Type: application/json' \
  --data '
{
  "payload": "AQABAAAAAAB4m2tQz9KvX1Yk2mN3oQ4rS5tU6vW7xZ8aB9cD0eF1gH2iJ3kL5mN7oP9qR1sT3uV5wX7yZ9a=",
  "public_key": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8=",
  "signature": "AAcOFRwjKjE4P0ZNVFtiaXB3foWMk5qhqK+2vcTL0tng5+71/AMKERgfJi00O0JJUFdeZWxzeoGIj5adpKuyuQ=="
}
'
{
  "processed_at_ns": 123
}

Body

application/json

Signed write request. The JSON body is a Base64SignedPayload; its base64 payload decodes to the binary layout [Header(8) || RequestId(16) || Body || Auth] the client signs — see spec/signing.md for the byte layout, signature types, and signing procedure. The decoded Body is:

  • DepositCash when Header.request_type = deposit_cash (5).

JSON envelope for a signed request: the base64-encoded canonical payload plus the base64 signature and public_key of the signing credential. Session-key (Ed25519) endpoints accept exactly these fields; master-key (Secp256k1 / Passkey) endpoints sign the same payload and may carry additional signature material. Endpoints also accept the equivalent application/octet-stream binary frame.

payload
string
required

Base64-encoded bytes of the canonical request payload.

Example:

"AQABAAAAAAB4m2tQz9KvX1Yk2mN3oQ4rS5tU6vW7xZ8aB9cD0eF1gH2iJ3kL5mN7oP9qR1sT3uV5wX7yZ9a="

public_key
string
required

Base64-encoded public key of the signing credential.

Example:

"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="

signature
string
required

Base64-encoded signature over the payload.

Example:

"AAcOFRwjKjE4P0ZNVFtiaXB3foWMk5qhqK+2vcTL0tng5+71/AMKERgfJi00O0JJUFdeZWxzeoGIj5adpKuyuQ=="

Response

Deposit accepted

Synchronous acknowledgment returned when the exchange accepts a signed request.

processed_at_ns
integer
required

Exchange processing timestamp, in nanoseconds since the Unix epoch.

Example:

1719158400000000000

status
enum<string>
required

Outcome status serialized in snake_case (e.g. request_completed, order_rejected_invalid).

Available options:
request_completed,
order_rejected_invalid,
order_rejected_expired,
duplicate_request_id,
order_rejected_internal,
order_rejected_invalid_market,
rejected_unauthorized,
rejected_invalid_portfolio_id,
rejected_invalid_price,
rejected_invalid_size,
rejected_market_not_found,
rejected_market_halted,
rejected_market_reduce_only,
rejected_market_post_only,
rejected_market_cancel_only,
market_closed,
rejected_rate_limited,
rejected_account_suspended,
rejected_max_open_orders_exceeded,
rejected_post_only_would_cross_book,
rejected_size_zero,
insufficient_margin_to_place,
insufficient_margin_to_trade,
rejected_size_not_equal,
rejected_order_not_found,
invalid_reduce_only_order,
rejected_f_o_k_not_fully_filled_insufficient_margin,
rejected_f_o_k_not_fully_filled_low_liquidity,
rejected_insufficient_free_equity,
self_trade_prevention,
rejected_self_transfer,
rejected_slippage_exceeds_maximum,
rejected_invalid_uuid,
rejected_mark_price_zero,
rejected_invalid_order_flags,
rejected_max_conditional_orders_exceeded,
rejected_trigger_already_satisfied,
conditional_order_on_books,
conditional_order_not_found,
rejected_conditional_order_expired,
rejected_invalid_trigger,
master_key_added,
master_key_removed,
master_key_rejected_invalid,
master_key_rejected_unauthorized,
master_key_rejected_self_removal,
master_key_rejected_last_key,
session_created,
session_revoked,
session_rejected,
session_rejected_max_sessions,
account_created_with_session,
creation_rejected,
account_created_session_failed,
request_dropped,
retry_required
Example:

"request_completed"