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.
| Environment | Availability | REST base URL | WebSocket and MCP |
|---|---|---|---|
| Devnet | Available for development | https://dev.edel-api.xyz | Use the WebSocket and MCP URLs supplied for the same Devnet venue, where enabled. |
| Testnet | Coming soon | https://testnet.edel-api.xyz | Connection details will be confirmed with environment availability. |
| Mainnet | Coming soon | https://mainnet.edel-api.xyz | Connection 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
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.
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.
| Method | Path | Operation | Purpose |
|---|---|---|---|
| GET | /health | getServiceHealth | Get service health |
| GET | /ready | getServiceReadiness | Get service readiness |
| GET | /openapi.json | getOpenApiDocument | Fetch the OpenAPI document |
| GET | /v1/affiliate/availability | getAffiliateAvailability | Get public affiliate availability |
| POST | /v1/orders | placeOrder | Place an order |
| POST | /v1/orders/batch | placeOrderBatch | Place a LIMIT order batch |
| POST | /v1/orders/batch/cancel | cancelOrderBatch | Cancel an order batch |
| POST | /v1/orders/preview | previewOrder | Preview an order |
| GET | /v1/orders/{orderId} | getOrder | Get an order |
| POST | /v1/orders/{orderId}/cancel | cancelOrder | Cancel an order |
| POST | /v1/withdrawals | createWithdrawal | Request a withdrawal |
| GET | /v1/withdrawals/{withdrawalId} | getWithdrawal | Get a withdrawal |
| POST | /v1/withdrawals/{withdrawalId}/authorize | authorizeWithdrawal | Authorize a withdrawal |
| POST | /v1/withdrawals/{withdrawalId}/confirm | confirmDfnsWithdrawal | Confirm an owner-signed withdrawal step |
| GET | /v1/auth/capabilities | getAuthCapabilities | Get authentication capabilities |
| POST | /v1/auth/social/register | initiateSocialAuthRegistration | Start Google/OIDC registration |
| POST | /v1/auth/social/register/recover | recoverSocialAuthRegistration | Resolve a Google registration outcome |
| POST | /v1/auth/register/complete | completeAuthRegistration | Complete DFNS end-user registration |
| POST | /v1/auth/login/init | initiateAuthLogin | Start passkey login |
| POST | /v1/auth/login/complete | completeAuthLogin | Complete passkey login |
| POST | /v1/auth/social/login | completeSocialAuthLogin | Log in with Google/OIDC |
| POST | /v1/auth/mapping/recover | recoverAuthMapping | Recover a DFNS account mapping |
| POST | /v1/realtime/ticket | mintRealtimeTicket | Mint a realtime connection ticket |
| PUT | /v1/realtime/ticket | rotateRealtimeTicket | Rotate a realtime connection ticket |
| DELETE | /v1/realtime/ticket | revokeRealtimeTicketFamily | Revoke a realtime ticket family |
| GET | /v1/markets | listMarkets | List markets |
| GET | /v1/leaderboard | getLeaderboard | Get the projected realized-PnL leaderboard |
| GET | /v1/markets/{marketId} | getMarketSnapshot | Get a market snapshot |
| GET | /v1/markets/{marketId}/stats | getMarketStats | Get market stats |
| GET | /v1/markets/{marketId}/book | getMarketBook | Get the order book |
| GET | /v1/markets/{marketId}/candles | getMarketCandles | Get market candles |
| GET | /v1/market-data/candidate-markets | listMarketDataCandidateMarkets | List market-data candidate markets |
| GET | /v1/accounts/{accountId} | getAccountSnapshot | Get an account snapshot |
| GET | /v1/accounts/{accountId}/positions | getAccountPositions | Get account positions |
| GET | /v1/accounts/{accountId}/positions/history | getAccountPositionHistory | Get account position history |
| GET | /v1/accounts/{accountId}/transfers | getAccountTransferHistory | Get account transfer history |
| GET | /v1/accounts/{accountId}/affiliate/earnings | getAccountAffiliateEarnings | Get affiliate earnings for an account |
| POST | /v1/accounts/{accountId}/affiliate/registration | registerAccountAffiliate | Register an affiliate account |
| GET | /v1/accounts/{accountId}/kyc | getAccountKycStatus | Get account KYC status |
| POST | /v1/accounts/{accountId}/kyc/skip | skipAccountKyc | Skip optional account KYC |
| GET | /v1/accounts/{accountId}/affiliate/profile | getAccountAffiliateProfile | Get an affiliate profile |
| GET | /v1/accounts/{accountId}/fills | getAccountFillHistory | Get account fill history |
| GET | /v1/accounts/{accountId}/orders | getAccountOrderHistory | Get account order history |
| GET | /v1/accounts/{accountId}/orders/open | getAccountOpenOrders | Get live open orders |
| GET | /v2/markets | ccxtV2FetchMarkets | Fetch CCXT markets |
| GET | /v2/markets/{symbol}/stats | ccxtV2FetchTickerAndFundingRate | Fetch a CCXT ticker and funding rate |
| GET | /v2/markets/{symbol}/candles | ccxtV2FetchOhlcv | Fetch CCXT OHLCV |
| GET | /v2/markets/{symbol}/book | ccxtV2FetchOrderBook | Fetch a CCXT order book |
| GET | /v2/accounts/{accountId} | ccxtV2FetchBalance | Fetch a CCXT balance |
| GET | /v2/accounts/{accountId}/positions | ccxtV2FetchPositions | Fetch CCXT positions |
| POST | /v2/orders | ccxtV2CreateOrders | Create CCXT LIMIT orders |
| POST | /v2/order | ccxtV2CreateOrder | Create one CCXT order |
| POST | /v2/orders/{orderId}/cancel | ccxtV2CancelOrder | Cancel one CCXT order |
| POST | /v2/orders/cancel | ccxtV2CancelOrders | Cancel CCXT orders |
| GET | /v2/orders/{orderId} | ccxtV2FetchOrder | Fetch a CCXT order |
| GET | /v2/accounts/{accountId}/orders | ccxtV2FetchOrders | Fetch CCXT orders |
| GET | /v2/accounts/{accountId}/orders/open | ccxtV2FetchOpenOrders | Fetch CCXT open orders |
| GET | /v2/accounts/{accountId}/fills | ccxtV2FetchMyTrades | Fetch CCXT private trades |
| GET | /v2/not-implemented/fetch-trades | ccxtV2NotImplementedFetchTrades | Unsupported CCXT method: fetchTrades |
| POST | /v2/not-implemented/cancel-all-orders | ccxtV2NotImplementedCancelAllOrders | Unsupported CCXT method: cancelAllOrders |
| PUT | /v2/not-implemented/edit-order | ccxtV2NotImplementedEditOrder | Unsupported CCXT method: editOrder |
| GET | /v2/not-implemented/fetch-funding-rate-history | ccxtV2NotImplementedFetchFundingRateHistory | Unsupported CCXT method: fetchFundingRateHistory |
| GET | /v2/not-implemented/fetch-funding-history | ccxtV2NotImplementedFetchFundingHistory | Unsupported CCXT method: fetchFundingHistory |
| PUT | /v2/not-implemented/set-leverage | ccxtV2NotImplementedSetLeverage | Unsupported CCXT method: setLeverage |
| PUT | /v2/not-implemented/set-margin-mode | ccxtV2NotImplementedSetMarginMode | Unsupported CCXT method: setMarginMode |
| POST | /v1/accounts/{accountId}/party/consent | ensureAccountReceiverConsent | Set up receiver-only USD.E consent |
| POST | /v1/accounts/{accountId}/party | initAccountPartyOnboarding | Initiate DFNS-backed Canton Party onboarding |
| GET | /v1/accounts/{accountId}/party | getAccountPartyOnboarding | Get DFNS-backed Canton Party onboarding status |
| POST | /v1/accounts/{accountId}/party/complete | completeAccountPartyOnboarding | Complete DFNS-backed Canton Party onboarding |
| POST | /v1/accounts/{accountId}/local-signing-wallet | createLocalSigningWallet | Create a local signing wallet |
| POST | /v1/accounts/{accountId}/faucet-grant | requestAccountFaucetGrant | Request the account's test funds |
| GET | /v1/accounts/{accountId}/local-signing-funding-intents | listLocalSigningFundingIntents | List owner funding intents |
| POST | /v1/accounts/{accountId}/deposits | prepareLocalSigningDeposit | Prepare a deposit |
| POST | /v1/accounts/{accountId}/deposits/confirm | confirmLocalSigningDeposit | Authorize a DFNS-signed Canton deposit |
| PUT | /v1/accounts/{accountId}/favorites/{marketId} | putAccountMarketFavorite | Favorite a market |
| DELETE | /v1/accounts/{accountId}/favorites/{marketId} | deleteAccountMarketFavorite | Unfavorite a market |
| POST | /v1/agent-connect/start | startAgentConnect | Start connecting an agent |
| POST | /v1/agent-connect/complete | completeAgentConnect | Collect the API key of an approved agent |
| POST | /v1/accounts/{accountId}/agent-connect/approve | approveAgentConnect | Approve an agent for the account |
| GET | /v1/api-keys/current | getCurrentApiKey | Read the authenticated API key metadata |
| GET | /v1/accounts/{accountId}/api-keys | listApiKeys | List the account's API keys |
| DELETE | /v1/accounts/{accountId}/api-keys/{keyId} | revokeApiKey | Revoke an API key |