Omen Developer Portal

Integration area

Wallets

Use the wallet APIs for account setup, wallet linking, credential management, signing, balances, transfers, and cross-venue movement.

Retail-facing proxy

The wallet proxy authenticates user requests and exposes retail wallet, onboarding, transfer, and balance workflows through HTTP.

Internal wallet service

The wallet service exposes service-authenticated REST for signing, HMAC, admin, managed wallet, retail delegation, and cross-venue workflows.

Aeron transport

Latency-sensitive gateway-to-wallet operations use Aeron UDP with SBE payloads. Monetary values are encoded as u128 at 1e18 fixed-point scale.

Cross-venue movement

Retail cross-venue APIs expose balances, deposit addresses, transfer quotes, execution, and transfer status across prediction markets and perps.

OpenAPI referencev0.2.2Wallets

Omen Wallet Service API

Server-side signing and credential management for the Omen trading platform. **Flows:** - **Prop Trading** — Risk-checked server-side signing via Privy server wallets - **Retail Delegation** — 24h session key delegation for retail users - **Retail Onboarding** — Full Polymarket account setup (Privy embedded wallet + deposit wallet/Safe + credentials) - **Builder HMAC** — HMAC-SHA256 header generation for Polymarket A

Environment endpoints

Local developmenthttp://localhost:8090Local development

Authentication

BearerAuthhttpbearer

End-user JWT bearer token for wallet linking endpoints.

ServiceAuthapiKeyX-Service-Secret

Service-to-service shared secret. Required on all non-health endpoints except the JWT-authenticated wallet linking routes, unless `SERVICE_AUTH_REQUIRED=false`.

Endpoints

MethodPathSummaryTags
GET/healthLiveness probe
Health
GET/health/readyReadiness probe
Health
GET/internal/wallet/{user_id}Get linked wallet by user id
Internal
GET/internal/trading-wallet/{user_id}Get trading wallet by user id
Internal
POST/api/v1/wallet/linkLink a wallet to the authenticated user
Wallet Linking
DELETE/api/v1/wallet/linkUnlink the authenticated user's wallet
Wallet Linking
GET/api/v1/walletGet the authenticated user's linked wallet
Wallet Linking
POST/api/v1/polymarket/hmacGenerate builder HMAC headers
HMAC
GET/api/v1/prop/walletsList prop wallets
Prop Wallets
GET/api/v1/prop/wallets/{wallet_id}Get wallet details
Prop Wallets
POST/api/v1/prop/wallets/{wallet_id}/signSign order with risk checks
Prop Wallets
POST/api/v1/prop/wallets/{wallet_id}/hmacGenerate HMAC for specific wallet
Prop Wallets
GET/api/v1/prop/wallets/{wallet_id}/positionsGet wallet positions
Prop Wallets
GET/api/v1/prop/wallets/{wallet_id}/pnlGet wallet PnL
Prop Wallets
POST/api/v1/admin/walletsCreate prop wallet
Admin
PUT/api/v1/admin/wallets/{wallet_id}Update wallet settings
Admin
DELETE/api/v1/admin/wallets/{wallet_id}Disable wallet
Admin
PUT/api/v1/admin/wallets/{wallet_id}/rulesUpdate trading rules
Admin
POST/api/v1/admin/bot-walletsProvision a bot wallet and API token
Bot Wallets
DELETE/api/v1/admin/bot-wallets/{user_id}Deactivate a bot wallet
Bot Wallets
POST/api/v1/admin/bot-wallets/{user_id}/rotate-tokenRotate a bot wallet API token
Bot Wallets
POST/api/v1/retail/delegateDelegate private key for 24h signing
Retail Delegation
DELETE/api/v1/retail/delegateRevoke delegated key
Retail Delegation
GET/api/v1/retail/delegate/statusCheck delegation status
Retail Delegation
POST/api/v1/retail/signSign order with delegated key
Retail Signing
POST/api/v1/retail/onboardOnboard retail user for Polymarket
Retail Onboarding
GET/api/v1/retail/onboard/statusCheck onboarding progress
Retail Onboarding
GET/api/v1/retail/walletGet retail wallet info
Retail Account
GET/api/v1/retail/wallet/balanceGet pUSD balance
Retail Account
GET/api/v1/retail/credentialsGet Polymarket API credential metadata
Retail Account
POST/api/v1/retail/credentials/resetReset Polymarket credentials
Retail Account
GET/api/v1/retail/approvalsCheck token approval status
Retail Account
GET/api/v1/retail/permissionsGet trading permissions for the client location
Retail Account
POST/api/v1/retail/safe/deployDeploy Safe contract
Retail Onboarding
POST/api/v1/retail/wallet/registerRegister a self-provisioned Privy embedded wallet
Retail Onboarding
POST/api/v1/retail/safe/createSubmit a client-signed SAFE-CREATE deployment
Retail Onboarding
POST/api/v1/retail/safe/execute/preparePrepare a SAFE execute for client signing
Retail Onboarding
POST/api/v1/retail/safe/execute/submitSubmit a client-signed SAFE execute
Retail Onboarding
POST/api/v1/retail/deposit-wallet/createDeploy a Polymarket deposit wallet
Retail Onboarding
POST/api/v1/retail/deposit-wallet/execute/preparePrepare a deposit wallet batch for client signing
Retail Onboarding
POST/api/v1/retail/deposit-wallet/execute/submitSubmit a signed deposit wallet batch
Retail Onboarding
POST/api/v1/retail/credentials/preparePrepare a ClobAuth challenge for client signing
Retail Onboarding
POST/api/v1/retail/credentials/submitSubmit a client-signed ClobAuth payload
Retail Onboarding
POST/api/v1/retail/polymarket/signSign order via Privy embedded wallet
Retail Signing
POST/api/v1/retail/agentic/signAllowlisted Polymarket EIP-712 signing
Retail Signing
GET/api/v1/retail/balancesGet combined balances across venues
Cross-venue
GET/api/v1/retail/deposit-addressGet deposit addresses for all venues
Cross-venue
POST/api/v1/retail/transfer/quoteGet cross-venue transfer quote
Cross-venue
POST/api/v1/retail/transfer/executeExecute cross-venue transfer
Cross-venue
GET/api/v1/retail/transfer/status/{tx_hash}Check cross-venue transfer status
Cross-venue

Data models

ErrorResponseHealthResponseReadinessResponseHmacRequestHmacHeadersHmacResponseWalletLinkRequestWalletLinkResponseWalletGetResponseInternalWalletResponseWalletStatusWalletSummaryPropWalletTradingRulesListWalletsResponseOrderDataSignOrderRequestRiskCheckRiskCheckResultsSignOrderResponsePositionSummaryPositionsResponsePnlResponseCreateWalletRequestCreateWalletResponseCreateBotWalletRequestCreateBotWalletResponseRotateBotWalletTokenResponseUpdateWalletRequestUpdateRulesRequestDelegateKeyRequestDelegateKeyResponseDelegationStatusResponseDelegatedSignRequestDelegatedSignResponseOnboardRetailRequestRetailApiCredentialsRetailApiCredentialMetadataOnboardRetailResponseOnboardingStatusOnboardingStatusResponseRetailWalletResponseRetailSignRequestRetailSignResponseAgenticSignRequestAgenticSignResponseApprovalStatusResponseSafeDeployResponseRegisterRetailWalletRequestRegisterRetailWalletResponseSafeCreateSubmitRequestSafeExecuteTransactionDtoSafeExecutePrepareRequestSafeExecutePrepareResponseSafeExecuteSubmitRequestDepositWalletCreateRequestDepositWalletCreateResponseDepositWalletExecutePrepareRequestDepositWalletExecutePrepareResponseDepositWalletExecuteSubmitRequestDepositWalletExecuteSubmitResponseRelayerSubmitResponseCredentialsPrepareRequestCredentialsPrepareResponseCredentialsSubmitRequestCredentialsSubmitResponseBalanceResponseCredentialResetResponseVenueVenueBalanceBalancesResponsePredictionMarketsDepositInfoPolymarketBridgeDepositAddressesPerpsDepositInfoDepositAddressResponseTransferQuoteRequestBridgeEstimateTransferQuoteResponseTransferExecuteRequestTransferExecuteResponseTransferStatusResponseDexPermissionTradingPermissionsResponse
OpenAPI referencev0.2.2Wallets

Omen Wallets Proxy API

Proxy for the Omen Wallets retail API. Authenticates users via JWT (omen-auth) and forwards requests to the internal omen-wallets service. Request and response bodies are passed through verbatim from omen-wallets. **Token amounts** are serialized as raw smallest-unit JSON strings. pUSD, USDC.e, and USDT0 use 6 decimals (e.g. `"1000000"` = 1.00 token).

Environment endpoints

Test environmenthttps://wallets-proxy.test.omen.tradeTest environment
Local developmenthttp://localhost:8080Local development

Authentication

BearerAuthhttpbearer

omen-auth access token (ES256). Claims must include sub, iss=omen-auth, aud=authenticated, pdt=defi.

ServiceSecretAuthapiKeyX-Service-Secret

Service-to-service shared secret. Required only for internal backend routes.

Endpoints

MethodPathSummaryTags
GET/internal/wallet/{user_id}Resolve wallet address for a user
Internal
GET/api/v1/retail/onboard/statusCheck onboarding progress
Retail Onboarding
GET/api/v1/retail/walletGet retail wallet info
Retail Account
GET/api/v1/retail/wallet/balanceGet pUSD balance
Retail Account
GET/api/v1/retail/credentialsGet Polymarket API credential metadata
Retail Account
POST/api/v1/retail/credentials/resetReset Polymarket credentials
Retail Account
GET/api/v1/retail/approvalsCheck token approval status
Retail Account
POST/api/v1/retail/wallet/registerRegister a self-provisioned Privy embedded wallet
Retail Onboarding
POST/api/v1/retail/safe/createSubmit a client-signed SAFE-CREATE deployment
Retail Onboarding
POST/api/v1/retail/safe/execute/preparePrepare a SAFE execute for client signing
Retail Onboarding
POST/api/v1/retail/safe/execute/submitSubmit a client-signed SAFE execute
Retail Onboarding
POST/api/v1/retail/deposit-wallet/createDeploy a Polymarket deposit wallet
Retail Onboarding
POST/api/v1/retail/deposit-wallet/execute/preparePrepare a deposit wallet batch for client signing
Retail Onboarding
POST/api/v1/retail/deposit-wallet/execute/submitSubmit a signed deposit wallet batch
Retail Onboarding
POST/api/v1/retail/credentials/preparePrepare a ClobAuth challenge for client signing
Retail Onboarding
POST/api/v1/retail/credentials/submitSubmit a client-signed ClobAuth payload
Retail Onboarding
POST/api/v1/retail/agentic/signSign venue-generic EIP-712 typed data
Retail Onboarding
GET/api/v1/retail/balancesGet combined balances across venues
Cross-venue
GET/api/v1/retail/deposit-addressGet deposit addresses for all venues
Cross-venue
POST/api/v1/retail/transfer/quoteGet cross-venue transfer quote
Cross-venue
POST/api/v1/retail/transfer/executeExecute cross-venue transfer
Cross-venue
GET/api/v1/retail/transfer/status/{tx_hash}Check cross-venue transfer status
Cross-venue

Data models

AuthErrorResponseErrorResponseRetailApiCredentialMetadataOnboardingStatusResponseRetailWalletResponseBalanceResponseCredentialResetResponseApprovalStatusResponseRegisterRetailWalletRequestRegisterRetailWalletResponseSafeCreateSubmitRequestSafeExecuteTransactionDtoSafeExecutePrepareRequestSafeExecutePrepareResponseSafeExecuteSubmitRequestDepositWalletCreateRequestDepositWalletCreateResponseDepositWalletExecutePrepareRequestDepositWalletExecutePrepareResponseDepositWalletExecuteSubmitRequestDepositWalletExecuteSubmitResponseRelayerSubmitResponseCredentialsPrepareRequestCredentialsPrepareResponseCredentialsSubmitRequestCredentialsSubmitResponseAgenticSignRequestAgenticSignResponseVenueVenueBalanceBalancesResponsePredictionMarketsDepositInfoPolymarketBridgeDepositAddressesPerpsDepositInfoDepositAddressResponseTransferQuoteRequestBridgeEstimateTransferQuoteResponseTransferExecuteRequestTransferExecuteResponseTransferStatusResponse
AsyncAPI referencev0.2.2Wallets

Omen Wallet Service — Aeron Transport

Low-latency binary messaging interface for the Omen Wallet Service over Aeron UDP. The Gateway communicates with the Wallet Service using SBE (Simple Binary Encoding) messages over Aeron channels. This is the primary transport for latency-sensitive signing and HMAC operations. **Monetary values** are encoded as `u128` at 1e18 fixed-point scale.

Environment endpoints

walletServiceaeron-udp://0.0.0.0:40100Wallet Service listener. Configurable via `LISTEN_ENDPOINT` env var. Uses Aeron UDP transport with SBE binary encoding.
gatewayaeron-udp://localhost:40101Gateway endpoint for response delivery. Configurable via `GATEWAY_ENDPOINT` env var.

Channels and messages

walletRequest

aeron:udp?endpoint={walletService}

1 messages

Gateway → Wallet Service request channel. Stream ID: **3000**

walletRequest

walletResponse

aeron:udp?endpoint={gateway}

1 messages

Wallet Service → Gateway response channel. Stream ID: **3001**

walletResponse

Data models

WalletRequestTypeVenueWalletResponseStatusWalletRequestPayloadWalletResponsePayload