FOREX.com Orders API

Trade order placement and management

OpenAPI Specification

forex-com-orders-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: FOREX.com REST Account Orders API
  description: The FOREX.com REST API, hosted at ciapi.cityindex.com/TradingAPI, enables algorithmic traders to authenticate sessions, retrieve real-time and historical price data, execute buy/sell orders across 80+ forex and CFD markets, and manage account balances, positions, and order history programmatically. Authentication uses a session-based header credential obtained from the /session endpoint. A separate FIX API is available for institutional clients.
  version: 1.0.0
  contact:
    name: FOREX.com API Support
    url: https://www.forex.com/en/help-and-support/
    email: support.en@forex.com
  termsOfService: https://www.forex.com/en-us/help-and-support/pricing-and-fees/
  x-api-id: forex-com-trading-api
  x-logo:
    url: https://www.forex.com/favicon.ico
servers:
- url: https://ciapi.cityindex.com/TradingAPI
  description: FOREX.com REST API Base URL
security:
- SessionAuth: []
  UserNameAuth: []
tags:
- name: Orders
  description: Trade order placement and management
paths:
  /order/newtradeorder:
    post:
      operationId: newTradeOrder
      summary: Place a new market trade order
      description: Place a new market price trade order on the FOREX.com platform. Executes immediately at the current market bid/ask price. Supports configurable direction (buy/sell), quantity, stop-loss, take-profit, and price tolerance for slippage control.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewTradeOrderRequest'
            example:
              Direction: buy
              MarketId: 400616380
              Quantity: 10000
              MarketName: EUR/USD
              TradingAccountId: 12345678
              OfferPrice: 1.08532
              PriceTolerance: 10
              IfDone:
              - Stop:
                  TriggerPrice: 1.075
                  Direction: sell
                  Quantity: 10000
                Limit:
                  TriggerPrice: 1.095
                  Direction: sell
                  Quantity: 10000
      responses:
        '200':
          description: Trade order result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradeOrderResponse'
  /order/newstoplimitorder:
    post:
      operationId: newStopLimitOrder
      summary: Place a new stop or limit order
      description: Place a new stop or limit order that triggers at a specified price. Used for entry orders that execute when the market reaches the TriggerPrice.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NewStopLimitOrderRequest'
      responses:
        '200':
          description: Stop/limit order result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TradeOrderResponse'
  /order/activeorders:
    post:
      operationId: listActiveOrders
      summary: List active orders
      description: Retrieve a list of active (pending) orders for the specified trading account.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActiveOrdersRequest'
            example:
              TradingAccountId: 12345678
              MaxResults: 100
      responses:
        '200':
          description: Active orders retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActiveOrdersResponse'
  /order/cancel:
    post:
      operationId: cancelOrder
      summary: Cancel an active order
      description: Cancel a pending active order by its OrderId.
      tags:
      - Orders
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelOrderRequest'
            example:
              TradingAccountId: 12345678
              OrderId: 987654321
      responses:
        '200':
          description: Order cancellation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelOrderResponse'
components:
  schemas:
    NewStopLimitOrderRequest:
      type: object
      required:
      - Direction
      - MarketId
      - Quantity
      - TradingAccountId
      - OfferPrice
      - TriggerPrice
      properties:
        Direction:
          type: string
          enum:
          - buy
          - sell
          description: Trade direction
        MarketId:
          type: integer
          description: Market ID for the instrument
        Quantity:
          type: number
          format: double
          description: Trade quantity
        MarketName:
          type: string
          description: Market name
        TradingAccountId:
          type: integer
          description: Trading account ID
        OfferPrice:
          type: number
          format: double
          description: Offer price
        TriggerPrice:
          type: number
          format: double
          description: Price at which the stop/limit order triggers
        IfDone:
          type: array
          items:
            $ref: '#/components/schemas/IfDoneOrder'
    IfDoneOrder:
      type: object
      properties:
        Stop:
          $ref: '#/components/schemas/ConditionalOrder'
        Limit:
          $ref: '#/components/schemas/ConditionalOrder'
    ActiveOrdersResponse:
      type: object
      properties:
        ActiveOrders:
          type: array
          items:
            $ref: '#/components/schemas/ActiveOrder'
    ConditionalOrder:
      type: object
      properties:
        TriggerPrice:
          type: number
          format: double
          description: Price at which to trigger the conditional order
        Direction:
          type: string
          enum:
          - buy
          - sell
          description: Direction of the conditional order (opposite of parent order)
        Quantity:
          type: number
          format: double
          description: Quantity for the conditional order
    TradeOrderResponse:
      type: object
      properties:
        OrderId:
          type: integer
          description: Order ID assigned to the trade
        StatusReason:
          type: integer
          description: Reason code for order status
        Status:
          type: integer
          description: Order status code
        Price:
          type: number
          format: double
          description: Execution price
        AuditId:
          type: string
          description: Audit ID for the order
    CancelOrderRequest:
      type: object
      required:
      - TradingAccountId
      - OrderId
      properties:
        TradingAccountId:
          type: integer
          description: Trading account ID
        OrderId:
          type: integer
          description: Order ID to cancel
    NewTradeOrderRequest:
      type: object
      required:
      - Direction
      - MarketId
      - Quantity
      - TradingAccountId
      - OfferPrice
      properties:
        Direction:
          type: string
          enum:
          - buy
          - sell
          description: Trade direction
        MarketId:
          type: integer
          description: Market ID for the instrument to trade
        Quantity:
          type: number
          format: double
          description: Trade quantity
        MarketName:
          type: string
          description: Market name (e.g. EUR/USD)
        TradingAccountId:
          type: integer
          description: Trading account ID
        OfferPrice:
          type: number
          format: double
          description: Offer (ask) price at time of order
        PriceTolerance:
          type: number
          format: double
          description: Slippage tolerance in pips (default 10)
          default: 10
        IfDone:
          type: array
          description: Conditional stop-loss and take-profit orders
          items:
            $ref: '#/components/schemas/IfDoneOrder'
    ActiveOrdersRequest:
      type: object
      required:
      - TradingAccountId
      properties:
        TradingAccountId:
          type: integer
          description: Trading account ID
        MaxResults:
          type: integer
          description: Maximum number of results to return
          default: 100
    CancelOrderResponse:
      type: object
      properties:
        OrderId:
          type: integer
        StatusReason:
          type: integer
        Status:
          type: integer
    ActiveOrder:
      type: object
      properties:
        OrderId:
          type: integer
        MarketId:
          type: integer
        MarketName:
          type: string
        Direction:
          type: string
          enum:
          - buy
          - sell
        Quantity:
          type: number
          format: double
        TriggerPrice:
          type: number
          format: double
        Status:
          type: integer
        StatusReason:
          type: integer
  securitySchemes:
    SessionAuth:
      type: apiKey
      in: header
      name: Session
      description: Session ID obtained from POST /session
    UserNameAuth:
      type: apiKey
      in: header
      name: UserName
      description: FOREX.com account username
externalDocs:
  description: FOREX.com API Trading Documentation
  url: https://www.forex.com/en/trading-tools/api-trading/