tZERO Trading API

Order management for secondary-market trading (fees, submit, cancel, list orders).

Operations 5

GET /trading/v1/fee Calculates an estimated fee for the trade #
POST /trading/v1/accounts/{accountId}/orders Creates an order for an Account #
GET /trading/v1/accounts/{accountId}/orders Gets All orders placed for an Account #
GET /trading/v1/accounts/{accountId}/orders/{orderId} Retrieve a single order for the given Order Id #
DELETE /trading/v1/accounts/{accountId}/orders/{orderId} Attempts to a Cancel a OPEN Order #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/tzero-trading-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

tzero-trading-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Issuance & Secondary Markets Trading API
  description: APIs to Create Individual broker dealer accounts, Trigger KYC on the investors in the account, Review account information and KYC results, View Primary offering that are available to invest and manage investments in the assets.
servers:
- url: https://gateway-web-api.tzero.com/app
tags:
- name: Trading
  description: Order management for secondary-market trading (fees, submit, cancel, list orders).
paths:
  /trading/v1/fee:
    get:
      tags:
      - Trading
      summary: Calculates an estimated fee for the trade
      description: Calculates anticipated order fees prior to actually submitting order changes and incurring the fees.
      operationId: getOrderFee
      security:
      - x-api-key: []
        bearerAuth: []
      parameters:
      - name: price
        in: query
        required: true
        schema:
          type: string
        description: Price (in USD) of a single unit of the item intended to be traded.
      - name: assetId
        in: query
        required: true
        schema:
          type: string
      - name: quantity
        in: query
        required: true
        schema:
          type: string
        description: The total quantity of the item intended to be traded.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeeResponse'
        '400':
          description: The request is invalid. The provided data must be changed.
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
  /trading/v1/accounts/{accountId}/orders:
    post:
      tags:
      - Trading
      summary: Creates an order for an Account
      description: Creates an order for the Account Id in the URL
      operationId: createOrder
      security:
      - x-api-key: []
        bearerAuth: []
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
        description: Account identifier.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOrderRequest'
            example:
              symbol: tZERO
              assetId: '39737'
              side: BUY
              timeInForce: DAY
              expireDate: '2026-12-31'
              type: LIMIT
              quantity: 100
              limitPrice: 10
              transactionId: TRAN-123
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateOrderResponse'
              example:
                transactionId: TRAN-123
                id: ORDER-123456
                status: SUBMITTED
                symbol: tZERO
                assetId: '39737'
                side: BUY
                timeInForce: DAY
                type: LIMIT
                quantity: 100
                limitPrice: 10
                expireTs: '2026-04-29T23:34:59.000000-04:00'
                createdTs: '2026-04-20T23:34:59.000000-04:00'
                fee: 1.23
        '400':
          description: 'Bad Request (validation failed or invalid payload). Body: `errors` array; each item has `code`, `message`, optional `field`.


            **Submit trade order — example error codes (non-exhaustive):**


            | Code | Meaning |

            |------|---------|

            | TRANSACTION_ID_REQUIRED | transactionId is required. |

            | INVALID_TIME_IN_FORCE | timeInForce value is not recognized. Valid: DAY, GTC, GTD. |

            | EXPIRE_DATE_REQUIRED | expireDate is required when timeInForce is GOOD_TIL_DATE. |

            | EXPIRE_DATE_NOT_ALLOWED | expireDate must be null when timeInForce is DAY. |

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
    get:
      tags:
      - Trading
      summary: Gets All orders placed for an Account
      description: Retrieve a list of orders for the given account, filtered by query parameters when supplied.
      operationId: getOrders
      security:
      - x-api-key: []
        bearerAuth: []
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
        description: Account identifier.
      - name: symbol
        in: query
        required: false
        schema:
          type: string
      - name: assetId
        in: query
        required: false
        schema:
          type: string
      - name: status
        in: query
        required: false
        schema:
          type: string
      - name: from
        in: query
        required: false
        schema:
          type: string
        description: Start of time range filter (ISO-8601).
      - name: to
        in: query
        required: false
        schema:
          type: string
        description: End of time range filter (ISO-8601).
      - name: zone
        in: query
        required: false
        schema:
          type: string
        description: Time zone identifier(America/New_York, America/Los_Angeles) for interpreting `from`/`to`.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrdersListResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '500':
          description: Internal Server Error
  /trading/v1/accounts/{accountId}/orders/{orderId}:
    get:
      tags:
      - Trading
      summary: Retrieve a single order for the given Order Id
      description: Retrieve a single trade order by ID for the given account.
      operationId: getOrder
      security:
      - x-api-key: []
        bearerAuth: []
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
        description: Account identifier.
      - name: orderId
        in: path
        required: true
        schema:
          type: string
        description: Order identifier.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderResponse'
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Order not found
        '500':
          description: Internal Server Error
    delete:
      tags:
      - Trading
      summary: Attempts to a Cancel a OPEN Order
      description: Attempts to Cance a OPEN order associated to the Account Id and Order Id in the URL.
      operationId: cancelOrder
      security:
      - x-api-key: []
        bearerAuth: []
      parameters:
      - name: accountId
        in: path
        required: true
        schema:
          type: string
        description: Account identifier.
      - name: orderId
        in: path
        required: true
        schema:
          type: string
        description: Order identifier.
      responses:
        '202':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelOrderResponse'
        '400':
          description: Bad Request (e.g. missing orderId or transactionId).
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Order not found
        '422':
          description: Order cannot be cancelled
        '500':
          description: Internal Server Error
        '503':
          description: Service Unavailable
components:
  schemas:
    CancelOrderResponse:
      type: object
      required:
      - transactionId
      - status
      - id
      properties:
        transactionId:
          type: string
        id:
          type: string
        status:
          type: string
          enum:
          - CANCEL_REQUESTED
    FeeResponse:
      type: object
      required:
      - fee
      - status
      - feeFormatted
      properties:
        fee:
          type: number
          format: double
          description: The amount in USD which will be charged if the previously proposed trade is completed.
        feeFormatted:
          type: string
          description: A formatted string representing the amount in USD which will be charged if the previously proposed trade is completed
        status:
          type: string
          description: DEPRECATED. Text description roughly equivalent to a HTTP status code
    CreateOrderRequest:
      type: object
      required:
      - transactionId
      - symbol
      - assetId
      - side
      - timeInForce
      - type
      - quantity
      - limitPrice
      properties:
        symbol:
          type: string
        assetId:
          type: string
        side:
          type: string
          description: BUY or SELL
          enum:
          - BUY
          - SELL
        timeInForce:
          type: string
          enum:
          - DAY
          - GTD
          - GTC
          description: 'Time in Force. Accepts (DAY, GTC, GTD)

            '
        expireDate:
          type:
          - string
          - 'null'
          description: Expiration date (yyyy-MM-dd). Required only when timeInForce is GOOD_TIL_DATE; must be null for DAY/GTC.
        type:
          type: string
          enum:
          - LIMIT
        quantity:
          type: number
          format: double
        limitPrice:
          type: number
          format: double
        transactionId:
          type: string
          description: Client-provided transaction identifier for idempotency and tracing.
    OrderResponse:
      type: object
      required:
      - accountId
      - id
      - symbol
      - side
      - type
      - limitPrice
      - quantity
      - filledQuantity
      - leavesQuantity
      - averagePrice
      - timeInForce
      - estimatedFee
      - estimatedSubTotal
      - estimatedGrandTotal
      - assetClass
      - status
      properties:
        accountId:
          type: string
        id:
          type: string
        symbol:
          type: string
        side:
          type: string
          enum:
          - BUY
          - SELL
        type:
          type: string
          enum:
          - LIMIT
        limitPrice:
          type: number
          format: double
        quantity:
          type: number
          format: double
        filledQuantity:
          type: number
          format: double
        leavesQuantity:
          type: number
          format: double
        averagePrice:
          type:
          - number
          - 'null'
          format: double
        timeInForce:
          type: string
          enum:
          - DAY
          - GTD
          - GTC
          description: 'Time until the order is valid for (DAY, GTC, GTD)

            '
        expireTs:
          type:
          - string
          - 'null'
          format: date-time
          description: Optional expiration time for the order when applicable.
        estimatedFee:
          type: number
          format: double
          description: Estimated fee that will be charged if the entire order is executed for exactly the requested limitPrice. This value will become more accurate as more and more quantity are executed and we know actual amounts billed, as opposed to what is listed in limitPrice.
        estimatedSubtotal:
          type: number
          format: double
          description: The total amount a customer will pay for just the securities e.g. (limitPrice * quantity). This does not include the fee.This value will become more accurate as more and more quantity are executed and we know actual amounts billed, as opposed to what is listed in limitPrice.
        estimatedGrandTotal:
          type: number
          format: double
          description: The total amount a customer will be expected to pay ((limitPrice * quantity) + estimatedFee). This value will become more accurate as more and more quantity are executed and we know actual amounts billed, as opposed to what is listed in limitPrice.
        cumulativeFee:
          type:
          - number
          - 'null'
          format: double
          description: The total amount charged to facilitate the trade so far. If the order is only partially filled then it is expected this balance will grow with each additional partial fill, or fill.
        cumulativeSubtotal:
          type:
          - number
          - 'null'
          format: double
          description: The amount (in USD) paid so far for all fills in the order. If order was placed at a limit price of $10 for 100 units, but was able to get 10 units for $10 each, 10 units for $9, and 10 units for $8 each then the cumulative would be $170. When the remaining 70 units are filled then this balance is expected to grow. This does not include any fees charged by a broker dealer to facilitate the trade.
        cumulativeGrandTotal:
          type:
          - number
          - 'null'
          format: double
          description: The total amount (in USD) paid so far, for both the executed trsdes as well as the fee(s) charged for facilitating the exchange. This balance is expected to grow if the order is unfilled or only partially filled.
        status:
          type: string
          enum:
          - SUBMITTED
          - OPEN
          - PARTIALLY_FILLED
          - FILLED
          - CANCEL_REQUESTED
          - PENDING_CANCEL
          - CANCEL_REJECTED
          - CANCELED
          - DONE_FOR_DAY
          - EXPIRED
          - REJECTED
          - STOPPED
        createdTs:
          type:
          - string
          - 'null'
          format: date-time
        modifiedTs:
          type:
          - string
          - 'null'
          format: date-time
        assetClass:
          type: string
        executionHistory:
          type: array
          items:
            $ref: '#/components/schemas/OrderExecution'
          description: Execution history for an order.
    ErrorItem:
      type: object
      properties:
        code:
          type: string
          description: Error/validation code (e.g. DATE_OF_BIRTH_IN_FUTURE, JURISDICTION_COUNTRY_NOT_ALLOWED). See x-businessValidationErrorCodes for business logic codes.
        message:
          type: string
          description: Human-readable message.
        field:
          type:
          - string
          - 'null'
          description: Request field path when applicable (e.g. investor.dateOfBirth, investor.physicalAddress.country).
        details:
          type:
          - object
          - 'null'
          additionalProperties: true
          description: 'Optional object that will be sent for certain error `code` and documented in the endpoint''s error table.

            '
    OrdersListResponse:
      type: object
      required:
      - orders
      properties:
        orders:
          type: array
          items:
            $ref: '#/components/schemas/OrderResponse'
    OrderExecution:
      type: object
      required:
      - executionTs
      - cumulativeQuantity
      - leavesQuantity
      - averagePrice
      - executionResult
      properties:
        executionTs:
          type: string
          description: ISO-8601 timestamp of the execution.
        affectedQuantity:
          type:
          - number
          - 'null'
          format: double
          description: Quantity affected by this execution (fills and cancels).
        fillQuantity:
          type:
          - number
          - 'null'
          format: double
          description: Quantity filled on this execution.
        fillPrice:
          type:
          - number
          - 'null'
          format: double
          description: Price per share on this fill.
        cumulativeQuantity:
          type: number
          format: double
          description: Total filled quantity across all executions so far.
        executionResult:
          type:
          - string
          - 'null'
          enum:
          - OPEN
          - PARTIALLY_FILLED
          - FILLED
          - CANCELED
          - REJECTED
          - CANCEL_REJECTED
          - EXPIRED
          - STOPPED
          - DONE_FOR_DAY
          description: Execution result.
        leavesQuantity:
          type: number
          format: double
          description: Remaining unfilled quantity.
        averagePrice:
          type: number
          format: double
          description: Average price across all fills.
        text:
          type:
          - string
          - 'null'
          description: Execution context text.
        fee:
          type:
          - number
          - 'null'
          format: double
          description: Fee charged for this execution (in USD).
        subtotal:
          type:
          - number
          - 'null'
          format: double
          description: Execution subtotal before fees (in USD).
        grandTotal:
          type:
          - number
          - 'null'
          format: double
          description: Execution total including fees (in USD).
    ErrorResponse:
      type: object
      description: Error response body for validation and business-rule failures. Contains a list of errors; each item has code, message, and optional field (JSON path).
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorItem'
    CreateOrderResponse:
      type: object
      properties:
        transactionId:
          type: string
        id:
          type: string
        accountId:
          type: string
        symbol:
          type: string
        assetId:
          type: string
        side:
          type: string
          enum:
          - BUY
          - SELL
        quantity:
          type: number
          format: double
        type:
          type: string
          enum:
          - LIMIT
        limitPrice:
          type: number
          format: double
        timeInForce:
          type: string
          enum:
          - DAY
          - GTD
          - GTC
          description: 'Time the order is valid for (DAY, GTC, GTD)

            '
        status:
          type: string
          enum:
          - SUBMITTED
        expireTs:
          type:
          - string
          - 'null'
          format: date-time
        createdTs:
          type:
          - string
          - 'null'
          format: date-time
        modifiedTs:
          type:
          - string
          - 'null'
          format: date-time
        fee:
          type:
          - number
          - 'null'
          format: double
  securitySchemes:
    x-api-key:
      type: apiKey
      in: header
      name: x-apikey
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    refreshToken:
      type: refreshToken
      in: header
      name: refreshToken