BitOasis Exchange API

The BitOasis v1 Exchange REST API — public market data plus authenticated account, order, deposit, and withdrawal operations for the MENA crypto exchange. Bearer API-token authentication.

OpenAPI Specification

bitoasis-exchange-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: BitOasis Exchange API
  version: v1
  description: >-
    The BitOasis Exchange REST API for the MENA region's crypto exchange. Provides
    public market data (markets, tickers, order books, trades) and authenticated
    account operations (balances, banks, order placement/cancellation, and crypto
    and fiat deposits/withdrawals). Trading pairs are quoted against the UAE Dirham
    (AED) and other fiat, e.g. BTC-AED. Authentication uses a Bearer API token
    generated from Settings > Security > Token Management. This description is
    derived faithfully from BitOasis' first-party open-source MCP client
    (github.com/bit-oasis/bitoasis-mcp, src/bitoasis_mcp/client.py) which wraps the
    same https://api.bitoasis.net/v1 REST surface documented at
    https://api.bitoasis.net/doc/.
  x-provenance:
    generated: '2026-07-18'
    method: derived
    source: https://raw.githubusercontent.com/bit-oasis/bitoasis-mcp/main/src/bitoasis_mcp/client.py
  contact:
    name: BitOasis Support
    email: support@bitoasis.net
    url: https://support.bitoasis.net/
  license:
    name: Proprietary
servers:
  - url: https://api.bitoasis.net/v1
    description: Production
tags:
  - name: Market Data
    description: Public market data endpoints (no authentication required).
  - name: Account
    description: Authenticated account balances and registered banks.
  - name: Orders
    description: Place, cancel, and read Pro exchange orders.
  - name: Coin Deposits
    description: Digital-asset deposit history and address generation.
  - name: Coin Withdrawals
    description: Digital-asset withdrawal history, fees, and creation.
  - name: Fiat Deposits
    description: Fiat deposit history.
  - name: Fiat Withdrawals
    description: Fiat withdrawal history, creation, and cancellation.
security:
  - bearerAuth: []
paths:
  /exchange/markets:
    get:
      operationId: getMarkets
      tags: [Market Data]
      summary: List markets
      description: List all tokens and trading pairs available on the exchange.
      security: []
      responses:
        '200':
          description: Markets list.
  /exchange/ticker/{pair}:
    get:
      operationId: getTicker
      tags: [Market Data]
      summary: Get ticker
      description: Current price and ticker for a trading pair (e.g. BTC-AED).
      security: []
      parameters:
        - $ref: '#/components/parameters/Pair'
      responses:
        '200':
          description: Ticker for the pair.
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/order-book/{pair}:
    get:
      operationId: getOrderBook
      tags: [Market Data]
      summary: Get order book
      description: Bids and asks for a trading pair.
      security: []
      parameters:
        - $ref: '#/components/parameters/Pair'
        - name: bids_limit
          in: query
          required: false
          schema: { type: integer }
        - name: asks_limit
          in: query
          required: false
          schema: { type: integer }
      responses:
        '200':
          description: Order book for the pair.
  /exchange/trades/{pair}:
    get:
      operationId: getTrades
      tags: [Market Data]
      summary: Get recent trades
      description: Recent public trade history for a trading pair.
      security: []
      parameters:
        - $ref: '#/components/parameters/Pair'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Recent trades for the pair.
  /exchange/balances:
    get:
      operationId: getBalances
      tags: [Account]
      summary: Get balances
      description: Your balances across all currencies.
      responses:
        '200':
          description: Balances.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/banks:
    get:
      operationId: getBanks
      tags: [Account]
      summary: Get banks
      description: Your registered bank accounts.
      responses:
        '200':
          description: Registered banks.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/orders/{pair}:
    get:
      operationId: getOrders
      tags: [Orders]
      summary: List orders
      description: List orders for a pair, filterable by status (OPEN/DONE/CANCELED).
      parameters:
        - $ref: '#/components/parameters/Pair'
        - name: status
          in: query
          required: false
          schema: { type: string, enum: [OPEN, DONE, CANCELED] }
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Orders for the pair.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/order/{order_id}:
    get:
      operationId: getOrder
      tags: [Orders]
      summary: Get order
      description: Order details by ID.
      parameters:
        - name: order_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Order details.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/order:
    post:
      operationId: placeOrder
      tags: [Orders]
      summary: Place order
      description: >-
        Place a limit, market, stop, or stop_limit order. Pass test=true to
        validate the order without executing it (sandbox / dry-run mode).
      parameters:
        - name: test
          in: query
          required: false
          description: When true, validates the order without placing it.
          schema: { type: boolean }
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [pair, side, type, amount]
              properties:
                pair: { type: string, example: BTC-AED }
                side: { type: string, enum: [buy, sell] }
                type: { type: string, enum: [limit, market, stop, stop_limit] }
                amount: { type: string }
                price: { type: string }
                stop_price: { type: string }
      responses:
        '200':
          description: Order placed (or validated when test=true).
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/cancel-order:
    post:
      operationId: cancelOrder
      tags: [Orders]
      summary: Cancel order
      description: Cancel an open order by ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [id]
              properties:
                id: { type: integer }
      responses:
        '200':
          description: Order canceled.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/coin-deposits/{currency}:
    get:
      operationId: getCoinDeposits
      tags: [Coin Deposits]
      summary: List coin deposits
      description: Crypto deposit history for a currency.
      parameters:
        - $ref: '#/components/parameters/Currency'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Coin deposits.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/coin-deposit/{deposit_id}:
    get:
      operationId: getCoinDeposit
      tags: [Coin Deposits]
      summary: Get coin deposit
      description: Crypto deposit details by ID.
      parameters:
        - name: deposit_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Coin deposit details.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/coin-deposit:
    post:
      operationId: newCoinDepositAddress
      tags: [Coin Deposits]
      summary: New coin deposit address
      description: Generate a deposit address for a currency (optionally on a network).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [currency]
              properties:
                currency: { type: string }
                network: { type: string }
      responses:
        '200':
          description: Deposit address generated.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/coin-withdrawals/{currency}:
    get:
      operationId: getCoinWithdrawals
      tags: [Coin Withdrawals]
      summary: List coin withdrawals
      description: Crypto withdrawal history for a currency.
      parameters:
        - $ref: '#/components/parameters/Currency'
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Coin withdrawals.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/coin-withdrawal/{withdrawal_id}:
    get:
      operationId: getCoinWithdrawal
      tags: [Coin Withdrawals]
      summary: Get coin withdrawal
      description: Crypto withdrawal details by ID.
      parameters:
        - name: withdrawal_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Coin withdrawal details.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/coin-withdrawal:
    post:
      operationId: newCoinWithdrawal
      tags: [Coin Withdrawals]
      summary: New coin withdrawal
      description: Withdraw crypto to an external address.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [currency, amount, withdrawal_address]
              properties:
                currency: { type: string }
                amount: { type: string }
                withdrawal_address: { type: string }
                withdrawal_address_id: { type: string }
                network: { type: string }
      responses:
        '200':
          description: Withdrawal created.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/coin-withdrawal-fees:
    get:
      operationId: getCoinWithdrawalFees
      tags: [Coin Withdrawals]
      summary: Get coin withdrawal fees
      description: Withdrawal fees per currency.
      responses:
        '200':
          description: Withdrawal fees.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/fiat-deposits:
    get:
      operationId: getFiatDeposits
      tags: [Fiat Deposits]
      summary: List fiat deposits
      description: Fiat deposit history.
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Fiat deposits.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/fiat-deposit/{deposit_id}:
    get:
      operationId: getFiatDeposit
      tags: [Fiat Deposits]
      summary: Get fiat deposit
      description: Fiat deposit details by ID.
      parameters:
        - name: deposit_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Fiat deposit details.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/fiat-withdrawals:
    get:
      operationId: getFiatWithdrawals
      tags: [Fiat Withdrawals]
      summary: List fiat withdrawals
      description: Fiat withdrawal history.
      parameters:
        - $ref: '#/components/parameters/Offset'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/FromDate'
      responses:
        '200':
          description: Fiat withdrawals.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /exchange/fiat-withdrawal/{withdrawal_id}:
    get:
      operationId: getFiatWithdrawal
      tags: [Fiat Withdrawals]
      summary: Get fiat withdrawal
      description: Fiat withdrawal details by ID.
      parameters:
        - name: withdrawal_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Fiat withdrawal details.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: cancelFiatWithdrawal
      tags: [Fiat Withdrawals]
      summary: Cancel fiat withdrawal
      description: Cancel a pending fiat withdrawal.
      parameters:
        - name: withdrawal_id
          in: path
          required: true
          schema: { type: integer }
      responses:
        '200':
          description: Fiat withdrawal canceled.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /exchange/fiat-withdrawal:
    post:
      operationId: newFiatWithdrawal
      tags: [Fiat Withdrawals]
      summary: New fiat withdrawal
      description: Withdraw fiat to a registered bank.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [amount]
              properties:
                amount:
                  type: object
                  required: [value, currency]
                  properties:
                    value: { type: string }
                    currency: { type: string }
                origin: { type: string }
      responses:
        '200':
          description: Fiat withdrawal created.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        API token generated at Settings > Security > Token Management, sent as
        an Authorization: Bearer <token> header. Tokens carry granular read
        permissions (Account Balance, deposit/withdrawal read access, Pro Order
        read access) and optional trade/withdrawal write permissions.
  parameters:
    Pair:
      name: pair
      in: path
      required: true
      description: Trading pair, e.g. BTC-AED.
      schema: { type: string, example: BTC-AED }
    Currency:
      name: currency
      in: path
      required: true
      description: Currency code, e.g. BTC.
      schema: { type: string, example: BTC }
    Offset:
      name: offset
      in: query
      required: false
      schema: { type: integer }
    Limit:
      name: limit
      in: query
      required: false
      schema: { type: integer }
    FromDate:
      name: from_date
      in: query
      required: false
      description: ISO date to filter results from.
      schema: { type: string, format: date }
  responses:
    BadRequest:
      description: Bad request.
    Unauthorized:
      description: Missing or invalid API token.
    NotFound:
      description: Resource not found.