OpenAPI Specification
openapi: 3.0.3
info:
title: Firstrade Unofficial Account Watchlist API
description: 'Community-reverse-engineered REST API for the Firstrade Securities brokerage platform (https://www.firstrade.com). This is NOT an official Firstrade API. Endpoints are discovered from network traffic analysis and are subject to change without notice. The base URL is the internal mobile/web gateway used by the Firstrade app. Authentication uses a session-based flow with cookie tokens (ftat, sid) obtained after login. All requests require the Accept-Encoding: gzip and access-token header values documented below. Source: MaxxRK/firstrade-api (MIT licence).'
version: 0.1.0
contact:
name: Firstrade Customer Support
url: https://www.firstrade.com/support
license:
name: MIT (community SDK)
url: https://opensource.org/licenses/MIT
x-official: false
x-source-repo: https://github.com/MaxxRK/firstrade-api
servers:
- url: https://api3x.firstrade.com
description: Firstrade mobile / web API gateway
tags:
- name: Watchlist
description: Watchlist CRUD operations
paths:
/private/watchlists:
get:
operationId: listWatchlists
summary: List all watchlists
description: Returns all watchlists for the authenticated user.
tags:
- Watchlist
security:
- sessionAuth: []
responses:
'200':
description: Watchlist collection
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
post:
operationId: createWatchlist
summary: Create a watchlist
description: Creates a new watchlist.
tags:
- Watchlist
security:
- sessionAuth: []
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
name:
type: string
description: Watchlist name
responses:
'200':
description: Created watchlist
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/private/watchlists/{list_id}:
get:
operationId: getWatchlist
summary: Get a watchlist
description: Returns a single watchlist by ID.
tags:
- Watchlist
security:
- sessionAuth: []
parameters:
- name: list_id
in: path
required: true
schema:
type: integer
description: Watchlist ID
responses:
'200':
description: Watchlist details
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
delete:
operationId: deleteWatchlist
summary: Delete a watchlist
description: Deletes the specified watchlist.
tags:
- Watchlist
security:
- sessionAuth: []
parameters:
- name: list_id
in: path
required: true
schema:
type: integer
description: Watchlist ID
responses:
'200':
description: Deletion result
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/private/all_watchlist_items:
get:
operationId: getAllWatchlistItems
summary: Get all watchlist items
description: Returns every symbol across all watchlists for the authenticated user.
tags:
- Watchlist
security:
- sessionAuth: []
responses:
'200':
description: All watchlist items
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
/private/watchlist/{list_id}:
post:
operationId: addWatchlistItem
summary: Add symbol to watchlist
description: Adds a ticker symbol to the specified watchlist.
tags:
- Watchlist
security:
- sessionAuth: []
parameters:
- name: list_id
in: path
required: true
schema:
type: integer
description: Watchlist ID
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
properties:
symbol:
type: string
description: Ticker symbol to add
responses:
'200':
description: Item added
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
delete:
operationId: deleteWatchlistItem
summary: Delete a watchlist item
description: Removes a symbol from the specified watchlist.
tags:
- Watchlist
security:
- sessionAuth: []
parameters:
- name: list_id
in: path
required: true
schema:
type: integer
description: Watchlist item ID
responses:
'200':
description: Item deleted
content:
application/json:
schema:
$ref: '#/components/schemas/ApiResponse'
components:
schemas:
ApiResponse:
type: object
properties:
error:
type: string
description: Empty string on success; error message on failure
example: ''
additionalProperties: true
securitySchemes:
sessionAuth:
type: apiKey
in: header
name: ftat
description: 'Session token obtained after login. The ftat header must be accompanied by a sid header (session ID) and the static access-token header (value: 833w3XuIFycv18ybi).'