Skip to content
Docs
Developers

Contracts and environments

Choose the right network, configure its endpoints and use compatible API schemas.

Environments and endpoints

Edel Markets has three network environments. Devnet is available for development; Testnet and Mainnet are coming soon. Keep endpoints, credentials and account identifiers within the same environment.

Use https://dev.edel-api.xyz for Devnet REST requests. The Testnet and Mainnet REST hostnames are listed below for configuration planning; a published hostname does not mean that trading or funding is available. Testnet and Mainnet have not launched. Keep the environment selected in the REST console aligned with your credentials.

This documentation site, docs.edel.finance, serves reference material; it is not a trading API base URL. Do not derive WebSocket or MCP hostnames from a REST hostname.
EnvironmentAvailabilityREST base URLWebSocket and MCP
DevnetAvailable for developmenthttps://dev.edel-api.xyzUse the WebSocket and MCP URLs supplied for the same Devnet venue, where enabled.
TestnetComing soonhttps://testnet.edel-api.xyzConnection details will be confirmed with environment availability.
MainnetComing soonhttps://mainnet.edel-api.xyzConnection details will be confirmed with environment availability.

Published API schemas

OpenAPI defines REST endpoints, authentication requirements, request fields, responses and errors. AsyncAPI defines WebSocket channels, message envelopes and payloads. Use these schemas to generate client types and validate incoming data.

Choose versions compatible with your target environment, and check each operation’s availability and account permissions. Unsupported CCXT methods return HTTP 501 NotSupported.

Client compatibility

Client compatibility

100%
Diagram preview

Drag to pan, or use arrow keys when the diagram is focused. Use plus and minus to zoom, and zero to fit. On a touch screen, pinch to zoom.

Use compatible schemas, verify access and establish current state before submitting commands.

Generate REST types from OpenAPI and realtime types from AsyncAPI. Validate received data before applying it to account or market state, and retain the schema version used by each client release.

Requests and responses. Check required fields, response alternatives and error values when upgrading a client.

Realtime messages. Check subscription envelopes, channel access, payload schemas and replay behavior.

Environment and access. Use credentials and identifiers for the chosen environment, then confirm supported operations and account permissions before enabling commands.

API reference and schema downloads

Use the REST API reference and realtime API reference, including the place-order operation.

Download External REST OpenAPI for REST request and response types, and Product-channel AsyncAPI for market and account WebSocket channels. Keep a copy of the schema used to generate your client, and check its compatibility with the chosen environment before enabling commands.

Validate responses and supported assets

Handle the response alternatives and error codes defined for each operation. Validate WebSocket messages before applying them to market or account state. If a response is incompatible with your client, keep the affected state unavailable and follow the documented recovery steps.

Use asset metadata for identifiers and decimal scales, and the account’s funding capabilities to determine which assets it can accept. A response type alone does not establish deposit or withdrawal availability. See asset identifiers and account funding.

REST operation directory

Find REST endpoints for market data, order entry, accounts, authentication and funding below. Check each operation’s credential requirements, request fields and environment availability before integrating. Unsupported compatibility methods return HTTP 501 NotSupported.

MethodPathOperationPurpose
GET/healthgetServiceHealthGet service health
GET/readygetServiceReadinessGet service readiness
GET/openapi.jsongetOpenApiDocumentFetch the OpenAPI document
GET/v1/affiliate/availabilitygetAffiliateAvailabilityGet public affiliate availability
POST/v1/ordersplaceOrderPlace an order
POST/v1/orders/batchplaceOrderBatchPlace a LIMIT order batch
POST/v1/orders/batch/cancelcancelOrderBatchCancel an order batch
POST/v1/orders/previewpreviewOrderPreview an order
GET/v1/orders/{orderId}getOrderGet an order
POST/v1/orders/{orderId}/cancelcancelOrderCancel an order
POST/v1/withdrawalscreateWithdrawalRequest a withdrawal
GET/v1/withdrawals/{withdrawalId}getWithdrawalGet a withdrawal
POST/v1/withdrawals/{withdrawalId}/authorizeauthorizeWithdrawalAuthorize a withdrawal
POST/v1/withdrawals/{withdrawalId}/confirmconfirmDfnsWithdrawalConfirm an owner-signed withdrawal step
GET/v1/auth/capabilitiesgetAuthCapabilitiesGet authentication capabilities
POST/v1/auth/social/registerinitiateSocialAuthRegistrationStart Google/OIDC registration
POST/v1/auth/social/register/recoverrecoverSocialAuthRegistrationResolve a Google registration outcome
POST/v1/auth/register/completecompleteAuthRegistrationComplete DFNS end-user registration
POST/v1/auth/login/initinitiateAuthLoginStart passkey login
POST/v1/auth/login/completecompleteAuthLoginComplete passkey login
POST/v1/auth/social/logincompleteSocialAuthLoginLog in with Google/OIDC
POST/v1/auth/mapping/recoverrecoverAuthMappingRecover a DFNS account mapping
POST/v1/realtime/ticketmintRealtimeTicketMint a realtime connection ticket
PUT/v1/realtime/ticketrotateRealtimeTicketRotate a realtime connection ticket
DELETE/v1/realtime/ticketrevokeRealtimeTicketFamilyRevoke a realtime ticket family
GET/v1/marketslistMarketsList markets
GET/v1/leaderboardgetLeaderboardGet the projected realized-PnL leaderboard
GET/v1/markets/{marketId}getMarketSnapshotGet a market snapshot
GET/v1/markets/{marketId}/statsgetMarketStatsGet market stats
GET/v1/markets/{marketId}/bookgetMarketBookGet the order book
GET/v1/markets/{marketId}/candlesgetMarketCandlesGet market candles
GET/v1/market-data/candidate-marketslistMarketDataCandidateMarketsList market-data candidate markets
GET/v1/accounts/{accountId}getAccountSnapshotGet an account snapshot
GET/v1/accounts/{accountId}/positionsgetAccountPositionsGet account positions
GET/v1/accounts/{accountId}/positions/historygetAccountPositionHistoryGet account position history
GET/v1/accounts/{accountId}/transfersgetAccountTransferHistoryGet account transfer history
GET/v1/accounts/{accountId}/affiliate/earningsgetAccountAffiliateEarningsGet affiliate earnings for an account
POST/v1/accounts/{accountId}/affiliate/registrationregisterAccountAffiliateRegister an affiliate account
GET/v1/accounts/{accountId}/kycgetAccountKycStatusGet account KYC status
POST/v1/accounts/{accountId}/kyc/skipskipAccountKycSkip optional account KYC
GET/v1/accounts/{accountId}/affiliate/profilegetAccountAffiliateProfileGet an affiliate profile
GET/v1/accounts/{accountId}/fillsgetAccountFillHistoryGet account fill history
GET/v1/accounts/{accountId}/ordersgetAccountOrderHistoryGet account order history
GET/v1/accounts/{accountId}/orders/opengetAccountOpenOrdersGet live open orders
GET/v2/marketsccxtV2FetchMarketsFetch CCXT markets
GET/v2/markets/{symbol}/statsccxtV2FetchTickerAndFundingRateFetch a CCXT ticker and funding rate
GET/v2/markets/{symbol}/candlesccxtV2FetchOhlcvFetch CCXT OHLCV
GET/v2/markets/{symbol}/bookccxtV2FetchOrderBookFetch a CCXT order book
GET/v2/accounts/{accountId}ccxtV2FetchBalanceFetch a CCXT balance
GET/v2/accounts/{accountId}/positionsccxtV2FetchPositionsFetch CCXT positions
POST/v2/ordersccxtV2CreateOrdersCreate CCXT LIMIT orders
POST/v2/orderccxtV2CreateOrderCreate one CCXT order
POST/v2/orders/{orderId}/cancelccxtV2CancelOrderCancel one CCXT order
POST/v2/orders/cancelccxtV2CancelOrdersCancel CCXT orders
GET/v2/orders/{orderId}ccxtV2FetchOrderFetch a CCXT order
GET/v2/accounts/{accountId}/ordersccxtV2FetchOrdersFetch CCXT orders
GET/v2/accounts/{accountId}/orders/openccxtV2FetchOpenOrdersFetch CCXT open orders
GET/v2/accounts/{accountId}/fillsccxtV2FetchMyTradesFetch CCXT private trades
GET/v2/not-implemented/fetch-tradesccxtV2NotImplementedFetchTradesUnsupported CCXT method: fetchTrades
POST/v2/not-implemented/cancel-all-ordersccxtV2NotImplementedCancelAllOrdersUnsupported CCXT method: cancelAllOrders
PUT/v2/not-implemented/edit-orderccxtV2NotImplementedEditOrderUnsupported CCXT method: editOrder
GET/v2/not-implemented/fetch-funding-rate-historyccxtV2NotImplementedFetchFundingRateHistoryUnsupported CCXT method: fetchFundingRateHistory
GET/v2/not-implemented/fetch-funding-historyccxtV2NotImplementedFetchFundingHistoryUnsupported CCXT method: fetchFundingHistory
PUT/v2/not-implemented/set-leverageccxtV2NotImplementedSetLeverageUnsupported CCXT method: setLeverage
PUT/v2/not-implemented/set-margin-modeccxtV2NotImplementedSetMarginModeUnsupported CCXT method: setMarginMode
POST/v1/accounts/{accountId}/party/consentensureAccountReceiverConsentSet up receiver-only USD.E consent
POST/v1/accounts/{accountId}/partyinitAccountPartyOnboardingInitiate DFNS-backed Canton Party onboarding
GET/v1/accounts/{accountId}/partygetAccountPartyOnboardingGet DFNS-backed Canton Party onboarding status
POST/v1/accounts/{accountId}/party/completecompleteAccountPartyOnboardingComplete DFNS-backed Canton Party onboarding
POST/v1/accounts/{accountId}/local-signing-walletcreateLocalSigningWalletCreate a local signing wallet
POST/v1/accounts/{accountId}/faucet-grantrequestAccountFaucetGrantRequest the account's test funds
GET/v1/accounts/{accountId}/local-signing-funding-intentslistLocalSigningFundingIntentsList owner funding intents
POST/v1/accounts/{accountId}/depositsprepareLocalSigningDepositPrepare a deposit
POST/v1/accounts/{accountId}/deposits/confirmconfirmLocalSigningDepositAuthorize a DFNS-signed Canton deposit
PUT/v1/accounts/{accountId}/favorites/{marketId}putAccountMarketFavoriteFavorite a market
DELETE/v1/accounts/{accountId}/favorites/{marketId}deleteAccountMarketFavoriteUnfavorite a market
POST/v1/agent-connect/startstartAgentConnectStart connecting an agent
POST/v1/agent-connect/completecompleteAgentConnectCollect the API key of an approved agent
POST/v1/accounts/{accountId}/agent-connect/approveapproveAgentConnectApprove an agent for the account
GET/v1/api-keys/currentgetCurrentApiKeyRead the authenticated API key metadata
GET/v1/accounts/{accountId}/api-keyslistApiKeysList the account's API keys
DELETE/v1/accounts/{accountId}/api-keys/{keyId}revokeApiKeyRevoke an API key