Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 201 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Kiiex, powered by KiiChain

Learn

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Tokenomics

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

CONNECT TO KIIEX

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Users

These calls correspond roughly to the Users function of the Exchange Admin and Admin Guide.

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

What is KIIEX?

KIIEX is a hybrid centralized-decentralized exchange platform designed for on-chain FX trading, cross-border payments and finance solutions.

What is KIIEX

KIIEX is an on-chain FX desk powering global payments, trading and finance solutions in an easy to use platform designed for everyone. Users, businesses or builders can use KIIEX by signing up for an account or connecting to APIs. KIIEX differs from other traditional platforms by its hybrid approach of sourcing liquidity and maintaining balances on-chain exposed to local currencies. KIIEX supports fiat swaps and payins/payouts via the pricing of local, non-dollar stablecoins and other tokenized real-world assets.

Hybrid Matching Engine

At the core of KIIEX is a hybrid matching engine that is able to source on-chain liquidity across any blockchain ecosystem while using centralized pricing to hedge and rebalance on-chain positions. The result is a ultra-liquid layer that can operate 24/7 on certain pairs that only have liquidity during traditional business hours.

Ramps

KIIEX has a full suite of on and off ramps enabling instant payins and payouts from its system. These ramps are both UI and API enabled with the ability to disperse directly or to third-pary accounts while remaining 100% compliant.

Connect to APIs

KIIEX has developed a suite of APIs that embed all centralized and decentralized functionalities into a single set of APIs that any application can use. For more informaiton on the APIs, visit:

KYC / AML

KIIEX is fully compliant within each jurisdiction. Users must adhere to KYC and AML standards and requirements.

KIIEX APIs

What is KiiChain?

KiiChain is the first FX layer 1 AppChain built for stablecoins and RWAs. KiiChain empowers users, developers and businesses who are building the future of finance in emerging markets.

What is KiiChain?

KiiChain is a layer 1 blockchain built with the Cosmos SDK. It is an AppChain built as an abstraction layer for utility and liquidity for stablecoins and RWAs. It blends EVM compatibility with multi-chain connectivity to create a network that is highly interoperable, scalable and easy to use. Its design purpose is to onboard the next generation of developers in emerging markets who are building the best use-cases for real-world users.

KiiChain Powers KIIEX

KIIEX is a cross-border payment and trading platform bringing institutional liquidity and immediate settlement to the most popular FX and RWA pairs using non-dollar stablecoins.

Cosmos SDK

Comet BFT & Tendermint Core

Proof-of-Stake

KiiChain is a Proof-of-Stake blockchain. PoS selects validators based on the number of tokens they hold and are willing to "stake" as collateral for servicing and securing the network. Delegators, or individual "stakers", can delegate their tokens to any specific validator that meets the requirements.

Kii RWA Protocol

The Kii RWA Protocol sets standardization of Real World Asset (RWA) tokenization through the T-REX (Token for Regulated EXchanges) protocol using CosmWasm smart contracts on KiiChain that are simultaneously mirrored to ERC tokens. The T-REX protocol is designed for compliant issuance and management of security tokens on blockchain networks. Apart from token standards, the protocol defines on-chain KYC, KYB and asset verification. The Kii RWA protocol on KiiChain is creating an interoperable unified liquidity layer for RWA tokens.

Kii Payfi Module

The Kii PayFi Module is a gas-optimized payment system for merchant transactions with specialized fee handling along with a Paymaster System to grant gas funds for DeFi actions via protocols. The module is developed for both web3 and web2 companies to incentivize the migration of their revenue and payment models to on-chain functions. Included in the module, is a Defi protocol that sets standards for TVL based loans, collateral management, interest models, and liquidity systems. Advanced features include revenue lending, invoicing financing, payment scheduling and TVL based credit card financing through community Payfi pools. This module is still in development and will be deployed in the coming weeks.

EVM Module

The EVM module allows for mirrored EVM compatibility and for smart contracts to be deployed in Solidity to the network. This means it can run all existing Ethereum dApps and smart contracts without needing any changes. It achieves this with a high-performance Ethereum Virtual Machine (EVM) that is optimized for speed and reliability. Thanks to its modular, plugin-based design, it allows any host blockchain to execute Ethereum transactions and smart contracts.

IBC

The Cosmos SDK is an open-source framework for building multi-asset public Proof-of-Stake (PoS) blockchains, like the Cosmos Hub.The goal of the Cosmos SDK is to allow developers to easily create custom blockchains from scratch that can natively interoperate with other blockchains. We envision the Cosmos SDK as the npm-like framework to build secure blockchain applications on top of CometBFT. SDK-based blockchains are built out of composable modules, most of which are open-source and readily available for any developers to use. The Cosmos SDK is a capabilities-based system that allows developers to better reason about the security of interactions between modules. Learn more about Cosmos .

Comet BFT (Byzantine Fault Tolerant) is the upgraded version of Tendermint Core, the Interchain's consensus mechanism that powers Cosmos SDK blockchain systems. Comet BFT has a modular architecture that separates the consensus engine from the application layer, allowing developers to build custom blockchain applications easily. It offers fast transaction finality and high throughput, making it ideal for applications that require quick and reliable performance. Learn more about Comet BFT .

Inter-Blockchain Communication is a protocol that allows for cross chain communication and data transfers. It connects different blockchain networks to promote high levels of interoperability, scalability and communication. IBC can be implemented to any blockchain network as long as it conforms to its protocol guidelines. Currently, there are over 100 networks integrated into IBC. Read more about IBC .

here
here
here

KiiChain

A background on why we're relentlessly building every day.

About Kii

A lot has transpired since Satoshi’s whitepaper announcing the arrival of Bitcoin in 2008 as Bitcoin has become the digital gold standard and is positioning itself as the reserve currency of the world. In 2013, Ethereum established itself as the leader in layer 1 infrastructure, initiating the cycle of growth among web3 businesses. Since then, over 1 million tokens have been publicly launched, each with their unique focus.

The growth of each project has a common theme within the technology: Communication. Blockchain infrastructure connects users in ways never before, eliminating a centralized counterparty needed to facilitate that connection, and instead proposes changes to the architecture enabling decentralization as the preferred means of communication. Even though this change has prompted user adoption globally, there remains gaps in the technology that adjust to specific market and cultural conditions in emerging economies.

In developing countries, the current transfer of value mechanisms that connect emerging economies to developed economies are overly centralized, slow and costly. It's determined to be why emerging economies in the last 25 years have yet to “emerge”. These transfer of value networks have failed to improve globalization and local commerce in an efficient way, connecting important economic counterparts in order to create uniformity in how they communicate.

Although economically a very large industry, emerging markets don't just thrive on remittances from users aboard. Their economies are normally derived from production locally. Whether its natural resources and commodities, exports of goods, imports for raw materials for production of those goods, the necessity for a dedicated, open-sourced, unified liquidity layer is clear given that the B2B market is 10x+ the size of consumer remittances with higher average volumes and transactions. Faster fiat settlements, safer FX solutions, and access to international credit terms are only a few of the current existing pain-points.

KiiChain is unwaveringly committed to delivering high-performance, interconnected, and ultra-secure blockchain solutions as a driver in economic development in emerging markets in an effort to improve communication and globalization. At the heart of our technological prowess is the CometBFT mechanism, a solution for problems that exist in the economy, particularly emerging economies and Latin America. However, more than just a blockchain, Kii Global has built an infrastructure ecosystem of solutions designed to unify blockchain liquidity and its participants, in an effort to directly solve some of the biggest economic challenges in the region.

Roadmap

Where we've been and where we're going.

2022:

Inception. Internal building. OTC trading.

2023:

Q1: KiiChain Dev Net.

Q3: KIIEX Beta was launched, testing trading and payments in mainnet in a whitelisted environment (over $50m in total volume). Achieved positive EBIDTA and net margin.

2024:

Q2: KIIEX left beta and launched mainnet with multi-varied APIs and a suite of other features. KIIEX onboarded over 200 enterprise clients with access to over 200k in users.

2025:

Q1 & Q2:

  • Public sale, listing and mainnet.

  • PayFi module integration with mainnet.

  • KIIEX version 2.0 will be released with new UI/UX and third party ramp features.

  • KIIDEX integration into KIIEX with listing of RWA products.

  • DASP license in El Salvador for both KIIEX and KiiChain.

  • IBC and Wasm upgrades.

  • ICS module with dual staking.

Q3:

  • PayFi module fiat rail integrations and expansions. Connect to local payment gateways in target markets.

  • Kii RWA protocol dApp that lets users manage cross-chain transfers of their RWA tokens.

  • KIIEX API integrations for 30+ countries.

  • KIIEX Debit and Credit cards (with lend-borrow financing).

Q4:

  • Payfi financing protocol (ecosystem partnership) integrated with the Payfi module register profiles to extend credit to web2 and web3 companies and users.

  • On-chain invoice factoring and financing.

  • SVM module.

Q2: KIIEX build started from our OTC operation to scalable technology ().

Q4: Kii Mobile wallet was developed for version 1 of testnet ().

Q1: KiiChain Testnet V1 was developed and launched with the cosmos SDK ().

Q3: KiiChain Testnet V2 upgrades featuring an EVM module and other tools ).

Q4: Started KiiChain Testnet V3 upgrades with new EVM module, RWA protocol, Oracle and Payfi modules. This is the last version and repo that will be continuously evolving into mainnet ().

Incentivized testnet, XP and Oro rewards, featuring on-chain tasks and partnerships ().

https://k
iiex
App Store Reference
kii Github
(kii2 Github
kiichain Github
https://kiichain.io/testnet

Vision of KiiChain

Our vision of what and why we are building relentlessly everyday.

FX settlement layer for Stablecoins and tokenized Real-World Assets

KiiChain is a supercharged unified liquidity network for international trade, finance and payments – specifically built for emerging markets. It seamlessly melds with prevailing payment infrastructures, aiming to alleviate the exorbitant costs and reduce barriers in global economic transactions. Unlike other monolithic blockchain layers, KiiChain is purpose-built for emerging markets and “last mile” integrations into local economies, breathing life into previously liquidity-constrained sectors that cannot financially communicate with the rest of the world.

The blockchain rides on the back of the CometBFT consensus mechanism built with the Cosmos SDK - a testament to its decentralization and commitment to achieve lightning-fast finality and minuscule network fees. Primarily, its design suits the daily exigencies of emerging economies, taking into account the wealth imbalances that exist. KiiChain’s Comet consensus mechanism boasts supercar-fast validators that produce blocks in seconds, allowing for instantaneous cross-chain settlement times and a fee on the network less than one peso.

The Kii blueprint saw expansion within its product and app suite, incorporating custom on-chain protocols and modules to allow any user, builder or business to connect directly to the network. KiiChains flagship native app, KIIEX, is a hybrid centralized-decentralized exchange specifically conceptualized for liquidity assimilations in RWA and payment settlement. KiiChain is amplified by a series of protocols and modules that provide interconnectivity between Ethereum, Solana, Cosmos and more – providing unified access to tradeable assets across ecosystems on one network.

The product suite provides institutional infrastructure and liquidity, connecting global players to local operators. KiiChain is EVM compatible and supports smart contracts in both Solidity and Rust. It’s a permissionless ecosystem for open finance, where web2 and web3 developers can build a wide variety of dApps and protocols.

Evergreen Model

KII has designed a sustainable rewards model where network participants can reap the rewards of the Kii Global suite of products.

Kii Global believes in a true non-inflationary environment for Kiichain that does not mint or burn tokens. However, in common PoS blockchains, minting features are popular to be able to cover the staking pool and its rewards.

In order to compensate for this, Kiichain has instituted an "evergreen" model where 5% of the cash flow of Kii Global's overall activity will be diverted to purchase coins in the market to replenish the rewards pool.

This is possible because Kii Global's real world use business model is already functioning, producing positive cash flow as an organization. This feature will be implemented 90 days after launching the token publicly, where earnings from the first 90 days will be sent to the lead market-maker in order to execute the trade and replenish KII into the staking pool.

Whitepaper

The latest version of the KiiChain Whitepaper.

Intro Coin Details

Coin Details

Detail
Amount

Ticker

KII

Max Supply

1,800,000,000

Initial Circulating Supply

180,000,000

No minting or burning.

Coin Unlocking Schedule

Utility

KII's value is derived from its Utility rather than a speculative investment. Here are the utility use cases for KII, outlining its value in the real-world and to the network.

  1. KIIEX Benefits: KII holders will have reduced trading fees and cash-in/cash-out rates within the ecosystem. Users who remit funds in KII will have priority to liquidity and rates, especially within our ecosystem of partners.

  2. KIIEX Incentives: KII will be used to create incentives for on-chain PayFi liquidity pools, designed specially to incentivize stablecoin liquidity when creating pools on the less demanded side of the trade. (ie: USDT / COP – higher need for COP liquidity than USDT liquidity, therefore those that create COP liquidity pools will receive KII incentives and greater spreads).

  3. Payment for the use of the KiiChain RWA protocol: Payment for use of the RWA protocol and “unified liquidity” swaps to over 100+ networks will be in KII token relative to bps on total AUM of for permissioned tokens. Example: 10bps of the nominal asset value paid in KII from the liquidity sourced from an RWA purchase.

  4. Pricing of Assets on KIIEX: Tokenized commodities and products can be priced in KII to create instant/easier liquidity in our hybrid CEX/DEX from native liquidity pools.

  5. Collateral: KII will be used as a collateral on DeFi apps, liquid staking, lending, and futures settlement.

  6. Staking: KII is required for validators and delegators to participate in the network. KII is the only token eligible for validating and delegating in KiiChain.

  7. Rewards: KII is rewarded to validators and delegators for their service to the network.

  8. Gas fees: KII is used for transaction fees. All transactions such as deployment of new smart contracts, creation of user accounts, or token transfer, require the payer to pay transaction fees in KII.

  9. Governance: KII will be used for voting on future protocol and ecosystem development once the blockchain migrates to open governance.

Use Cases

Use cases are economy-centric, real world models currently in use. Kii is developing technological solutions to solve the current problems within each niche.

Stablecoin FX powerhouse

Traditional FX operations are hindered by TradFi banking hours (often times 8am to 1pm local). Essentially, only 25% of the day, on business banking days, can businesses or users engage in FX operations. Users can now engage in compliant, fast and affordable FX transactions on KiiChain and receive their funds real-time.

Unified Liquidity for Trading and Payments

Liquidity is often fragmented among several different blockchain ecosystems. This causes headaches for users who need to manage different balances and wallets among different ecosystems. Direct bridging from each network can be slow, costly and difficult for users who don’t understand web3 architecture. KiiChain partners with protocols to create an interoperable liquidity layer that can deliver seamless cross-chain experiences to users of all types.

Tokenization of Commodities (RWA)

Commodities are among the most valuable and traded goods in the world with major reserves being mined and developed in emerging countries. Local companies can now tokenize their commodities and contracts, pricing them in Kii or a native asset to their project, and create instant liquidity on a global scale.

Tokenization of Products (RWA)

Imported and exported goods are one of the major drivers of GDP within Latin America and emerging economies. Many multinational companies in the region struggle to process funds and manage liquidity reserves. These products can be tokenized and transacted on the blockchain for users to transact with these goods, and for companies to better manage their reserves.

Tokenization of Real Estate (RWA)

Asset fractionalization and ownership is becoming more imperative than ever before in markets with wealth fragmentation, high inflation and high interest rates. Real estate and asset infrastructure fractionalization allows users to own yield bearing, inflation protected, assets that cannot be owned by these users in whole. By democratizing the ownership process, liquidity can extend to other markets and users who would not otherwise have access prior.

Tokenization of Debt and Equities (RWA)

Public equities, debt instruments, or exchange traded funds that are trading on traditional exchanges can be tokenized to expand, democratize and fractionalize their access cross-border, to individuals who do not have access to these opportunities.

DeFi Lending and Borrowing for Open Credit System

Credit is a huge issue in developing countries with strict underwriting standards, toxic level interest rates and lack of available capital. DeFi lending will provide secure ways for users in developed countries to extend safe credit terms to participants in emerging markets.

Payment Finance

Businesses and users in developing countries lack formal communication with payment processors abroad. Payment finance is a model that allows local businesses to bring their economic activity on-chain and receive financing that supports their core businesses, primary payment services activities.

Credit Finance

Emerging markets suffer from a multi-trillion dollar credit gap. When businesses can bring their economic activity on-chain, they open themselves up to the world of lending and competitive interest rates. Businesses or users who could not previously receive credit from local institutions, can now communicate with lenders abroad.

Spot and Forward Settlement

The B2B remittance market transacts over hundreds of billions USD annually. These importers and exporters either win or lose on spot or forward contract settlements. By each counterparty posting liquidity via a smart contract on the blockchain, users can eliminate losses by sharing in any FX swings.

Set Up KIIEX Account

Start trading and using KIIEX's payment rails in Latam

  1. When setting up your account, it is important to confirm your email before logging in for the first time.

  1. Once you've created your account and logged in successfully, you need to complete KYC by clicking your account profile in the top right corner -> settings -> Verification Level.

Click "Increase to Level 1" and have a government-issued ID ready before you start. Make sure your photos are clear and eligible before you submit the required documents/photos. Please wait 1 minute and let the system verify your identity before you try again.

  1. Secure your account with 2FA by going to your profile in the top right -> Settings -> Profile & Security -> Two-Factor Authentication.

We recommend using Google Authentication to secure your account. Never share your codes with anyone. KIIEX will never ask you for your password or 2FA codes.

Set up your account at or login to an existing account at .

Kiiex Signup
Kiiex Login

Get a Wallet

Get a wallet for KiiChain Testnet Oro

Explorer App (best option for builders)

Connect your Keplr or MetaMask wallet to the explorer app to stake KII into a validator or to help launch a full node/validator.

Web Wallets

Connect to our web wallet using Keplr or Metamask.

Mobile Wallets

Download and set up our Kii Mobile wallet from the App Store or Google Play. Mobile apps allow users to send and receive KII and stake their KII to a validator of their choice.

Connect Wallet to Explorer App

Connect your wallet to the KII interactive explorer and start staking.

Step 1: Make sure you have installed the MetaMask or Keplr browser extension.

Step 2: Launch the Explorer App and Connect your Wallet to Testnet Oro.

If you have the MetaMask extension installed in your web browser, it should automatically connect the RPC endpoints.

It will then ask for approval to switch the network from Ethereum (default) to Kiichain Testnet. Click the "Switch Network" button.

Following, it will ask to link with your new wallet address. Click "Next".

Lastly, it will ask for wallet permissions. Click on "Confirm".

Awesome! Your wallet is now connected to the explorer app! Deposit testnet tokens in your address to delegate to the validator.

Step 3: Get testnet tokens.

Go to Metamask.io and download and install the web extension browser. Make sure the web extension is from or . During testnet, if you do not have MetaMask installed first, you will receive this error.

Go to and make sure you are connected to the "Testnet Oro" network by selecting the dropdown in the top right.

For setting up a web wallet, see "". Once your wallet has been created, you can link it to the explorer app by clicking the wallet icon in the top right corner.

Testnet tokens can be found on the faucet page in the explorer or requested in the discord. For more information, see here: .

MetaMask
Keplr
https://explorer.kiichain.io
Set Up a Web Wallet
t
Testnet Faucet Commands
515KB
KiiChain Whitepaper.pdf
pdf

Connect to KIIEX APIs

KIIEX is a B2B payment app and CEX within the ecosystem.

Create a relationship with the KIIEX team to open an account and start accessing institutional liquidity.

Set Up a Web Wallet

Set up a wallet using MetaMask or Keplr with a web wallet for Testnet Oro. Its important to use a wallet compatible to your browser.

Step 1: Install MetaMask Extension

Step 2: Create your wallet

Once the download has been completed, a prompt will appear, click "Create a new wallet" to begin.

Create a password that will control access to your account via the extension.

Create, record, and properly store your wallet secret phrase. This step is very important as these 12 words are your secret keys to your wallet.

Awesome, nice work! Your wallet has been created. Make sure you store your keys in a safe place!

Step 3: Link your wallet to the KiiChain Testnet.

Wallets like MetaMask and Keplr can be manually connected to various testnets. MetaMask supports EVM-compatible blockchains, and at default, is set to the Ethereum network. You will need to manually connect to the KiiChain network.

The link can be done though multiple sources:

Manually setting the wallet

Click the "Ethereum Mainnet" dropdown bar on the top left and then click "Add Network" on the pop-up box.

Manually add the following testnet chain ID to add the network.

Subject
Value to Insert

Network name

Kiichain Testnet Oro

New RPC URL

Chain ID

1336

Currency symbol

KII

Block explorer URL

Upon saving and completion, you should be connected to the testnet network!

Go to Metamask.io and download and install the web extension browser. Make sure the web extension is from .

Now, get some testnet tokens by following the instructions: .

MetaMask
Kiichain Testnet Page
Explorer App
Chain lists
Testnet Tokens
https://json-rpc.dos.sentry.testnet.v3.kiivalidator.com/
https://explorer.kiichain.io/testnet

Contact OTC Desk

Are you a high volume trader or corporate client and would like access directly to the KIIEX white glove service?

Please send an email to "compliance@kiiglobal.io" with the following information to begin onboarding.

  1. Email address with fully verified KIIEX account.

  2. Corporate formation documents.

  3. Tax ID documents.

  4. Shareholder composition or capitalization table.

An onboarding analyst will contact you about your application and next steps.

Benefits:

  1. Private group chat with direct access to the trading team.

  2. Assigned private trader for executing block trades.

  3. Tech support for building on Kii or KIIEX APIs.

  4. More competitive spreads and fees.

Introduction

This API covers the User-category calls in version 3.3 of the KIIEX exchange software. It includes calls required for log-in and authentication.

New endpoints

3.4.1

  • RegisterNewDevice

  • GetUserDevices

  • GetValidate2FARequiredEndpoints

  • Validate2FA

3.5.0

  • GetAllAccountsConfigs

  • GetOMSFeeTiers

  • GetAllOpenTradeReports

  • SubscribeBlockTrades

  • UnsubscribeBlockTrades

Revised Calls 3.5.0

Support for additional fields has been added to the following requests:

  • GetAccounts

  • SubmitBlockTrade

  • ModifyOrder

Additional fields have been added to the following responses:

  • GetWithdrawFormTemplateTypes

  • SubmitAccountLedgerEntry

  • GetAllLedgerEntryTickets

  • GetOpenWithdrawHolds

  • GetOrderStatus

  • TransferFunds

  • GetLevel1 / Level1UpdateEvent / SubscribeLevel1

Kii Ambassadors

Become a Kii Ambassador

What does it mean to become a KiiAmbassador?

Welcome to the KiiAmbassadors Program, our exclusive initiative to spotlight and reward the most committed voices in the KiiChain community.

This is not just a title — it's a role of influence and responsibility, for those who believe in our vision and want to help us grow the project both on-chain and online.

KiiAmbassadors are selected community members who:

  • Amplify our core messages on Twitter and other platforms.

  • Stay active and helpful in Discord.

  • Help bring new users to the chain and nurture the community spirit.

  • Represent the KiiChain brand publicly, respectfully and consistently.

Your core responsibilities

To maintain your role, we expect:

  • Engage weekly in the Kii Discord, especially in public channels.

  • React, share, and comment on KiiChain’s official posts on Twitter.

  • Participate in the weekly tasks, shared in this channel.

  • Help grow the community by inviting new users or explaining Kii to newcomers.

  • Report scams or malicious behavior to the mod team.

  • Suggest strong candidates who could join the program in the future.

Participation perks

Ambassadors who complete tasks consistently and with high quality may receive:

  • XP for the airdrop, redeemable for $KII at Mainnet launch

  • Monthly raffle for top ambassadors with prizes in USDT

  • GigaAmbassador role, which grants an airdrop multiplier

  • Shoutouts on our official socials and Discord

  • Access to exclusive giveaways

  • Special Q&A sessions with the KiiChain Core Team

  • Early access to new features, tools, and campaigns

  • Promotional content kits (logos, graphics, memes, templates)

Points system and performance

To ensure fairness and reward real contribution, we have created a Points System to track all ambassador activities. Each action, such as retweeting, commenting, participating in Discord, creating original content, or attending events, will earn you points.

At the end of each month, top-performing ambassadors will be rewarded based on their accumulated points.

Our mod team will also share a weekly form where you can submit proof of your participation and activities, ensuring your points are correctly assigned.

In the table below, you can see how the points system is structured.

How to lose the role

We reserve the right to revoke the role if:

  • You spread FUD or attack the KiiChain project or team.

  • You share scam links or break Discord’s rules.

  • You leak confidential information or early announcements.

  • You remain inactive without justification for a prolonged period.

  • You repeatedly ignore or skip assigned tasks.

Evaluation process

Every 30 days, the KiiChain team will evaluate ambassador activity based on:

  • Task completion

  • Quality of participation

  • Alignment with community values

Members who don’t meet the standards may be removed from the program to make room for new voices.

This program will evolve over time with new challenges, perks and surprises. Stay active, stay curious, and keep pushing KiiChain to new frontiers.

Revised calls

Revised Calls 3.4.1

SendOrder

Request Payload changed for Market Buy Value - if Buy order and Value (decimal) parameter is supplied, the Market order will execute up to the value specified.

GetExchangeServiceIds

Old GetExchangeServiceIDs Response An array of strings representing service ids.

New GetExchangeServiceIds Response Array hard coded with a single entry: "Matching Engine"

GetExchanges

Old GetExchangeServiceIds Response A list of exchanges within a specified exchange service id.

New GetExchangeServiceIds Response Retrieves exchanges from "THE" mathcing engine as there can only ever be one as of 3.4

Validate2FA

Behavior change, no longer has public permissions specified.

AddInstrument (DEPRECATED)

Behavior change, endpoint returns with bad request message specifying the endpoint is deprecated.

UpdateInstrument (DEPRECATED)

Behavior change, endpoint returns with bad request message specifying the endpoint is deprecated.

RemoveOperatorUser

Behavior change from “Deprecated” to “Remove Association of Operator with User"

Getting Started

An introduction and important links.

KiiChain Testnet Oro

Oro Testnet is the final upgraded testnet before mainnet. Users and builders can interact and build with this testnet's latest features. Oro testnet will also run incentivization programs.

For on-chain activities, activations, airdrops and more, join our open testnet here:

Get a wallet in Testnet

Testnet Oro supports wallet connections with EVM and Cosmos based wallets like MetaMask and Keplr . To set up a wallet, make sure you have the MetaMask or Keplr wallet extension downloaded in your web browser. MetaMask supports extension downloads for the following web browsers: Chrome, Firefox, Brave, Edge and Opera. Kelpr supports wallets in Chrome, Firefox and Edge.

Get Testnet tokens

The command for requesting tokens in our Discord faucet channel is:

Example EVM:

Example Cosmos Address:

The full list of commands are:

List commands:

Request tokens:

Query an address balance:

Query a transaction:

Query the faucet and node status:

Query the faucet address:

How to stake your tokens

Tokens can be staked in the Explorer App by connecting your wallet and delegating to an active validator. Make sure the wallet you have connected to the Explorer App is funded with tokens.

Connect wallet to Explorer App

Developer resources

Quick start links:

Chat with us on Discord

General customer service and developer support are available in our channel. Get to know us.

You can find us on Discord:

How to earn airdrops and rewards

We’re constantly running localized airdrops, hackathons, and competitions in our community.

Follow our X account and stay up to date with all announcements. For additional communities, visit our communities at Galxe, Zealy, TaskOn, and QuestN.

Behavior Changes

API Behavior Changes

Any query APIs that return these objects now have the below new fields and response value changes as listed.

AccountPosition

OrderTrade

AccountInstrumentStatistics

VerificationLevelInstruments

AccountStatistics

VerificationLevelProducts

OMSInfo

Fee

Instrument

You can apply to join the Ambassadors Program through the official KiiChain Discord:

For further explanation of how to set up your wallet, follow the steps or connect your testnet wallet to our explorer app automatically by following the steps .

Testnet Oro tokens are available in our or in the Explorer App. Once you have created a wallet, you can automatically request and receive 2,500 tokens within a 24 hour period. For any developers who would like more tokens, please request a bulk amount in our Discord channels. \

The Explorer App can be automatically connected to MetaMask or Keplr via the RPC endpoints. Once you have installed the MetaMask extension, follow the steps to connect your wallet and begin delegating.

If you’re a developer and are interested in building with KiiChain, a good place to start is reviewing the introduction information .

We’re active on our Discord. Whether you have questions regarding a hackathon or airdrop competition, or simply would just like to chat and build with us, join our discord .

Key
Value
Key
Value
Key
Value
Key
Value
Key
Value
Key
Value
Key
Value
Key
Value
Key
Value
https://discord.gg/kiichain
[
    {
        "Name": "V2ExchangeCore|1",
        "ServiceId": "Matching Engine"
        "URI": null
    }
]
$request {address}
$request Ox12345abcde…
$request kii12345abcde…
$help
$request [kii address]
$balance [kii address]
$tx_info [transaction hash ID]
$faucet_status
$faucet_address

NotionalHoldAmount

decimal. Cross Product Amount on Hold from open orders

NotionalRate

decimal. Current notional rate from base currency

TotalDayDepositNotional

decimal. Total Calendar Day Deposit Notional

TotalMonthDepositNotional

decimal. Total Calendar Month Deposit Notional

TotalDayWithdrawNotional

decimal. Total Calendar Day Withdraw Notional

TotalMonthWithdrawNotional

decimal. Total Calendar Month Withdraw Notional

CounterPartyClientUserId

int. Indicates counterparty source of trade (OMS, Remarketer, FIX)

NotionalProductId

int. Notional product the notional value was captured in

NotionalRate

decimal. Notional rate from base currency at time of trade

NotionalValue

decimal. Notional value in base currency of venue at time of trade

NotionalProductId

int. Notional product the notional value was captured in

DailyNotionalTradeVolume

decimal. Total Calendar Day Trading Notional

MonthlyNotionalTradeVolume

decimal. Total Calendar Month Trading Notional

YearlyNotionalTradeVolume

decimal. Total Calendar Year Trading Notional

NotionalProductId

int. Notional product the notional value was captured in

DailyNotionalLimit

decimal. Total Calendar Day Trading Notional

MonthlyNotionalLimit

decimal. Total Calendar Month Trading Notional

YearlyNotionalLimit

decimal. Total Calendar Year Trading Notional

TotalDayDepositNotional

decimal. Total Calendar Day Deposit Notional

TotalMonthDepositNotional

decimal. Total Calendar Month Deposit Notional

TotalDayWithdrawNotional

decimal. Total Calendar Day Withdraw Notional

TotalMonthWithdrawNotional

decimal. Total Calendar Month Withdraw Notional

DailyDepositNotionalLimit

decimal. Total Calendar Day Deposit Notional Limit

MonthlyDepositNotionalLimit

decimal. Total Calendar Month Deposit Notional Limit

DailyWithdrawNotionalLimit

decimal. Total Calendar Day Withdraw Notional Limit

MonthlyWithdrawNotionalLimit

decimal. Total Calendar Month Withdraw Notional Limit

BaseNotionalProductId

int. Id of Base Product to be used in Notional Limits

FeeTier

int. Id of the Fee Tier the fee belongs to. Matches AccountInfo FeeGroupId (previously existing field)

PriceCollarIndexDifference

decimal. The percent different from the index price that an order is allowed to execute at. Anything falling outside of the index price +/- (1 + PriceCollarIndexDifference) will be collared

PriceCollarConvertToOtcEnabled

bool. Turns on/off conversion of collared orders to block trades

PriceCollarConvertToOtcClientUserId

int. Internal System UserId to assign the collared otc orders to. Should alwaays be 1 in current implementation (default)

PriceCollarConvertToOtcAccountId

int. Account Id to assign the collared orders to. This will effectively be a liability account that will need to have working block trades managed by operator.

PriceCollarConvertToOtcThreshold

decimal. Threshold of remaining size of order to convert to block trade. If collared order does not have remaining quantity above this threshold the remainder will be cancelled.

OtcConvertSizeEnabled

bool. Turns on/off auto conversion of 'large' limit orders converted to block trade orders upon receipt by the matching engine

OtcConvertSizeThreshold

decimal. Threshold to convert limit order quantity to block trade automatically for discovery by block trade market participants

Background Information

This section provides important information about the KIIEX exchange software powered by APEX.

Testnet Oro
here
here
Discord faucet
here
here
Launch a node/full node/validator
Blockchain endpoints
Deploy a smart contract
dApp development
Testnet faucet
here
Invitation link
X Link

Quotes and Orders

The KIIEX API includes calls related to both quotes and orders. Quoting is not enabled for the retail end user of AlphaPoint software. Only registered market participants or marketmakers may quote. Your trading venue may offer quotes separately from orders.

  • A quote expresses a willingness to buy or sell at a given price.

  • An order is a directive to buy or sell.

In this version of the AlphaPoint matching engine software, quotes and orders are synonymous. They both can buy or sell. This is because the matching engine (like most matching engines) requires a "firm quote" — a guaranteed bid or ask.

For both quotes and orders, trading priority is the same, and no preference is given one over the other. In code, the matching engine flags a quote for eventual regulatory and compliance rules, but for current software operation and trade execution, quotes and orders behave equivalently.

Best Practices/Quotes and Orders

Use the order-related API calls in preference to quote-related calls unless you specifically require quote-related calls.

Users, Accounts, and Permissions

KIIEX software differentiates between user and account. A user is the person who logs in; an account represents the funds and trading that the user does — much like a bank account represents funds and checks.

As with a bank account, an individual user may have multiple Exchange accounts. Similarly, multiple users may trade through a single account. There may be users who have trading access to one set of accounts that overlap (but do not duplicate) the set of accounts that another user can access. There may be a many-to-many relationship where two or more users have access to a set of accounts.

The use case for this kind of "joint tenancy" is an active trading desk where a specific individual may not always be present. If User A will not be present, User B can monitor and trade on the market. User A may wish to cancel his pending trades for a specific account or instrument, but not those of his trading partner under the same account or for the same instrument.

Permissions handle the rules that determine what a user can access and do with orders, cancellations, and the other tasks of a trading venue. Most permissions encompass tasks such as trading, depositing, or withdrawing funds; but a permission can be set for each API call for each individual in the venue.

An administrator with Operator permission sets up a user's permissions on the OMS when the user joins the trading venue, and only an administrator with Operator permission or above can change them. A full discussion of permissions is not part of this API.

Products and Instruments

In KIIEX software, a product is an asset that is tradable or paid out. A product might be a national currency, a crypto-currency, or something else such as a commodity. For example, a product might be a US Dollar or a New Zealand Dollar or a BitCoin or an ounce of gold. Transaction and withdrawal fees are denominated in products. (Products may be referred to as assets in some API calls.)

An instrument is a pair of exchanged products (or fractions of them). For example, US Dollar for BitCoin. In conventional investment parlance, a stock or a bond is called an instrument, but implicit in that is the potential exchange of one product for another (stock for dollars). AlphaPoint software thinks of that exchange as explicit, and separates product from instrument.

Message Frame

A JSON-formatted frame object.

{
    "m": 0,
    "i": 0,
    "n":"function name",
    "o":"payload"
}

Wrap all calls in a JSON-formatted frame object. Responses from the server are similarly wrapped. The API calls are documented as payloads by function name.

Key
Value

m message type

integer. The type of the message. One of: 0 request 1 reply 2 subscribe-to event 3 event 4 unsubscribe-from event 5 error

i sequence number

long integer. The sequence number identifies an individual request or request-and-response pair, to your application. The system requires a non-zero sequence number, but the numbering scheme you use is up to you. No arbitrary sequence numbering scheme is enforced by AlphaPoint. Best Practices: A client-generated API call (of message types 0, 2, and 4) should: Carry an even sequence number Begin at the start of each user session Be unique within each user session. Begin with 2 (as in 2, 4, 6, 8) Message types 1 (reply), 3 (event), and 5 (error) are generated by the server. These messages echo the sequence number of the message to which they respond. See the example, following.

n function name

string. The function name is the name of the function being called or that the server is responding to. The server echoes your call. See the example, following.

o payload

Payload is a JSON-formatted string containing the data being sent with the message. Payload may consist of request parameters (key-value pairs) or response parameters.

Note: You can send the key-value pairs inside the payload in any order. The server controls the order of its response.

Example 1

Example 1

var frame =
{
    "m":0,
    "i":0,
    "n":"function name",
    "o":""
};

var requestPayload =
{
    "parameter1":"value",
    "parameter2":0
};

frame.o = json.Stringify(requestPayload);
// Stringify escapes the payload's quotation marks automatically.
WS.Send(json.Sringify(frame)); // WS.Send escapes the frame

When sending a request in the frame to the software using JavaScript, a call looks like Example 1.

Example 2

Example 2

var frame = json.Parse(wsMessage);

if (frame.m == 1) // message of type reply
{
    //This is a reply
    if (frame.n == "WebAuthenticateUser")
    {
        var LoginReply = json.Parse(frame.o);
        if (loginReply.Authenticated)
        {
            var user = LoginReplay.User;
        }
    }
}

When receiving a frame from the software, use the frame to determine the context, and then unwrap the content, as in Example 2.

Note: If not using JSON Stringify, escape quotation marks.

Standard Response Objects and Common Error Codes

A response to an API call usually consists of a specific response, but both successful and unsuccessful responses may consist of a generic response object that verifies only that the call was received, and not that the action requested by the call took place. A generic response to an unsuccessful call provides an error code. A generic response looks like Example 3.

Example 3

Example 3

{
    "result":true,
    "errormsg":"",
    "errorcode": 0,
    "detail":"",
}
Key
Value

result

Boolean. If the call has been successfully received by the Order Management System, result is true; otherwise it is false.

errormsg

string. A successful receipt of the call returns null. The errormsg key for an unsuccessful call returns one of the following messages: Not Authorized (errorcode 20) Invalid Response (errorcode 100) Operation Failed (errorcode 101) Server Error (errorcode 102) Resource Not Found (errorcode 104)

errorcode

integer. A successful receipt of the call returns 0. An unsuccessful receipt of the call returns one of the errorcodes shown in the errormsg list.

detail

string. Message text that the system may send. The content of this key is usually null.

Modules

The KIIEX software consists of several modules that include the Order Management System (OMS), the matching engine, and the Asset Manager. During installation, each is assigned an ID.

The Order Management System is the mechanism that manages access to the trading venue. The OMS controls permissions, accounts, and users. The OMS must be specified in many calls.

The order book resides on the AlphaPoint matching engine.

A trading venue is a combination of OMS and matching engine that creates a place to access the market and trade. A venue maintains its order book and matching engine, and may access several Order Management Systems.

The Asset Manager controls the deposit and withdrawal of funds belonging to an account. These funds can be denominated in any product that the trading venue allows.

Time– and Date-Stamp Formats

KIIEX software uses two different time– and date-stamp formats, POSIX and Microsoft Ticks. Where the value of a time field key is an integer or long, the value is in POSIX format; when the value of a time field key is a string, it is in Microsoft Ticks format (also called datetime).

  • POSIX stores date/time values as the number of seconds since 1 January 1970 (long integer). AlphaPoint software often multiples this number by 1000 for the number of milliseconds since 1 January 1970. Recognize POSIX format: POSIX format is a long integer. It is usually formatted like this: 1501603632000

  • Microsoft Ticks (datetime) format represents the number of ticks that have elapsed since 00:00:00 UTC, 1 January 0001, in the Gregorian calendar. A single tick represents one hundred nanoseconds (one ten-millionth of a second). There are 10,000 ticks in a millisecond; ten million ticks in a second. Ticks format does not include the number of ticks attributable to leap-seconds. Recognize Ticks format: Ticks format is a string. In AlphaPoint software, it is usually formatted like this: "2018-08-17T17:57:56Z" Note that a T (for time) separates the initial date from the time. The trailing Z represents the time zone, in all cases in AlphaPoint software, this is UTC (also called Zulu time).

The Trading Day

Most KIIEX installations operate 24-hour computer-based trading venues. The trading day runs from UTC Midnight to UTC Midnight (essentially, London time, but without any summertime offset), regardless of the nominal location of the venue. Values such as open or close are those values as of UTC Midnight. Values for day, month, or annual periods run from UTC Midnight to UTC Midnight.

Authenticate2FA

Activate2FA

CancelUserReport

AddUserAffiliateTag

AuthenticateUser

GetL2Snapshot

GetAllUnredactedUserConfigsForUser

GetLevel1

GetUserAccountInfos

GetUserAfilliateTag

GetUserAccounts

GetUserAffiliateCount

GetUnredactedUserConfigByKey

GetUserConfig

GetValidate2FARequiredEndpoints

GetUserReportTickets

GetUserDevices

GetUserReportWriterResultRecords

LogOut

RegisterNewDevice

SuscribeLevel1

SubscribeAccountEvents

Category: User Permissions: Operator, Trading, AccountReadOnly Call Type: Synchronous

Subscribes the user to notifications about the status of account-level events: orders, trades, position updates, deposits, and withdrawals for a specific account on the Order Management System (OMS). The subscription reports all events associated with a given account; there is no filter at the call level to subscribe to some events and not others.

Account event information is supplied in comma-separated-value (CSV) format. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from AlphaPoint.

Request

{
  "AccountId":  1,
  "OMSId":  1 
}
Key
Value

AccountId

integer. The ID of the account for the logged-in user.

OMSId

integer. The ID of the Order Management System to which the account belongs.

Response

{
  "Subscribe":  true 
}
Key
Value

Subscribe

Boolean. A successful subscription returns true; otherwise, false.

The Events

When you call SubscribeAccountEvents, you subscribe to all of the following list of events. The Order Management System may supply them at irregular intervals and in any order; software must listen for these events. The system sends each of these events in a message frame.

AccountPositionEvent

AccountPositionEvent The balance in your account changes.

{
    "OMSId":4, //The OMSId. [Integer]
    "AccountId":4, // account id number. [Integer]
    "ProductSymbol":"BTC", //The Product Symbol for this balance message. [String]
    "ProductId":1, //The Product Id for this balance message. [Integer]
    "Amount":10499.1,  //The total balance in the account for the specified product. [Dec]
    "Hold": 2.1,  //The total amount of the balance that is on hold. Your available                          //balance for trading and withdraw is (Amount - Hold). [Decimal]
    "PendingDeposits":0, //Total Deposits Pending for the specified product. [Decimal]
    "PendingWithdraws":0, //Total Withdrawals Pending for the specified product. [Decimal]
    "TotalDayDeposits":0, //The total 24-hour deposits for the specified product. UTC. [Dec]
    "TotalDayWithdraws":0, //The total 24-hour withdraws for the specified product. UTC [Dec]
    "NotionalHoldAmount": 0.0,
    "NotionalRate": 0.0,
    "TotalDayDepositNotional": 0.0,
    "TotalMonthDepositNotional": 0.0,
    "TotalDayWithdrawNotional": 0.0,
    "TotalMonthWithdrawNotional": 0.0
}

Trigger: The balance in your account changes.

CancelAllOrdersRejectEvent

CancelAllOrdersRejectEvent All orders for your account are rejected.

{
    "OMSId": 1, // OMS ID [Integer]
    "AccountId": 4, // ID of the account being tracked [Integer]
    "InstrumentId": 0, // ID of the instrument in the order [Long Integer]
    "Status": "Rejected", // Accepted/Rejected [String]
    "RejectReason": "Instrument not found." // Reason for rejection [String]
}

Trigger: All orders for your account are rejected.

CancelOrderRejectEvent

CancelOrderRejectEvent Your order is canceled.

{
    "OMSId": 1, //OMS Id [Integer] Always 1
    "AccountId": 4, //Your Account ID. [Integer]
    "OrderId": 1, //The Order ID from your Cancel request. [64 Bit Integer]
    "OrderRevision": 0, //The Revision of the Order, if any was found. [64 Bit Integer]
    "OrderType": "Unknown", // See "Order Types" in Introduction
    "InstrumentId": 1,  // The InstrumentId from your Cancel request. [Integer]
    "Status": "Rejected", //Always "Rejected" [String]
    "RejectReason": "Order Not Found" //A message describing the reason for the rejection.          // [String]
}

Trigger: Your order is canceled.

CancelReplaceOrderRejectEvent

CancelReplaceOrderRejectEvent Your order is rejected even if a cancel-replace order was placed.

{
    "OMSId": 1, // ID of the OMS [integer]
    "AccountId": 4, // ID of the account [integer]
    "OrderId": 9342, // The ID of the rejected order [integer]
    "ClientOrderId": 1234, // The client-supplied order ID [long integer]
    "LimitPrice": 99.1, // The limit price of the order.
    "OrderIdOCO": 0, // The ID of the other ordre to cancel if this is executed.
    "OrderType": "Limit", // See "Order Types" in Introduction.
    "PegPriceType": "Bid", // Where to peg the stop/trailing order.
    "OrderIdToReplace": 9333, // The ID of the order being cancelled and replaced.
    "InstrumentId": 1, // ID of the instrument traded in the order.
    "ReferencePrice": 99.1, // used internally.
    "Quantity": 1.0, // Quantity of the replacement order
    "Side": "Buy", // Side of the order: Buy, Sell, Short (future)
    "StopPrice":0, // The price at which to execute the new order.
    "TimeInForce":"GTC", // Period when new order can be executed.
    "Status":"Rejected", // Status of the order – always "rejected"
    "RejectReason":"Order Not Found" // Reason the order was rejected.
}

Trigger: Your order is rejected even if a cancel-replace order was placed.

MarketStateUpdate

MarketStateUpdate The market state is altered administratively.

{
    "ExchangeId":1, // Exchange Id [Integer]
    "VenueAdapterId":1,  // Internal [Integer]
    "VenueInstrumentId":1, // Instrument Id on a specific venue [Integer]
    "Action":"ReOpen",
        // Market State Action [String] Values are 
        // "Pause", "Resume", "Halt", "ReOpen"
    "PreviousStatus":"Stopped", 
        // Previous Market Status for Instrument [String] Values are
        // "Running", "Paused", "Stopped", "Starting"
    "NewStatus":"Running",
        // Market Status for Instrument [String] Values are 
        // "Running", "Paused", "Stopped", "Starting"
    "ExchangeDateTime":"2016-04-21T21:48:22Z"
        // ISO 8601 format UTC time zone
}

Trigger: The market state is altered administratively.

NewOrderRejectEvent

NewOrderRejectEvent An order associated with your account is rejected.

{
    "OMSId": 1, //OMS Id [Integer] Always 1
    "AccountId": 4, //Your Account Id [Integer]
    "ClientOrderId": 1234, //Your Client Order Id [64 Bit Integer]
    "Status": "Rejected", //Always "Rejected"
    "RejectReason": "No More Market" //A message describing the reason for the reject.
}

Trigger: An order associated with your account is rejected.

OrderStateEvent

OrderStateEvent The status changes for an order associated with your account.

{
    "Side":"Sell",
        // The side of your order. [String] Values are "Sell", 
        // "Buy", "Short"
    "OrderId": 9849, //The Server-Assigned Order Id. [64-bit Integer]
    "Price": 97, //The Price of your order. [Decimal]
    "Quantity":1,
        // The Quantity (Remaining if partially or fully executed) of 
        // your order. [Decimal]
    "Instrument":1, // The InstrumentId your order is for. [Integer]
    "Account":4, // Your AccountId [Integer]
    "OrderType":"Limit",
        // The type of order. [String] Values are "Market", "Limit",
        // "StopMarket", "StopLimit", "TrailingStopMarket", and
        // "TrailingStopLimit"
    "ClientOrderId":0, // Your client order id. [64-bit Integer]
    "OrderState":"Working", // The current state of the order. [String]
            // Values are "Working", "Rejected", "FullyExecuted", "Canceled",
            // "Expired"
    "ReceiveTime":0, // Timestamp in POSIX format
    "OrigQuantity":1, // The original quantity of your order. [Decimal]
    "QuantityExecuted":0, // The total executed quantity. [Decimal]
    "AvgPrice":0, // Avergage executed price. [Decimal]
    "ChangeReason":"NewInputAccepted"
        // The reason for the order state change. [String] Values are 
        // "NewInputAccepted", "NewInputRejected", "OtherRejected",
        // "Expired", "Trade", SystemCanceled BelowMinimum", 
        // "SystemCanceled NoMoreMarket", "UserModified"
}

Trigger: The status changes for an order associated with your account.

OrderTradeEvent

OrderTradeEvent An order associated with your account results in a trade.

{
    "OMSId":1, //OMS Id [Integer]
    "TradeId":213, //Trade Id [64-bit Integer]
    "OrderId":9848, //Order Id [64-bit Integer]
    "AccountId":4, //Your Account Id [Integer]
    "ClientOrderId":0, //Your client order id. [64-bit Integer]
    "InstrumentId":1, //Instrument Id [Integer]
    "Side":"Buy", //[String] Values are "Buy", "Sell", "Short" (future)
    "Quantity":0.01, //Quantity [Decimal]
    "Price":95,  //Price [Decimal]
    "Value":0.95,  //Value [Decimal]
    "TradeTime":635978008210426109, // TimeStamp in Microsoft ticks format
    "ContraAcctId":3,
        // The Counterparty of the trade. The counterparty is always 
        // the clearing account. [Integer]
    "OrderTradeRevision":1, //Usually 1 
    "Direction":"NoChange", //"Uptick", "Downtick", "NoChange"
    "CounterPartyClientUserId": 0, // [Integer] Indicates counterparty source of trade (OMS, Remarketer, FIX)
    "NotionalProductId": 0, // [Integer] Notional product
    "NotionalRate": 0.0, // Notional rate from base currency at time of trade [Decimal] 
    "NotionalValue": 0.0 // Notional value in base currency of venue at time of trade [Decimal]
}

Trigger: An order associated with your account results in a trade.

PendingDepositUpdate

PendingDepositUpdate Deposit pending on your account.

{
    "AccountId": 4, // Your account id number. [Integer]
    "AssetId": 1, // The ProductId of the pending deposit. [Integer]
    "TotalPendingDepositValue": 0.01 //The value of the pending deposit. [Decimal]
    "Requires2FA": false,
    "TwoFAType": "",
    "TwoFAToken": "",
}

SubscribeLevel2

SubscribeBlockTrades

SubscribeTicker

UnsubscribeLevel2

UnsuscribeBlockTrades

SubscribeTrades

UnsubscribeLevel1

UpdateUserAffiliateTag

UnsubscribeTicket

UnsuscribeTrades

Validate2FA

Accounts

These calls correspond roughly to the Accounts function of the Exchange Admin and Admin Guide.

GetAccountInfo

GenerateTransactionActivityReport

GenerateTradeActivityReport

GenerateTreasuryActivityReport

GetAllAccountConfigs

GetTreasuryProductsForAccount

GetAccountPositions

GetAccountTrades

ScheduleTradeActivityReport

Trades

These calls correspond roughly to the Trades function of the Exchange Admin and Admin Guide.

GetAccountTransactions

GetAllOpenTradeReports

GetTickerHistory

GetOpenTradeReports

GetTradesHistory

OMS Orders

These calls correspond roughly to the OMS Orders function of the Exchange Admin and Admin Guide.

CancelAllOrders

CancelOrder

CreateQuote

CancelQuote

GetOMSFeeTiers

CancelReplaceOrder

GetOpenOrders

GetOpenQuotes

GetOrderStatus

GetOrderHistory

Category: User Permissions: Trading, AccountReadOnly Call Type: Synchronous

Returns a complete list of all orders, both open and executed, for a specific account on the specified Order Management System. The account named in the request must be associated with the calling user.

Request

{
  "OMSId":  1,
  "AccountId":  1 .
  "clientOrderId" : 0,
  "originalOrderId" : 0, 
  "originalClientOrderId" : 0,
  "userId" : 0,
  "instrumentId" : 0,
  "startTimestamp" : 0,
  "endTimestamp" : 0,
  "depth" : 100,
  "startIndex" : 1
}
Key
Value

OMSId

integer. The ID of the Order Management System where the orders were placed.

AccountId

integer. The ID of the account whose orders will be returned

clientOrderId

integer. The unique ID assigned by the client for a specific order

originalOrderId

integer. The original ID of the order before any modifications

originalClientOrderId

integer. The original client-assigned ID of the order before any modifications.

userId

integer. The ID of the user requesting the order history.

instrumentId

integer. The ID of the trading instrument (e.g., a specific cryptocurrency or stock) for which the order history is being retrieved.

startTimestamp

long integer. Date and time at which to begin the orders history, in POSIX format.

endTimestamp

long integer. Date and time at which to begin the orders history, in POSIX format.integer. The ending timestamp (in POSIX format, milliseconds since 1 January 1970) until which to retrieve the order history.

depth

integer. The maximum number of orders to retrieve.

startIndex

integer. The index from which to start retrieving the order history.

Response

[
    {
        "Side": "Buy",
        "OrderId": 0,
        "Price":  0.0,
        "Quantity":  0.0,
        "DisplayQuantity":  0.0,
        "Instrument": 0,
        "Account": 0,
        "OrderType": "Unknown",
        "ClientOrderId": 0,
        "OrderState": "Unknown",
        "ReceiveTime": 0,
        "ReceiveTimeTicks": 0,
        "OrigQuantity": 0.0,
        "QuantityExecuted": 0.0,
        "AvgPrice": 0.0,
        "CounterPartyId": 0,
        "ChangeReason": "Unknown",
        "OrigOrderId": 0,
        "OrigClOrdId": 0,
        "EnteredBy": 0,
        "IsQuote": false,
        "InsideAsk": 0.0,
        "InsideAskSize": 0.0,
        "InsideBid": 0.0,
        "InsideBidSize": 0.0,
        "LastTradePrice": 0.0,
        "RejectReason": "",
        "IsLockedIn": false,
        "CancelReason": "",
        "OMSId": 0
    },
]

The call GetOrderHistory returns an array containing both buy-side and a sell-side orders for the named account. The call returns an empty array if there are no open orders for the account.

Key
Value

Side

string. The side of a trade. One of: 0 Buy 1 Sell 2 Short 3 Unknown (an error condition)

OrderId

long integer. The ID of the open order. The OrderID is unique in each Order Management System.

Price

real. The price at which the buy or sell has been ordered.

Quantity

real. The quantity of the product to be bought or sold.

DisplayQuantity

real. The quantity available to buy or sell that is publicly displayed to the market. To display a displayQuantity value, an order must be a Limit order with a reserve.

Instrument

integer. ID of the instrument being traded. The call GetInstruments can supply the instrument IDs that are available.

orderType

string. Describes the type of order this is. One of: 0 Unknown (an error condition) 1 Market order 2 Limit 3 StopMarket 4 StopLimit 5 TrailingStopMarket 6 TrailingStopLimit 7 BlockTrade

ClientOrderId

long integer. An ID supplied by the client to identify the order (like a purchase order number). The ClientOrderId defaults to 0 if not supplied.

OrderState

string. The current state of the order. One of: 0 Unknown 1 Working 2 Rejected 3 Canceled 4 Expired 5 Fully Executed.

ReceiveTime

long integer. Time stamp of the order in POSIX format x 1000 (milliseconds since 1/1/1970 in UTC time zone).

ReceiveTimeTicks

long integer. Time stamp of the order Microsoft Ticks format and UTC time zone. Note: Microsoft Ticks format is usually provided as a string. Here it is provided as a long integer.

OrigQuantity

real. If the open order has been changed or partially filled, this value shows the original quantity of the order.

QuantityExecuted

real. If the open order has been at least partially executed, this value shows the amount that has been executed.

AvgPrice

real. The average executed price for the instrument in the order.

CounterPartyId

integer. The ID of the other party in an off-market trade.

ChangeReason

string. If the order has been changed, this string value holds the reason. One of: 0 Unknown 1 NewInputAccepted 2 NewInputRejected 3 OtherRejected 4 Expired 5 Trade 6 SystemCanceled_NoMoreMarket 7 SystemCanceled_BelowMinimum 8 SystemCanceled_PriceCollar 9 SystemCanceled_MarginFailed 100 UserModified

OrigOrderId

integer. If the order has been changed, this is the ID of the original order.

OrigClOrdId

integer. If the order has been changed, this is the ID of the original client order ID.

EnteredBy

integer. The user ID of the person who entered the order.

IsQuote

Boolean. If this order is a quote, the value for IsQuote is true, else false.

InsideAsk

real. If this order is a quote, this value is the Inside Ask price.

InsideAskSize

real. If this order is a quote, this value is the quantity of the Inside Ask quote.

InsideBid

real. If this order is a quote, this value is the Inside Bid price.

InsideBidSize

real. If this order is a quote, this value is the quantity of the Inside Bid quote.

LastTradePrice

real. The last price that this instrument traded at.

RejectReason

string. If this open order has been rejected, this string holds the reason for the rejection.

IsLockedIn

Boolean. For a block trade, if both parties to the block trade agree that one of the parties will report the trade for both sides, this value is true. Othersise, false.

CancelReason

string. If this order has been canceled, this string holds the cancelation reason.

OMSId

integer. The ID of the Order Management System on which the order took place.

GetOrdersHistory

GetOrderFee

GetOrderHistoryByOrderId

Activate 2FA

post

Completes two-factor authentication (2FA) activation by sending the verification code.

Authorizations
Body
CodestringRequired

The alphanumeric authentication code received.

Responses
200
Successful response
application/json
400
Bad request
401
Unauthorized
post
POST /activate2fa HTTP/1.1
Host: api.exchange.com
APIKey: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "Code": "text"
}
{
  "Activated": true,
  "Error": "text"
}

Authenticate 2FA

post

Completes the second part of two-factor authentication (2FA) by sending the authentication token from a third-party authentication system to the Order Management System (OMS). Process: 1. Call webauthenticateuser to obtain TwoFAType and TwoFAToken. 2. Use TwoFAToken in your authentication app (e.g., Google Authenticator). 3. The authentication app returns a new token. 4. Call authenticate2FA with the new token.

Authorizations
Body
CodestringRequired

Token obtained from the third-party authentication source.

Responses
200
Successful authentication
application/json
400
Bad request
401
Unauthorized
post
POST /authenticate2fa HTTP/1.1
Host: api.kiiex.com
APIKey: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "Code": "text"
}
{
  "Authenticated": true,
  "SessionToken": "text"
}

Cancels a scheduled user report by its report ID

post

You can cancel a scheduled user report by providing its unique GUID. The response confirms the receipt of the cancellation request but does not guarantee the cancellation's success. To verify, use GetUserReportTickets or GetUserReportWriterResultRecords.

Body
UserReportIdstringRequired

A globally unique ID string identifying the user report to cancel.

Responses
200
Cancellation request successfully received
application/json
400
Invalid request due to missing or malformed data
application/json
401
Unauthorized access
application/json
post
POST /cancelUserReport HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 23

{
  "UserReportId": "text"
}
{
  "result": true,
  "errormsg": "text",
  "errorcode": 1,
  "detail": "text"
}

Get All Unredacted User Configs

get
Query parameters
userIdintegerRequired

The ID of the user.

userNamestringRequired

The user name of the user.

Responses
200
Successful retrieval of unredacted user configurations.
application/json
get
GET / HTTP/1.1
Host: GetAllUnredactedUserConfigsForUser?userId=1&userName=text
Accept: */*
200

Successful retrieval of unredacted user configurations.

[
  {
    "Key": "Config1",
    "Value": "Config1Val"
  },
  {
    "Key": "Setting2",
    "Value": "Value2"
  },
  {
    "Key": "API_KEY",
    "Value": "Actual_API_KEY"
  }
]

Authenticate a user

post

Authenticates a user for the current websocket session.

Body
one ofOptional
or
Responses
200
Successful authentication response
application/json
400
Invalid authentication response
application/json
post
POST /AuthenticateUser HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 37

{
  "UserName": "text",
  "Password": "text"
}
{
  "authenticated": true,
  "user": {
    "userId": 1,
    "userName": "text",
    "email": "text",
    "emailVerified": true,
    "accountId": 1,
    "omsId": 1,
    "use2FA": true
  },
  "locked": true,
  "requires2FA": true,
  "twoFAType": "text",
  "twoFAToken": "text",
  "errormsg": "text"
}

Add User Affiliate Tag

post

Associates a user affiliate tag with a user, enabling referral tracking.

Authorizations
Body
omsIdintegerRequired

The ID of the Order Management System on which the user operates.

userIdintegerRequired

The user's ID.

affiliateIdintegerRequired

The affiliate ID.

affiliateTagstringRequired

The alphanumeric tag used to identify new affiliating members.

Responses
200
Successful response
application/json
400
Bad request
401
Unauthorized
post
POST /addUserAffiliateTag HTTP/1.1
Host: api.kiiex.com
APIKey: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 60

{
  "omsId": 1,
  "userId": 1,
  "affiliateId": 1,
  "affiliateTag": "text"
}
{
  "result": true,
  "errormsg": "text",
  "errorcode": 1,
  "detail": "text"
}

Get Level 2 snapshot for a specific instrument

post

Provides a current Level 2 snapshot of a specific instrument trading on an Order Management System (OMS) to a user-specified market depth. The snapshot includes buyers and sellers at greater or lesser prices in the order book.

Body
OMSIdintegerRequired

The ID of the Order Management System where the instrument is traded.

Example: 1
InstrumentIdintegerRequired

The ID of the instrument for which the snapshot is requested.

Example: 1
DepthintegerOptional

Depth of the market — the number of buyers and sellers at greater or lesser prices in the order book. Defaults to 100 if not provided.

Example: 100
Responses
200
Successful Level 2 snapshot
application/json
400
Invalid request due to missing or malformed parameters
application/json
post
POST /getL2Snapshot HTTP/1.1
Host: 
Content-Type: application/json
Accept: */*
Content-Length: 40

{
  "OMSId": 1,
  "InstrumentId": 1,
  "Depth": 100
}
[
  [
    1,
    123,
    0,
    0,
    0,
    0,
    0,
    0,
    0
  ]
]

Get Level 1 Data

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful Level 1 data retrieval
application/json
get
200

Successful Level 1 data retrieval

Get User Account Information

get
Query parameters
OMSIdintegerRequired

The Order Management System ID.

UserIdintegerRequired

The ID of the user.

UserNamestringRequired

The name of the user.

Responses
200
Successful retrieval of user account information.
application/json
get
200

Successful retrieval of user account information.

GET /GetLevel1?OMSId=1&InstrumentId=1 HTTP/1.1
Host: 
Accept: */*
{
  "exchangeId": 0,
  "productPairCode": 0,
  "bestBid": 0,
  "bestOffer": 0,
  "volume": 0,
  "lastTradedPx": 0,
  "lastTradedVolume": 0,
  "lastTradeTime": 0,
  "timeStamp": 0,
  "bidQty": 0,
  "askQty": 0,
  "bidOrderCt": 0,
  "askOrderCt": 0,
  "sessionOpen": 0,
  "sessionHigh": 0,
  "sessionLow": 0,
  "sessionClose": 0,
  "currentDayVolume": 0,
  "currentDayNumTrades": 0,
  "currentDayPxChange": 0,
  "rolling24HrVolume": 0,
  "rolling24HrNumTrades": 0,
  "rolling24HrPxChange": 0,
  "rolling24HrPxChangePercent": 0
}
GET / HTTP/1.1
Host: GetUserAccountInfos?OMSId=1&UserId=1&UserName=text
Accept: */*
[
  {
    "OMSID": 1,
    "AccountId": 123,
    "AccountName": "My Account",
    "AccountHandle": "my_account_1",
    "FirmId": "ABC",
    "FirmName": "ABC Trading",
    "AccountType": "Asset",
    "FeeGroupID": 1,
    "ParentID": 0,
    "RiskType": "Normal",
    "VerificationLevel": 1,
    "FeeProductType": "BaseProduct",
    "FeeProduct": 0,
    "RefererId": 0,
    "LoyaltyProductId": 0,
    "LoyaltyEnabled": false,
    "MarginEnabled": false,
    "LiabilityAccountId": 0,
    "LendingAccountId": 0,
    "ProfitLossAccountId": 0
  },
  {
    "OMSID": 1,
    "AccountId": 456,
    "AccountName": "Another Account",
    "AccountHandle": "another_account_1",
    "FirmId": "ABC",
    "FirmName": "ABC Trading",
    "AccountType": "Asset",
    "FeeGroupID": 1,
    "ParentID": 0,
    "RiskType": "Normal",
    "VerificationLevel": 1,
    "FeeProductType": "BaseProduct",
    "FeeProduct": 0,
    "RefererId": 0,
    "LoyaltyProductId": 0,
    "LoyaltyEnabled": false,
    "MarginEnabled": false,
    "LiabilityAccountId": 0,
    "LendingAccountId": 0,
    "ProfitLossAccountId": 0
  }
]

Get User Account IDs

get
Query parameters
omsIdintegerRequired

The Order Management System ID.

userIdintegerRequired

The ID of the user.

userNamestringRequired

The name of the user.

Responses
200
Successful retrieval of user account IDs.
application/json
Responseinteger[]
get
GET / HTTP/1.1
Host: GetUserAccounts?omsId=1&userId=1&userName=text
Accept: */*
200

Successful retrieval of user account IDs.

[
  123,
  456,
  789
]

Get User Affiliate Count

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

UserIdintegerRequired

The ID of the user.

Responses
200
Successful retrieval of affiliate count.
application/json
get
GET / HTTP/1.1
Host: GetUserAffiliateCount?OMSId=1&UserId=1
Accept: */*
200

Successful retrieval of affiliate count.

{
  "Count": 123
}

Get User Affiliate Tags

get
Query parameters
userIdintegerRequired

The ID of the user.

omsIdintegerRequired

The ID of the Order Management System.

Responses
200
Successful retrieval of affiliate tags.
application/json
get
GET / HTTP/1.1
Host: GetUserAfilliateTag?userId=1&omsId=1
Accept: */*
200

Successful retrieval of affiliate tags.

[
  {
    "omsId": 1,
    "userId": 123,
    "affiliateId": 456,
    "affiliateTag": "ABC123"
  },
  {
    "omsId": 1,
    "userId": 123,
    "affiliateId": 789,
    "affiliateTag": "XYZ789"
  }
]

Get Unredacted User Config By Key

get
Query parameters
userIdintegerRequired

The ID of the user.

userNamestringRequired

The user name of the user.

keystringRequired

The specific configuration key to retrieve.

Responses
200
Successful retrieval of unredacted user configuration by key.
application/json
get
200

Successful retrieval of unredacted user configuration by key.

GET / HTTP/1.1
Host: GetUnredactedUserConfigByKey?userId=1&userName=text&key=text
Accept: */*
[
  {
    "Key": "Config1",
    "Value": "Config1Val"
  }
]

Get User Configuration

get
Query parameters
userIdintegerRequired

The ID of the user.

userNamestringRequired

The user name of the user.

Responses
200
Successful retrieval of user configuration.
application/json
get
GET / HTTP/1.1
Host: GetUserConfig?userId=1&userName=text
Accept: */*
200

Successful retrieval of user configuration.

[
  {
    "Key": "Config1",
    "Value": "Config1Val"
  },
  {
    "Key": "Setting2",
    "Value": "Value2"
  },
  {
    "Key": "API_KEY",
    "Value": "REDACTED_API_KEY"
  }
]

Get 2FA Required Endpoints

get
Responses
200
Successful retrieval of 2FA required endpoints.
application/json
Responsestring[]
get
GET / HTTP/1.1
Host: GetValidate2FARequiredEndpoints
Accept: */*
200

Successful retrieval of 2FA required endpoints.

[
  "createwithdrawticket",
  "createdepositticket",
  "adduserpermission"
]

Get User Devices

get
Query parameters
UserIdintegerRequired

The user ID.

actionstringOptional

The action performed on device.

startDatestring · date-timeOptional

The start date for the date range.

endDatestring · date-timeOptional

The end date for the date range.

Responses
200
Successful retrieval of user devices.
application/json
get
GET / HTTP/1.1
Host: GetUserDevices?UserId=1
Accept: */*
200

Successful retrieval of user devices.

[
  {
    "HashCode": 12345,
    "Location": "New York",
    "DeviceName": "My Laptop",
    "IpAddress": "192.168.1.100",
    "UserId": 1,
    "IsTrusted": true,
    "ExpirationTime": 1678886400
  },
  {
    "HashCode": 67890,
    "Location": "London",
    "DeviceName": "My Phone",
    "IpAddress": "10.0.0.1",
    "UserId": 1,
    "IsTrusted": false,
    "ExpirationTime": 1678972800
  }
]

Get User Report Tickets

get
Query parameters
UserIdintegerRequired

The ID of the user.

Responses
200
Successful retrieval of user report tickets.
application/json
get
GET / HTTP/1.1
Host: GetUserReportTickets?UserId=1
Accept: */*
200

Successful retrieval of user report tickets.

[
  {
    "RequestingUser": 123,
    "OMSId": 456,
    "reportFlavor": "TradeActivity",
    "createTime": "2024-07-26T12:00:00Z",
    "initialRunTime": "2024-07-26T13:00:00Z",
    "intervalStartTime": "2024-07-25T00:00:00Z",
    "intervalEndTime": "2024-07-26T00:00:00Z",
    "RequestStatus": "Completed",
    "ReportFrequency": "Daily",
    "intervalDuration": 86400,
    "RequestId": "I2nCtvyY8UuHsoSyrLe2QA==",
    "lastInstanceId": "AAAAAAAAAAAAAAAAAAAAAA==",
    "accountIds": [
      1,
      2,
      3
    ]
  },
  {
    "RequestingUser": 789,
    "OMSId": 1011,
    "reportFlavor": "Transaction",
    "createTime": "2024-07-27T10:00:00Z",
    "initialRunTime": "2024-07-27T11:00:00Z",
    "intervalStartTime": "2024-07-26T00:00:00Z",
    "intervalEndTime": "2024-07-27T00:00:00Z",
    "RequestStatus": "Scheduled",
    "ReportFrequency": "Weekly",
    "intervalDuration": 604800,
    "RequestId": "anotherRequestId123",
    "lastInstanceId": null,
    "accountIds": [
      4,
      5
    ]
  }
]

Register New Device

post
Body
HashCodestringRequired

Hash code associated with the device.

PendingEmailCodestringRequired

Email validation code.

Responses
200
Successful device registration.
application/json
400
Unsuccessful device registration.
application/json
post
POST / HTTP/1.1
Host: RegisterNewDevice
Content-Type: application/json
Accept: */*
Content-Length: 72

{
  "HashCode": "someHashCodeValue",
  "PendingEmailCode": "someEmailCodeValue"
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Log Out

post
Responses
200
Successful logout.
application/json
400
Unsuccessful logout.
application/json
post
POST / HTTP/1.1
Host: LogOut
Accept: */*
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Get User Report Writer Result Records

get
Query parameters
userIdintegerRequired

The ID of the user.

depthintegerOptional

The count of records to return. Defaults to 50.

startIndexintegerOptional

The record number to start returning records from. Defaults to 0.

Responses
200
Successful retrieval of user report writer result records.
application/json
get
GET / HTTP/1.1
Host: GetUserReportWriterResultRecords?userId=1
Accept: */*
200

Successful retrieval of user report writer result records.

[
  {
    "RequestingUser": 1,
    "urtTicketId": "mGzjUfylGEmqgJIxu651aQ==",
    "descriptorId": "47TlpPQyTkKR4LKl9Hy1yA==",
    "resultStatus": "SuccessComplete",
    "reportExecutionStartTime": "2018-08-17T17:57:56Z",
    "reportExecutionCompleteTime": "2018-08-17T17:57:57Z",
    "reportOutputFilePathname": "",
    "reportDescriptiveHeader": "TradeActivity|onDemand|2018-08-10T04:00:00.000Z|2018-08-10T05:00:00.000Z|2018-08-17T17:57:51.852Z|2018-08-17T17:57:56.840Z|0.19634 seconds"
  },
  {
    "RequestingUser": 2,
    "urtTicketId": "anotherTicketId",
    "descriptorId": "anotherDescriptorId",
    "resultStatus": "NotComplete",
    "reportExecutionStartTime": "2024-10-27T10:00:00Z",
    "reportExecutionCompleteTime": null,
    "reportOutputFilePathname": "/path/to/report.csv",
    "reportDescriptiveHeader": "SomeReport|Daily|..."
  }
]

Subscribe Level 2 Market Data

post

Retrieves the latest Level 2 Ticker information and then subscribes the user to Level 2 market data event updates for one specific instrument. See the Level 2 Data Schema for details. The updates are sent asynchronously. Use the /market-data/unsubscribe-level2 endpoint to unsubscribe.

Body
one ofOptional
or
Responses
200
Successful subscription and initial Level 2 data.
application/json
post
POST / HTTP/1.1
Host: SubscribeLevel2
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "OMSId": 1,
  "InstrumentId": 0,
  "Depth": 10
}
200

Successful subscription and initial Level 2 data.

[
  [
    [
      0,
      1,
      1534862990343,
      0,
      0,
      0,
      0,
      0,
      0,
      0
    ],
    [
      1,
      1,
      1534862990344,
      1,
      100,
      1,
      6423.5,
      47,
      1,
      0
    ],
    [
      2,
      1,
      1534862990345,
      2,
      0,
      0,
      6423.6,
      47,
      0.5,
      1
    ]
  ]
]

Subscribe Ticker Market Data

post

Subscribes a user to a Ticker Market Data Feed. See the Ticker Data Format for details. The updates are sent asynchronously. Use the /market-data/unsubscribe-ticker endpoint to unsubscribe.

Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

IntervalintegerOptional

Update interval in seconds. Default is 60.

IncludeLastCountintegerOptional

Limit of records in ticker history. Default is 100.

Responses
200
Successful subscription and initial ticker data.
application/json
post
POST / HTTP/1.1
Host: SubscribeTicker
Content-Type: application/json
Accept: */*
Content-Length: 65

{
  "OMSId": 1,
  "InstrumentId": 1,
  "Interval": 60,
  "IncludeLastCount": 100
}
200

Successful subscription and initial ticker data.

[
  [
    1501603632000,
    2700.33,
    2701.268701,
    2687.01,
    2687.01,
    24.86100992,
    0,
    2870.95,
    1
  ],
  [
    1501604532000,
    2792.73,
    2667.95,
    2687.01,
    2700.81,
    242.61340767,
    0,
    2871,
    0
  ]
]

Subscribe Level 1 Market Data

post

Retrieves the latest Level 1 Ticker information and then subscribes the user to ongoing Level 1 market data event updates for one specific instrument. See the Level 1 Data Schema for details. The updates are sent asynchronously. Use the /market-data/unsubscribe-level1 endpoint to unsubscribe.

Body
one ofOptional
or
Responses
200
Successful subscription and initial Level 1 data.
application/json
post
POST / HTTP/1.1
Host: SuscribeLeve1
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 0
}
200

Successful subscription and initial Level 1 data.

{
  "OMSId": 1,
  "InstrumentId": 1,
  "BestBid": 6423.57,
  "BestOffer": 6436.53,
  "LastTradedPx": 6423.57,
  "LastTradedQty": 0.96183964,
  "LastTradeTime": 1534862990343,
  "SessionOpen": 6249.64,
  "SessionHigh": 11111,
  "SessionLow": 4433,
  "SessionClose": 6249.64,
  "Volume": 0.96183964,
  "CurrentDayVolume": 3516.31668185,
  "CurrentDayNumTrades": 8529,
  "CurrentDayPxChange": 173.93,
  "CurrentNotional": 0,
  "Rolling24HrNotional": 0,
  "Rolling24HrVolume": 4319.63870783,
  "Rolling24HrNumTrades": 10585,
  "Rolling24HrPxChange": -0.4165607307408487,
  "TimeStamp": 1534862990358
}

Subscribe Block Trades

post

Retrieves Open Trade Reports (Block Trades only). See the Block Trade Data Schema for details. The initial snapshot and subsequent updates are arrays of trades. Use the /market-data/unsubscribe-block-trades endpoint to unsubscribe.

Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful subscription and initial block trades data.
application/json
post
POST / HTTP/1.1
Host: SubscribeBlockTrades
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
200

Successful subscription and initial block trades data.

[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Unsubscribe Level 2

post
Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful unsubscription.
application/json
400
Unsuccessful unsubscription.
application/json
post
POST / HTTP/1.1
Host: UnsubscribeLevel2
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Subscribe Trades Market Data

post

Subscribes to the Trades Market Data Feed. See the Trade Data Schema for details. The initial snapshot and subsequent updates are arrays of trades with numerical keys. The OrderTradeEvent documented in SubscribeAccountEvents is also related. Use the /market-data/unsubscribe-trades endpoint to unsubscribe.

Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

IncludeLastCountintegerOptional

Number of previous trades to retrieve. Default is 100.

Responses
200
Successful subscription and initial trades data.
application/json
post
POST / HTTP/1.1
Host: SubscribeTrades
Content-Type: application/json
Accept: */*
Content-Length: 51

{
  "OMSId": 1,
  "InstrumentId": 1,
  "IncludeLastCount": 100
}
200

Successful subscription and initial trades data.

[
  {
    "0": 1713390,
    "1": 1,
    "2": 0.25643269,
    "3": 6419.77,
    "4": 203100209,
    "5": 203101083,
    "6": 1534863265752,
    "7": 2,
    "8": 1,
    "9": 0,
    "10": 0
  }
]

Unsubscribe Block Trades

post
Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful unsubscription.
application/json
400
Unsuccessful unsubscription.
application/json
post
POST / HTTP/1.1
Host: UnsuscribeBlockTrades
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Unsubscribe Level 1

post
Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful unsubscription.
application/json
400
Unsuccessful unsubscription.
application/json
post
POST / HTTP/1.1
Host: UnsubscribeLevel1
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Unsubscribe Ticker

post
Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful unsubscription.
application/json
400
Unsuccessful unsubscription.
application/json
post
POST / HTTP/1.1
Host: UnsubscribeTicket
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Update User Affiliate Tag

post
Body
omsIdintegerRequired

The ID of the Order Management System.

userIdintegerRequired

The ID of the user.

affiliateIdintegerRequired

The ID of the affiliate.

affiliateTagstringRequired

The alphanumeric affiliate tag.

Responses
200
Successful update.
application/json
400
Unsuccessful update.
application/json
post
POST / HTTP/1.1
Host: UpdateUserAffiliateTag
Content-Type: application/json
Accept: */*
Content-Length: 72

{
  "omsId": 0,
  "userId": 0,
  "affiliateId": 0,
  "affiliateTag": "someAffiliateTag"
}
{
  "result": true,
  "errormsg": "",
  "errorcode": 0,
  "detail": ""
}

Unsubscribe Trades

post
Body
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful unsubscription.
application/json
400
Unsuccessful unsubscription.
application/json
post
POST / HTTP/1.1
Host: UnsuscribeTrades
Content-Type: application/json
Accept: */*
Content-Length: 28

{
  "OMSId": 1,
  "InstrumentId": 1
}
{
  "result": true,
  "errormsg": null,
  "errorcode": 0,
  "detail": null
}

Validate 2FA

post
Body
TFaTypestringRequired

Type of authentication.

CodestringRequired

Authentication code.

Responses
200
Successful 2FA validation.
application/json
401
Invalid 2FA code.
application/json
post
POST / HTTP/1.1
Host: Validate2FA
Content-Type: application/json
Accept: */*
Content-Length: 39

{
  "TFaType": "TFATYPE",
  "Code": "YourCode"
}
{
  "TFaAuthenticated": true
}

Get Account Information

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerRequired

The ID of the account.

Responses
200
Successful retrieval of account information.
application/json
get
GET / HTTP/1.1
Host: GetAccountInfo?omsId=1&accountId=1
Accept: */*
200

Successful retrieval of account information.

{
  "omsid": 0,
  "accountId": 0,
  "accountName": "",
  "accountHandle": "",
  "firmId": "",
  "firmName": "",
  "accountType": {
    "Options": [
      "Asset"
    ]
  },
  "feeGroupID": 0,
  "parentID": 0,
  "riskType": {
    "Options": [
      "Normal"
    ]
  },
  "verificationLevel": 0,
  "feeProductType": {
    "Options": [
      "BaseProduct"
    ]
  },
  "feeProduct": 0,
  "refererId": 0,
  "loyaltyProductId": 0,
  "loyaltyEnabled": false,
  "marginEnabled": false,
  "liabilityAccountId": 0,
  "lendingAccountId": 0,
  "profitLossAccountId": 0,
  "frozen": false
}

Generate Transaction Activity Report

post
Body
accountIdListinteger[]Required

Array of account IDs.

omsIdintegerRequired

The ID of the Order Management System.

startTimestring · date-timeRequired

Start time for the report.

endTimestring · date-timeRequired

End time for the report.

Responses
200
Successful report generation request.
application/json
post
POST / HTTP/1.1
Host: GenerateTransactionActivityReport
Content-Type: application/json
Accept: */*
Content-Length: 99

{
  "accountIdList": [
    0
  ],
  "omsId": 0,
  "startTime": "0001-01-01T05:00:00Z",
  "endTime": "0001-01-01T05:00:00Z"
}
200

Successful report generation request.

{
  "RequestingUser": 1,
  "OMSId": 1,
  "reportFlavor": {
    "Options": [
      "Transaction"
    ]
  },
  "createTime": "2018-08-17T15:46:07Z",
  "initialRunTime": "2018-08-17T15:46:07Z",
  "intervalStartTime": "2019-04-10T04:00:00Z",
  "intervalEndTime": "2020-04-10T04:00:00Z",
  "RequestStatus": {
    "Options": [
      "Submitted"
    ]
  },
  "ReportFrequency": {
    "Options": [
      "onDemand"
    ]
  },
  "intervalDuration": 316224000000000,
  "RequestId": "+QgyhnEFqEazyZ46Q902MA==",
  "lastInstanceId": null,
  "accountIds": [
    1
  ]
}

Generate Trade Activity Report

post
Body
accountIdListinteger[]Required

Array of account IDs.

omsIdintegerRequired

The ID of the Order Management System.

startTimestring · date-timeRequired

Start time for the report.

endTimestring · date-timeRequired

End time for the report.

Responses
200
Successful report generation request.
application/json
post
POST / HTTP/1.1
Host: GenerateTradeActivityReport
Content-Type: application/json
Accept: */*
Content-Length: 99

{
  "accountIdList": [
    0
  ],
  "omsId": 0,
  "startTime": "0001-01-01T05:00:00Z",
  "endTime": "0001-01-01T05:00:00Z"
}
200

Successful report generation request.

{
  "RequestingUser": 1,
  "OMSId": 1,
  "reportFlavor": {
    "Options": [
      "TradeActivity"
    ]
  },
  "createTime": "2018-08-17T15:34:20Z",
  "initialRunTime": "2018-08-17T15:34:20Z",
  "intervalStartTime": "2019-04-10T04:00:00Z",
  "intervalEndTime": "2020-04-10T04:00:00Z",
  "RequestStatus": {
    "Options": [
      "Submitted"
    ]
  },
  "ReportFrequency": {
    "Options": [
      "onDemand"
    ]
  },
  "intervalDuration": 316224000000000,
  "RequestId": "Moy/IpfPA0SLUHNYt54q4w==",
  "lastInstanceId": null,
  "accountIds": [
    1
  ]
}

Get All Account Configs

get
Query parameters
keystringRequired

The key to retrieve.

Responses
200
Successful retrieval of account configs.
application/json
get
200

Successful retrieval of account configs.

Get Treasury Products for Account

get
Query parameters
AccountIdintegerRequired

The ID of the account.

OMSIdintegerRequired

The ID of the Order Management System.

Responses
200
Successful retrieval of treasury products.
application/json
Responsestring[]
get
200

Successful retrieval of treasury products.

GET / HTTP/1.1
Host: GetAllAccountConfigs?key=text
Accept: */*
[
  {
    "AccountId": 0,
    "Key": "Config1",
    "Value": "Config1Val"
  }
]
GET / HTTP/1.1
Host: GetTreasuryProductsForAccount?AccountId=1&OMSId=1
Accept: */*
[
  "LTC",
  "BTC",
  "USD"
]

Generate Treasury Activity Report

post
Body
accountIdListinteger[]Required

Array of account IDs.

omsIdintegerRequired

The ID of the Order Management System.

startTimestring · date-timeRequired

Start time for the report.

endTimestring · date-timeRequired

End time for the report.

Responses
200
Successful report generation request.
application/json
post
POST / HTTP/1.1
Host: GenerateTreasuryActivityReport
Content-Type: application/json
Accept: */*
Content-Length: 99

{
  "accountIdList": [
    0
  ],
  "omsId": 0,
  "startTime": "0001-01-01T05:00:00Z",
  "endTime": "0001-01-01T05:00:00Z"
}
200

Successful report generation request.

{
  "RequestingUser": 1,
  "OMSId": 1,
  "reportFlavor": {
    "Options": [
      "Treasury"
    ]
  },
  "createTime": "2018-08-17T15:38:59Z",
  "initialRunTime": "2018-08-17T15:38:59Z",
  "intervalStartTime": "2019-04-10T04:00:00Z",
  "intervalEndTime": "2020-04-10T04:00:00Z",
  "RequestStatus": {
    "Options": [
      "Submitted"
    ]
  },
  "ReportFrequency": {
    "Options": [
      "onDemand"
    ]
  },
  "intervalDuration": 316224000000000,
  "RequestId": "adduAIKE6Ee0eGxFM+ydsg==",
  "lastInstanceId": null,
  "accountIds": [
    1
  ]
}

Get Account Positions

get
Query parameters
AccountIdintegerRequired

The ID of the account.

OMSIdintegerRequired

The ID of the Order Management System.

IncludePendingbooleanOptional

Include pending positions?

Responses
200
Successful retrieval of account positions.
application/json
get
GET / HTTP/1.1
Host: GetAccountPositions?AccountId=1&OMSId=1
Accept: */*
200

Successful retrieval of account positions.

[
  {
    "omsId": 1,
    "accountId": 4,
    "productSymbol": "BTC",
    "productId": 1,
    "amount": 0,
    "hold": 0,
    "pendingDeposits": 0,
    "pendingWithdraws": 0,
    "totalDayDeposits": 0,
    "totalMonthDeposits": 0,
    "totalYearDeposits": 0,
    "totalYearDepositNotional": 0,
    "totalDayWithdraws": 0,
    "totalMonthWithdraws": 0,
    "totalYearWithdraws": 0,
    "totalYearWithdrawNotional": 0,
    "notionalHoldAmount": 0,
    "notionalRate": 0,
    "totalDayDepositNotional": 0,
    "totalMonthDepositNotional": 0,
    "totalDayWithdrawNotional": 0,
    "totalMonthWithdrawNotional": 0
  }
]

Get Account Trades

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

accountIdintegerRequired

The ID of the account.

executionIdintegerOptional

The specific execution ID (0 for all).

tradeIdintegerOptional

The specific trade ID (0 for all).

orderIdintegerOptional

The specific order ID (0 for all).

userIdintegerOptional

The ID of the user.

startTimestampintegerOptional

Start timestamp (seconds since epoch).

endTimestampintegerOptional

End timestamp (seconds since epoch).

depthintegerOptional

Maximum number of trade records to retrieve.

StartIndexintegerOptional

Starting index into the history of trades.

Responses
200
Successful retrieval of trades.
application/json
get
GET / HTTP/1.1
Host: GetAccountTrades?OMSId=1&accountId=1
Accept: */*
200

Successful retrieval of trades.

[
  {
    "OMSId": 0,
    "ExecutionId": 0,
    "TradeId": 0,
    "OrderId": 0,
    "AccountId": 0,
    "AccountName": "",
    "SubAccountId": 0,
    "ClientOrderId": 0,
    "InstrumentId": 0,
    "Side": "Buy",
    "OrderType": "Limit",
    "Quantity": 0,
    "RemainingQuantity": 0,
    "Price": 0,
    "Value": 0,
    "CounterParty": "",
    "OrderTradeRevision": 0,
    "Direction": 0,
    "IsBlockTrade": false,
    "Fee": 0,
    "FeeProductId": 0,
    "OrderOriginator": 0,
    "UserName": "",
    "TradeTimeMS": 0,
    "MakerTaker": "Maker",
    "AdapterTradeId": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "IsQuote": 0,
    "TradeTime": 0
  }
]

Get Account Transactions

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerOptional

The ID of the account.

depthintegerOptional

The number of transactions to return.

startIndexintegerOptional

The starting index for transaction records.

transactionIdintegerOptional

The specific transaction ID (0 for all).

referenceIdintegerOptional

The reference ID.

counterPartyintegerOptional

The counterparty ID.

productIdintegerOptional

The product ID.

userIdintegerOptional

The ID of the user.

startTimestampintegerOptional

Start timestamp (seconds since epoch).

endTimestampintegerOptional

End timestamp (seconds since epoch).

transactionTypesinteger[]Optional

List of transaction types to filter by.

transactionReferenceTypesinteger[]Optional

List of transaction reference types to filter by.

Responses
200
Successful retrieval of transactions.
application/json
get
200

Successful retrieval of transactions.

GET /account/transactions?omsId=1 HTTP/1.1
Host: 
Accept: */*
[
  {
    "transactionId": 0,
    "omsId": 0,
    "accountId": 0,
    "cr": 0,
    "dr": 0,
    "counterparty": 0,
    "transactionType": 0,
    "referenceId": 0,
    "referenceType": 0,
    "productId": 0,
    "balance": 0,
    "timeStamp": 0
  }
]

Schedule Trade Activity Report

post
Body
accountIdListinteger[]Required

Array of account IDs.

omsIdintegerRequired

The ID of the Order Management System.

beginTimestring · date-timeRequired

Start time for the reports.

intervalDurationintegerRequired

Report interval duration in days.

Responses
200
Successful report scheduling request.
application/json
post
POST / HTTP/1.1
Host: ScheduleTradeActivityReport
Content-Type: application/json
Accept: */*
Content-Length: 126

{
  "frequency": {
    "Options": [
      "Daily"
    ]
  },
  "accountIdList": [
    1
  ],
  "omsId": 1,
  "beginTime": "2018-08-10T04:00:00.000Z",
  "intervalDuration": 10
}
200

Successful report scheduling request.

{
  "RequestingUser": 1,
  "OMSId": 1,
  "reportFlavor": {
    "Options": [
      "TradeActivity"
    ]
  },
  "createTime": "2018-08-17T17:57:51Z",
  "initialRunTime": "2018-08-10T04:00:00Z",
  "intervalStartTime": "2018-08-10T04:00:00Z",
  "intervalEndTime": "2018-08-10T05:00:00Z",
  "RequestStatus": {
    "Options": [
      "Submitted"
    ]
  },
  "ReportFrequency": {
    "Options": [
      "Daily"
    ]
  },
  "intervalDuration": 36000000000,
  "RequestId": "mGzjUfylGEmqgJIxu651aQ==",
  "lastInstanceId": null,
  "accountIds": [
    1
  ]
}

Get Ticker History

get
Query parameters
InstrumentIdintegerRequired

The ID of the instrument.

IntervalintegerRequired

The time between ticks in seconds.

FromDatestring · dateRequired

Oldest date for ticker history (YYYY-MM-DD).

ToDatestring · dateRequired

Most recent date for ticker history (YYYY-MM-DD).

OMSIdintegerRequired

The ID of the Order Management System.

Responses
200
Successful retrieval of ticker history.
application/json
get
GET / HTTP/1.1
Host: GetTickerHistory?InstrumentId=1&Interval=1&FromDate=2025-06-07&ToDate=2025-06-07&OMSId=1
Accept: */*
200

Successful retrieval of ticker history.

[
  [
    1501603632000,
    2700.33,
    2687.01,
    2687.01,
    2687.01,
    24.86100992,
    0,
    2870.95,
    1
  ],
  [
    1501604532000,
    2792.73,
    2667.95,
    2687.01,
    2700.81,
    242.61340767,
    0,
    2871,
    0
  ]
]

Get Open Trade Reports

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

AccountIdintegerRequired

The ID of the account.

Responses
200
Successful retrieval of open trade reports.
application/json
get
GET / HTTP/1.1
Host: GetOpenTradeReports?OMSId=1&AccountId=1
Accept: */*
200

Successful retrieval of open trade reports.

[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Get All Open Block Trade Reports

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

InstrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful retrieval of open block trade reports.
application/json
get
GET / HTTP/1.1
Host: GetAllOpenTradeReports?OMSId=1&InstrumentId=1
Accept: */*
200

Successful retrieval of open block trade reports.

[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Get Trades History

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerOptional

The account ID.

instrumentIdintegerOptional

The instrument ID.

tradeIdintegerOptional

The trade ID.

orderIdintegerOptional

The order ID.

userIdintegerOptional

The user ID.

startTimestampintegerOptional

Start timestamp (POSIX format).

endTimestampintegerOptional

End timestamp (POSIX format).

depthintegerOptional

The number of trades to return.

startIndexintegerOptional

The starting index.

executionIdintegerOptional

The execution ID.

get

Cancel Order

post
Body
OMSIdintegerOptional

The Order Management System ID.

AccountIdintegerOptional

The account ID.

ClOrderIdintegerOptional

The client order ID.

OrderIdintegerOptional

The order ID.

Responses
200
Successful cancellation request.
application/json
post
POST / HTTP/1.1
Host: CancelOrder
Content-Type: application/json
Accept: */*
Content-Length: 51

{
  "OMSId": 0,
  "AccountId": 0,
  "ClOrderId": 0,
  "OrderId": 0
}
200

Successful cancellation request.

{
  "result": true,
  "errormsg": "",
  "errorcode": 0,
  "detail": ""
}
GET / HTTP/1.1
Host: GetTradesHistory?omsId=1
Accept: */*

Cancel All Orders

post
Body
AccountIdintegerOptional

The account ID.

OMSIdintegerOptional

The Order Management System ID.

Responses
200
Successful cancellation.
application/json
post
POST / HTTP/1.1
Host: CancelAllOrders
Content-Type: application/json
Accept: */*
Content-Length: 25

{
  "AccountId": 0,
  "OMSId": 0
}
200

Successful cancellation.

{
  "result": true,
  "errormsg": "",
  "errorcode": 0,
  "detail": ""
}

Get OMS Fee Tiers

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

instrumentIdintegerRequired

The ID of the instrument.

Responses
200
Successful retrieval of fee tiers.
application/json
get
GET /oms-fee-tiers?omsId=1&instrumentId=1 HTTP/1.1
Host: 
Accept: */*
200

Successful retrieval of fee tiers.

[
  {
    "omsId": 0,
    "accountId": 0,
    "instrumentId": 0,
    "orderType": "Unknown",
    "feeId": 0,
    "feeAmt": 0,
    "feeCalcType": "Percentage",
    "feeType": "Flat",
    "ladderThreshold": 0,
    "ladderSeconds": 0,
    "isActive": true
  }
]

Cancel Quote

post
Body
omsIdintegerOptional

The Order Management System ID.

accountIdintegerOptional

The account ID.

instrumentIdintegerOptional

The instrument ID.

bidQuoteIdintegerOptional

The bid quote ID.

askQuoteIdintegerOptional

The ask quote ID.

Responses
200
Successful cancellation request.
application/json
post
POST / HTTP/1.1
Host: CancelQuote
Content-Type: application/json
Accept: */*
Content-Length: 72

{
  "omsId": 0,
  "accountId": 0,
  "instrumentId": 0,
  "bidQuoteId": 0,
  "askQuoteId": 0
}
200

Successful cancellation request.

{
  "BidResult": {
    "result": true,
    "errormsg": "",
    "errorcode": 0,
    "detail": ""
  },
  "AskResult": {
    "result": true,
    "errormsg": "",
    "errorcode": 0,
    "detail": ""
  }
}

Create Quote

post
Body
OMSIdintegerOptional

The Order Management System ID.

AccountIdintegerOptional

The account ID.

InstrumentIdintegerOptional

The instrument ID.

Bidnumber · floatOptional

The bid price.

BidQtynumber · floatOptional

The bid quantity.

Asknumber · floatOptional

The ask price.

AskQtynumber · floatOptional

The ask quantity.

Responses
200
Successful quote creation request.
application/json
post
POST / HTTP/1.1
Host: CreateQuote
Content-Type: application/json
Accept: */*
Content-Length: 80

{
  "OMSId": 0,
  "AccountId": 0,
  "InstrumentId": 0,
  "Bid": 0,
  "BidQty": 0,
  "Ask": 0,
  "AskQty": 0
}
200

Successful quote creation request.

{
  "bidQouteId": 0,
  "BidResult": {
    "result": true,
    "errormsg": "",
    "errorcode": 0,
    "detail": ""
  },
  "askQouteId": 0,
  "AskResult": {
    "result": true,
    "errormsg": "",
    "errorcode": 0,
    "detail": ""
  }
}

Get Open Orders

get
Query parameters
OMSIdintegerRequired

The ID of the Order Management System.

AccountIdintegerRequired

The account ID.

InstrumentIdintegerOptional

The instrument ID.

Responses
200
Successful retrieval of open orders.
application/json
get
200

Successful retrieval of open orders.

Get Open Quotes

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerRequired

The account ID.

instrumentIdintegerRequired

The instrument ID.

Responses
200
Successful retrieval of open quotes.
application/json
get
200

Successful retrieval of open quotes.

GET / HTTP/1.1
Host: GetOpenOrders?OMSId=1&AccountId=1
Accept: */*
[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Cancel Replace Order

post
Body
omsIdintegerOptional

The Order Management System ID.

orderIdToReplaceintegerOptional

The ID of the order to replace.

clientOrdIdintegerOptional

The client order ID for the replacement order.

orderTypeinteger · enumOptional

The type of the replacement order.

Possible values:
sideinteger · enumOptional

The side of the replacement order.

Possible values:
accountIdintegerOptional

The account ID.

instrumentIdintegerOptional

The instrument ID.

useDisplayQuantitybooleanOptional

Use display quantity.

displayQuantitynumber · floatOptional

The displayed quantity.

limitPricenumber · floatOptional

The limit price.

stopPricenumber · floatOptional

The stop price.

referencePricenumber · floatOptional

The reference price.

pegPriceTypeinteger · enumOptional

The peg price type.

Possible values:
timeInForceinteger · enumOptional

The time in force.

Possible values:
orderIdOCOintegerOptional

One Cancels the Other order ID.

quantitynumber · floatOptional

The quantity.

Responses
200
Successful cancellation and replacement.
application/json
post
POST / HTTP/1.1
Host: CancelReplaceOrder
Content-Type: application/json
Accept: */*
Content-Length: 258

{
  "omsId": 0,
  "orderIdToReplace": 0,
  "clientOrdId": 0,
  "orderType": 0,
  "side": 0,
  "accountId": 0,
  "instrumentId": 0,
  "useDisplayQuantity": false,
  "displayQuantity": 0,
  "limitPrice": 0,
  "stopPrice": 0,
  "referencePrice": 0,
  "pegPriceType": 0,
  "timeInForce": 0,
  "orderIdOCO": 0,
  "quantity": 0
}
200

Successful cancellation and replacement.

{
  "replacementOrderId": 1234,
  "replacementClOrdId": 1561,
  "origOrderId": 5678,
  "origClOrdId": 91011
}
GET / HTTP/1.1
Host: GetOpenQuotes?omsId=1&accountId=1&instrumentId=1
Accept: */*
{
  "bid": {
    "omsId": 0,
    "side": 0,
    "orderId": 0,
    "price": 0,
    "quantity": 0,
    "displayQuantity": 0,
    "instrument": 0,
    "account": 0,
    "orderType": 0,
    "clientOrderId": 0,
    "orderState": 0
  },
  "ask": {
    "omsId": 0,
    "side": 0,
    "orderId": 0,
    "price": 0,
    "quantity": 0,
    "displayQuantity": 0,
    "instrument": 0,
    "account": 0,
    "orderType": 0,
    "clientOrderId": 0,
    "orderState": 0
  }
}

Get Order Status

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerRequired

The account ID.

orderIdintegerRequired

The ID of the order.

Responses
200
Successful retrieval of order status.
application/json
get
GET / HTTP/1.1
Host: GetOrderStatus?omsId=1&accountId=1&orderId=1
Accept: */*
200

Successful retrieval of order status.

[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Get Orders History

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

accountIdintegerOptional

The account ID.

clientOrderIdintegerOptional

The client order ID.

originalOrderIdintegerOptional

The original order ID.

originalClientOrderIdintegerOptional

The original client order ID.

userIdintegerOptional

The user ID.

instrumentIdintegerOptional

The instrument ID.

startTimestampintegerOptional

The start timestamp (POSIX format).

endTimestampintegerOptional

The end timestamp (POSIX format).

depthintegerOptional

The count of orders to return.

startIndexintegerOptional

The starting index.

Responses
200
Successful retrieval of orders history.
application/json
get
GET / HTTP/1.1
Host: GetOrdersHistory?omsId=1
Accept: */*
200

Successful retrieval of orders history.

[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]

Get Order Fee

get
Query parameters
omsIdintegerRequired

The Order Management System ID.

accountIdintegerRequired

The account ID.

instrumentIdintegerRequired

The instrument ID.

productIdintegerRequired

The product ID.

amountnumber · floatRequired

The amount of the trade.

pricenumber · floatRequired

The price of the trade.

orderTypeinteger · enumRequired

The type of the order.

Possible values:
makerTakerinteger · enumRequired

The maker/taker status.

Possible values:
sideinteger · enumRequired

The side of the trade.

Possible values:
Responses
200
Successful retrieval of order fee.
application/json
get
200

Successful retrieval of order fee.

Get Order History by Order ID

get
Query parameters
omsIdintegerRequired

The ID of the Order Management System.

orderIdintegerRequired

The ID of the order.

Responses
200
Successful retrieval of order history.
application/json
get
200

Successful retrieval of order history.

GET / HTTP/1.1
Host: GetOrderFee?omsId=1&accountId=1&instrumentId=1&productId=1&amount=1&price=1&orderType=0&makerTaker=0&side=0
Accept: */*
{
  "OrderFee": 0.01,
  "ProductId": 1
}
GET / HTTP/1.1
Host: GetOrderHistoryByOrderId?omsId=1&orderId=1
Accept: */*
[
  {
    "Side": "Buy",
    "OrderId": 0,
    "Price": 0,
    "Quantity": 0,
    "DisplayQuantity": 0,
    "Instrument": 0,
    "Account": 0,
    "OrderType": "Unknown",
    "ClientOrderId": 0,
    "OrderState": "Unknown",
    "ReceiveTime": 0,
    "ReceiveTimeTicks": 0,
    "OrigQuantity": 0,
    "QuantityExecuted": 0,
    "AvgPrice": 0,
    "CounterPartyId": 0,
    "ChangeReason": "Unknown",
    "OrigOrderId": 0,
    "OrigClOrdId": 0,
    "EnteredBy": 0,
    "IsQuote": false,
    "InsideAsk": 0,
    "InsideAskSize": 0,
    "InsideBid": 0,
    "InsideBidSize": 0,
    "LastTradePrice": 0,
    "RejectReason": "",
    "IsLockedIn": false,
    "CancelReason": "",
    "OMSId": 0
  }
]