Olymptrade Flex deals, wallets and KYC fields
Olymptrade – Trading online is Space307's Android trading app for OTC Flex, fixed-time (FTT), FX and SPT tickets. Traders open into live charts with SMA/EMA/MACD-style overlays, place Flex and FTT tickets by choosing a duration and seeing the win percent, run FX positions with stop-loss and take-profit, switch between real and demo wallets, claim bonuses from the offers board, complete Sumsub identity verification, and reach education, marketplace, pay-in and support screens through in-app deep links. It is published as com.ticno.olymptrade and used by retail traders in Brazil, Indonesia, Mexico and India alongside IQ Option, Pocket Option and MetaTrader-style FX desks.
Flex tickets stamp winPercent, amountReal and balanceChangeReal on each expirable fill; FX rows add realizedProfitAndLoss, commissionForSwap and nested stopLossModel. Wallets split amount from bonus, holdDeal and availableFunds. KYC is a two-field gate — status plus kycRestrictionStatus — while the profile keeps registrationCountry, islamic and a public countryId when isPublic is on. Offers carry offerId, promoCode and claimDeeplink.
Reconcilers line wallet realFunds up with ticket P&L, payout desks wait on KYC status, and growth maps promo progress to pay-in deep links. openData Studio turns that wallet, ticket and KYC surface into callable open data.
Screenshots
API surface
The endpoints and request/response examples below are reconstructed from the app's interface — illustrative, not a live capture.
Password login
POST
/v1/sessions/passwordosintSigns the trader in with email and password; invalid_email_or_password is the client error token. The issued access_token is the Bearer for later account, deal and KYC calls.
Auth: Unauthenticated. Body carries email and password; the client identifies itself with an Android app user-agent. The returned session is stored as access_token (lifetime access_token_ttl) and sent on later calls as Authorization: Bearer; a background worker renews it with refresh_access_token.
- password
- access_token
- access_token_ttl
- refresh_access_token
- userId
POST /v1/sessions/password HTTP/1.1 Content-Type: application/json { "email": "[email protected]", "password": "<password>" }{ "access_token": "<access_token>", "access_token_ttl": 3600, "refresh_access_token": "<refresh_token>", "userId": 12004567 }Refresh session
POST
/v1/sessions/renewosintRotates the session without a password re-prompt, returning a fresh access_token, access_token_ttl and refresh_access_token.
Auth: Bearer access_token plus refresh_access_token. A background session-renewal worker posts this call before the access token expires; a separate call renews the app-level token.
- refresh_access_token
- access_token
- access_token_ttl
POST /v1/sessions/renew HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "refresh_access_token": "<refresh_token>" }{ "access_token": "<new_access_token>", "access_token_ttl": 3600, "refresh_access_token": "<new_refresh_token>" }User profile values
GET
/v1/members/meosintLoads the signed-in trader's profile, including registrationCountry and the islamic account flag.
Auth: Authorization: Bearer access_token.
- userId
- currencyType
- registrationDate
- registrationCountry
- userName
- userSurname
- userEmail
- userAvatarUrl
- userPhone
- userPhoneConfirmed
- userEmailConfirmed
- islamic
- birthday
GET /v1/members/me HTTP/1.1 Authorization: Bearer <access_token>{ "userId": 12004567, "currencyType": "USD", "registrationDate": "2024-03-12T09:14:00Z", "registrationCountry": "BR", "userName": "Ana", "userSurname": "Silva", "userEmail": "[email protected]", "userAvatarUrl": "https://cdn.example/avatars/ana.png", "userPhone": "+5511999887766", "userPhoneConfirmed": true, "userEmailConfirmed": true, "islamic": false, "birthday": "1994-06-21" }Trading accounts list
GET
/v1/walletsopenbankingLists real and demo wallets, each with a nested balance object (amount, bonus, payout, holdPayout, holdDeal, availableFunds, realFunds). The app also caches each wallet locally together with its allowed operations.
Auth: Authorization: Bearer access_token.
- id
- currency
- name
- accountStatus
- openedTime
- closedTime
- accountType
- balance
- amount
- bonus
- payout
- holdPayout
- holdDeal
- availableFunds
- realFunds
- refillLimit
- allowedOperations
GET /v1/wallets HTTP/1.1 Authorization: Bearer <access_token>{ "accounts": [ { "id": 881122, "currency": "USD", "name": "Real", "accountStatus": "active", "openedTime": 1710234000000, "closedTime": null, "accountType": "real", "balance": { "amount": 1540.25, "bonus": 50.0, "payout": 12.4, "holdPayout": 0, "holdDeal": 80.0, "availableFunds": 1460.25, "realFunds": 1490.25 }, "refillLimit": 10000, "allowedOperations": ["trade", "withdraw"] } ] }KYC state
GET
/v1/compliance/kyc-statusosintReturns the trader's verification state — status and kycRestrictionStatus — consumed by the verification screens; related calls cover document verification and user interactions.
Auth: Authorization: Bearer access_token. Document capture is handed to a third-party identity-verification provider (Sumsub).
- status
- kycRestrictionStatus
GET /v1/compliance/kyc-status HTTP/1.1 Authorization: Bearer <access_token>{ "status": "verified", "kycRestrictionStatus": "none" }Flex deal history
GET
/v1/tickets/flex/historyopenfinancePages Flex (expirable binary-style) tickets as items with a nextPage cursor. Sister calls cover FTT, FX and SPT history.
Auth: Authorization: Bearer access_token.
- id
- accountId
- accountType
- currencyType
- timeOpenMs
- timeCloseMs
- assetId
- assetTitle
- direction
- quoteOpen
- quoteClose
- amount
- duration
- winPercent
- resultStatus
- proceedBalanceChange
- resultBalanceChange
- amountReal
- amountBonus
- balanceChangeReal
- balanceChangeBonus
- riskFree
- items
- nextPage
GET /v1/tickets/flex/history HTTP/1.1 Authorization: Bearer <access_token>{ "items": [ { "id": 99001122, "accountId": 881122, "accountType": "real", "currencyType": "USD", "timeOpenMs": 1710234100000, "timeCourseOpenMs": 1710234100500, "timeCloseMs": 1710234160000, "assetId": "EURUSD", "assetTitle": "EUR/USD", "assetIconUrl": "https://cdn.example/eurusd.svg", "precision": 5, "isLockedTrading": false, "isClosingInProgress": false, "direction": "up", "quoteOpen": 1.08321, "quoteClose": 1.08354, "amount": 50.0, "isExpirable": true, "duration": 60, "statusExtension": "none", "feeExtension": 0, "durationAdded": 0, "userId": 12004567, "winPercent": 82, "cancelPercent": 10, "resultStatus": "win", "proceedStatus": "settled", "timeCloseDefaultMs": 1710234160000, "quoteStrike": 1.08321, "quoteCurrent": 1.08354, "proceedBalanceChange": 41.0, "resultBalanceChange": 41.0, "riskFree": false, "refunded": false, "winPercentFlex": 82, "amountReal": 50.0, "amountBonus": 0, "balanceChangeReal": 41.0, "balanceChangeBonus": 0, "isAiAnalysisAvailable": true, "durationInitial": 60, "durationTotal": 60, "feeExtensionPaid": 0 } ], "nextPage": 2 }FX deal history
GET
/v1/positions/fx/historyopenfinancePages FX positions with volume, swap commission, realized/unrealized P&L and nested stopLossModel / takeProfitModel.
Auth: Authorization: Bearer access_token.
- id
- accountId
- accountType
- assetId
- direction
- quoteOpen
- quoteClose
- amount
- volume
- displayMultiplier
- status
- closeReason
- realizedProfitAndLoss
- unrealizedProfitAndLoss
- commission
- commissionOpen
- commissionForSwap
- nextSwap
- stopLossModel
- takeProfitModel
- refunded
GET /v1/positions/fx/history HTTP/1.1 Authorization: Bearer <access_token>{ "items": [ { "id": 77003344, "accountId": 881122, "accountType": "real", "currencyType": "USD", "timeOpenMs": 1710235000000, "timeCloseMs": 1710240000000, "timeCourseOpenMs": 1710235000800, "assetId": "GBPUSD", "assetTitle": "GBP/USD", "assetIconUrl": "https://cdn.example/gbpusd.svg", "precision": 5, "isLockedTrading": false, "isClosingInProgress": false, "direction": "buy", "quoteOpen": 1.26410, "quoteClose": 1.26580, "amount": 100.0, "userId": 12004567, "volume": 0.1, "displayMultiplier": 100000, "status": "closed", "closeReason": "take_profit", "closeReasonString": "Take profit", "quoteCurrent": 1.26580, "realizedProfitAndLoss": 17.0, "unrealizedProfitAndLoss": 0, "commission": 0.4, "commissionOpen": 0.2, "commissionForSwap": 0.1, "nextSwap": 0, "stopLossModel": {"limitType": "price", "value": 1.26000}, "takeProfitModel": {"limitType": "price", "value": 1.26580}, "refunded": false } ], "nextPage": null }Money movement history
GET
/v1/ledger/entriesopenbankingLists deposits, withdrawals and bonus credits as transaction rows. The list screen also filters by account, period, status and type.
Auth: Authorization: Bearer access_token.
- uid
- id
- iconUrl
- description
- currencyType
- amount
- type
- status
- createdAt
GET /v1/ledger/entries HTTP/1.1 Authorization: Bearer <access_token>{ "items": [ { "uid": "txn_aa11", "id": 44001, "iconUrl": "https://cdn.example/payin.png", "description": "Card deposit", "currencyType": "USD", "amount": 200.0, "type": "deposit", "status": "completed", "createdAt": 1710200000000 } ] }Demo balance refill
POST
/v1/wallets/demo/top-upopenbankingTops up a demo wallet and returns the post-refill snapshot (balance vs bonusBalance vs availableFunds vs realFunds).
Auth: Authorization: Bearer access_token.
- accountId
- accountType
- balance
- bonusBalance
- availableFunds
- realFunds
POST /v1/wallets/demo/top-up HTTP/1.1 Authorization: Bearer <access_token> Content-Type: application/json { "accountId": 881123, "accountType": "demo" }{ "accountId": 881123, "accountType": "demo", "balance": 10000.0, "bonusBalance": 0, "availableFunds": 10000.0, "realFunds": 10000.0 }Bonus offers list
GET
/v1/promotions/offersopendataLists joinable bonuses with offerId, promoCode, progress and a claimDeeplink into the pay-in screen. Joining and claiming a reward are separate calls; the pay-in deep link carries the offer code.
Auth: Authorization: Bearer access_token.
- offerId
- promoCode
- templateId
- selectedAccountCurrency
- claimDeeplink
- expireTime
- status
- tasks
- progress
- isAvailableToJoin
- iconUrl
GET /v1/promotions/offers HTTP/1.1 Authorization: Bearer <access_token>{ "offers": [ { "offerId": "STAY2TRADE", "promoCode": "STAY2TRADE", "templateId": 25, "selectedAccountCurrency": "USD", "claimDeeplink": "olymptrade://payin?offer_code=STAY2TRADE", "expireTime": 1713000000000, "status": "available", "tasks": [], "progress": 0, "isAvailableToJoin": true, "iconUrl": "https://cdn.example/offers/stay.png" } ] }Public trader profile
GET
/v1/traders/profileosintReturns the trader's public profile — display name, avatar and countryId — when the trader has made the profile public.
Auth: Authorization: Bearer access_token (own profile) or public lookup by user.
- isPublic
- user
- name
- avatarUrl
- countryId
- statistics
GET /v1/traders/profile HTTP/1.1 Authorization: Bearer <access_token>{ "isPublic": true, "user": { "name": "Ana S.", "avatarUrl": "https://cdn.example/avatars/ana.png", "countryId": "BR" }, "statistics": {} }Flex instrument conditions
GET
/v1/instruments/flex/conditionsopendataReturns Flex trading conditions per asset — duration window, winPercent, sentiment and lock flags. Sister condition calls exist for ftt, fx and spt.
Auth: Authorization: Bearer access_token.
- assetId
- assetTitle
- group
- precision
- iconUrl
- iconSvgUrl
- disabled
- isLocked
- isLockedTrading
- isFavorite
- sentiment
- minDuration
- maxDuration
- allowedFastDealsDurations
- winPercent
- isExtendable
- timeOpenTrading
- timeCloseTrading
GET /v1/instruments/flex/conditions HTTP/1.1 Authorization: Bearer <access_token>{ "assetId": "EURUSD", "assetTitle": "EUR/USD", "group": "forex", "precision": 5, "iconUrl": "https://cdn.example/eurusd.png", "iconSvgUrl": "https://cdn.example/eurusd.svg", "disabled": false, "isLocked": false, "isLockedTrading": false, "isFavorite": true, "sentiment": 61, "minDuration": 5, "maxDuration": 3600, "allowedFastDealsDurations": [5, 15, 30, 60], "winPercent": 82, "isExtendable": true, "timeOpenTrading": 1710230400000, "timeCloseTrading": 1710316800000 }
Data categories
- balances
- transactions
- kyc
- trading-history
- offers
Where teams use this data
Wallet vs ticket P&L reconciliation
A bookkeeping bot pulls OtpBalanceModel (amount, bonus, holdDeal, availableFunds, realFunds) then matches FlexDealModel amountReal/balanceChangeReal and FxDealModel realizedProfitAndLoss so demo refill and live ticket settlement stay in one ledger.
KYC gate before payout
A withdrawals desk reads KycStateModel.status and kycRestrictionStatus, then only releases transaction rows whose type is withdrawal and status is completed when KYC is verified.
Promo join and claim tracking
Growth ops maps OfferModel.offerId, promoCode, progress and claimDeeplink against pay-in deep links (offer_code=STAY2TRADE) to see which bonuses actually converted.
Public-profile geo overlay
An OSINT board joins UserDataModel.registrationCountry with PublicProfileUserModel.countryId and the public isPublic flag to chart where traders self-report versus where they registered.
Frequently asked questions
How does Olymptrade split a trading wallet?
Each wallet exposes amount, bonus, payout, holdPayout, holdDeal, availableFunds and realFunds, with real and demo accounts listed side by side. A demo top-up returns the same balance spine plus bonusBalance.
What is on a Flex deal versus an FX deal?
A Flex deal is an expirable ticket: duration, winPercent, quoteStrike, amountReal/amountBonus and balanceChangeReal/balanceChangeBonus. An FX deal is a position: volume, displayMultiplier, realizedProfitAndLoss, unrealizedProfitAndLoss, commissionForSwap, stopLossModel and takeProfitModel.
Which KYC fields does the client keep?
The verification state carries status and kycRestrictionStatus. Document capture is delegated to a third-party identity-verification provider (Sumsub); the app also tracks further verification and user-interaction steps and caches the state on the device.
How is the session kept alive?
Password sign-in issues access_token (lifetime access_token_ttl) and refresh_access_token. A background worker renews the session before it expires, and later calls send the access token as Authorization: Bearer.
Apps similar to Olymptrade – Trading online
- IQ Option – Trading Platform — IQ Option is a Limassol-based online broker, founded in 2013, that trades CFDs on stocks, forex and cryptocurrencies after shifting its focus from binary options.
- Pocket Option — Pocket Option is a web and Android desk for digital-option and forex-style tickets on currencies, commodities and stocks, with a virtual-money demo, copy trading, and express or pending orders.
- MetaTrader 4 Forex Trading — MetaTrader 4 is MetaQuotes' retail forex and CFD terminal, licensed to brokers so traders can stream quotes, chart, and send market or pending orders.
- MetaTrader 5 — Forex, Stocks — MetaTrader 5 is MetaQuotes' multi-asset successor to MT4, covering forex, stocks and futures on desktop, web and Android terminals connected to a broker.
- TradingView: Track All Markets — TradingView is a Supercharts charting and social-markets app for stocks, crypto, forex and futures, with optional order entry through connected third-party brokers rather than its own desk.
- eToro — eToro is a multi-asset brokerage for stocks, ETFs, CFDs and cryptoassets, built around CopyTrader social replication rather than Olymptrade-style fixed-time tickets.
- Investing.com: Stock Market — Investing.com is Fusion Media's quotes, charts and news site for stocks, forex, crypto and commodities — a research tape rather than an execution broker.
Topics
- Olymptrade API
- Olymptrade Flex deal winPercent
- Olymptrade wallet availableFunds
- Olymptrade KYC status
- Olymptrade FX realizedProfitAndLoss
- Olymptrade bonus offers promoCode
- openData Studio
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use