Bamboo Invest Stock Trading API

The Stock Trading API from Bamboo Invest — 1 operation(s) for stock trading.

OpenAPI Specification

bamboo-stock-trading-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Bamboo Account Management Stock Trading API
  version: ''
  description: "Account creation enables users to invest on Bamboo. Ensure KYC has been completed and each user’s identity verified before creating a brokerage account.\n\n**Best Practice:** To avoid maintenance fees on inactive accounts, create and fund brokerage accounts **only when users initiate their first trade**. You may collect account details in advance but delay sending the request until they’re ready to buy.\n\n##### Prerequisites\n- **Minimum Age:** 18 years (verified via government-issued ID)\n- **Compliance:** Must meet local investment regulations\n\n##### Document Requirements\n<table>\n  <thead>\n    <tr>\n      <th>Country</th>\n      <th>Primary ID</th>\n      <th>Image Requirements</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>Nigeria</th>\n      <td>BVN</td>\n      <td>Passport photo</td>\n    </tr>\n    <tr>\n      <th>Ghana</th>\n      <td>National ID</td>\n      <td>Front & back ID images</td>\n    </tr>\n    <tr>\n      <th>South Africa</th>\n      <td>National ID</td>\n      <td>Front & back ID images</td>\n    </tr>\n  </tbody>\n</table>\n\n**Note:** Images must be in Base64 format. The `front_id_image` and `back_id_image` fields apply only to Ghana and South Africa.\n\n##### Phone Number Format\n- Must be in international format (e.g., +2347083864023)\n- Country code must match user’s residence\n- Used for notifications and account security\n"
servers:
- url: https://powered-by-bamboo-sandbox.investbamboo.com
tags:
- name: Stock Trading
paths:
  /api/lsx/ng/order:
    post:
      tags:
      - Stock Trading
      summary: Place An Order on the NGX Market
      description: 'If the user is eligible to make trades, this endpoint is used to place an order using the result of the calculated order  endpoint. Please note: Tenants are to place just MARKET order type.

        '
      operationId: Web.Api.OrderController.order
      parameters:
      - name: content-type
        in: header
        description: Acceptable content type
        example: application/json
        required: true
        schema:
          type: string
      - name: accept-language
        in: header
        description: Acceptable language; 'en' for English
        example: en
        required: true
        schema:
          type: string
      - name: x-user-id
        in: header
        description: Required for user authentication
        required: true
        schema:
          type: string
      - name: x-subject-type
        in: header
        description: For user request -> 'tenant'.
        required: true
        schema:
          type: string
      - name: x-client-token
        in: header
        description: API Consumer Authorisation Token
        required: true
        schema:
          type: string
      - name: currency
        in: header
        description: NGN - to order in Naira
        schema:
          type: string
      requestBody:
        description: Order params
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lsxngorder'
        required: true
      responses:
        '200':
          description: Order ID
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/lsxngorder_response'
        '401':
          description: Token have expired or invalid token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourceNotFound'
        '422':
          description: Error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    lsxngorder:
      title: NGX place order request
      required:
      - fee
      - order_type
      - order_value
      - price
      - price_per_share
      - quantity
      - side
      - source_wallet_id
      - symbol
      - total_price
      type: object
      properties:
        fee:
          type: number
          description: Fee from calculate order response
          example: 0.01
        order_type:
          type: string
          description: 'Order type options: `MARKET` only for NG Market.'
          default: MARKET
        order_value:
          type: string
          description: Total price debited from the user including fee
          example: 1.01
        price:
          type: number
          description: Price for order
          default: 8
        price_per_share:
          type: number
          description: Price per share for all order
          default: 8.27
        quantity:
          type: number
          description: Order quantity in share amounts for all order types.
          default: 1.941176
        side:
          type: string
          description: 'Order side options: `BUY` or `SELL`'
          default: BUY
        source_wallet_id:
          type: integer
          description: source_wallet_id
          example: 0
        symbol:
          type: string
          description: Stock symbol to `BUY` or `SELL`
          default: DDD
        total_price:
          type: number
          description: Total invested price, without fee
          default: 1
    Unauthorized:
      title: Unauthorized response
      required:
      - message
      type: object
      properties:
        message:
          type: string
          description: Unauthorized/Invalid Token/Token has expired
          example: Invalid client token supplied.
      description: Token is invalid or have expired
    lsxngorder_response:
      title: Order response
      required:
      - order_id
      type: object
      properties:
        order_id:
          type: string
          description: Order ID to fetch status by REST
          example: BB.LAMB_21046bcd-0400-4ac1-a6a1-91c439455ef2
    ErrorResponse:
      title: Error response
      required:
      - message
      type: object
      properties:
        message:
          type: string
          description: Error response for external or internal errors not connected to data
          example: Message why request didn't succeed
      description: Error response for external or internal errors not connected to data
    ResourceNotFound:
      title: Resource not found
      required:
      - message
      type: object
      properties:
        message:
          type: string
          description: Resource not found (an incorrect url may have been used)
          example: Resource Not Found
      description: Error response for when the resource is not found within our data.
x-logo:
  url: bamboo-logo.png
  altText: bamboo logo
x-tagGroups:
- name: Authentication
  tags:
  - Authentication
  - Account Management
- name: Money Movement
  tags:
  - Overview
  - Deposits
  - Withdrawals
- name: US Brokerage Services
  tags:
  - Portfolio Reporting
  - US Securities
  - US Stock Trading
  - US Stock Events
- name: Utilities
  tags:
  - Dictionaries
  - Market Activity
  - Exchange Rate
  - Featured Themes
  - Financial Documents