Omni AI
ModelsExpand Collapse
action_button: object { buttonId, label, itemId, 2 more }
Button metadata shared by chart and suggested-actions payloads.
chart_payload: object { chartId, clicked, actionButtons, 2 more }
Typed chart payload rendered inline in assistant content.
Buttons associated with this chart.
content_part_chart_payload: object { payload }
Chart payload content part.
payload: object { chartId, clicked, actionButtons, 2 more }
Typed chart payload rendered inline in assistant content.
Buttons associated with this chart.
content_part_structured_action_payload: object { action, action_id, clicked, 2 more }
Structured action content part.
action: object { prefill_order } or object { open_chart } or object { open_screener } or object { open_entitlement_consent }
Structured actions that Omni AI can return to clients.
These actions provide machine-readable instructions for the client to execute, such as prefilling an order ticket, opening a chart, or navigating to a route.
PrefillOrder: object { prefill_order }
Prefill an order ticket for user confirmation
prefill_order: PrefillNewOrderAction { orders } or PrefillCancelOrderAction { orders } or PrefillModifyOrderAction { orders }
OpenChart: object { open_chart }
Open a chart for a symbol
open_chart: object { symbol, extras, item_id, timeframe }
Open a chart for a symbol
extras: optional unknown
Additional chart configuration (indicators, overlays, etc.) When a null/undefined value is observed, it indicates it does not apply.
OpenScreener: object { open_screener }
Open a stock screener with filters
open_screener: object { filters, columns, item_id, 2 more }
Open a stock screener with filters
Filter criteria for the screener.
left: object { name, lookback, period, value_type }
op: optional object { name, args }
item_id: optional string
Interaction-tracking identity. Absent on messages created before tracking. When a null/undefined value is observed, it indicates that there is no available data.
page_size: optional number
Optional page size. When a null/undefined value is observed, it indicates it does not apply.
Optional sort specification. Absent means the screener’s default order. When a null/undefined value is observed, it indicates it does not apply.
content_part_suggested_actions_payload: object { payload }
Suggested actions payload content part.
payload: object { actionButtons, clickedItemIds }
Suggested follow-up buttons rendered at the end of an assistant message.
open_chart_action: object { symbol, extras, item_id, timeframe }
Action to open a chart for a symbol.
extras: optional unknown
Additional chart configuration (indicators, overlays, etc.) When a null/undefined value is observed, it indicates it does not apply.
open_screener_action: object { filters, columns, item_id, 2 more }
Action to open a stock screener with filters.
filters, sorts and columns use the same shapes as the
POST /saved-screeners request body, so a client can save the screener
the user is looking at by forwarding them unchanged.
Filter criteria for the screener.
left: object { name, lookback, period, value_type }
op: optional object { name, args }
item_id: optional string
Interaction-tracking identity. Absent on messages created before tracking. When a null/undefined value is observed, it indicates that there is no available data.
page_size: optional number
Optional page size. When a null/undefined value is observed, it indicates it does not apply.
Optional sort specification. Absent means the screener’s default order. When a null/undefined value is observed, it indicates it does not apply.
prefill_modify_order_action: object { orders }
prefill_modify_order_request: object { account_id, item_id, limit_offset, 6 more }
prefill_new_order_action: object { orders }
New-order prefill action.
Orders to prefill using the same shape accepted by the orders API.
quantity: string
Quantity to trade. For COMMON_STOCK: shares (may be fractional if supported). For OPTION (single-leg): contracts (must be an integer)
id: optional string
Optional client-provided unique ID (idempotency). Required to be unique per account.
expires_at: optional string
The timestamp when the order should expire (UTC). Required when time_in_force is GOOD_TILL_DATE.
extended_hours: optional boolean
Allow trading outside regular trading hours. Some brokers disallow options outside RTH.
instrument_id: optional string
Instrument ID (UUID) or symbol (equity ticker or OSI option symbol). Either symbol or instrument_id must be provided.
item_id: optional string
Interaction-tracking identity. Absent on messages created before tracking. When a null/undefined value is observed, it indicates that there is no available data.
strategy: optional object { type } or object { type, end_at, start_at } or object { type, end_at, start_at } or object { destination, type }
Optional execution strategy. One of SOR, VWAP, TWAP, or DMA. Defaults
to SOR, the only strategy OTC common-stock orders support. VWAP and TWAP
are supported only on MARKET and LIMIT orders, and DMA only on LIMIT
orders; all three require DAY time-in-force. VWAP, TWAP, and DMA do
not support extended_hours.
union_member_1: object { type, end_at, start_at }
Volume-Weighted Average Price. Works the order to track the volume-weighted average price over the execution window.
prefill_new_order_request: object { order_type, quantity, side, 14 more }
Request to submit a new order
quantity: string
Quantity to trade. For COMMON_STOCK: shares (may be fractional if supported). For OPTION (single-leg): contracts (must be an integer)
id: optional string
Optional client-provided unique ID (idempotency). Required to be unique per account.
expires_at: optional string
The timestamp when the order should expire (UTC). Required when time_in_force is GOOD_TILL_DATE.
extended_hours: optional boolean
Allow trading outside regular trading hours. Some brokers disallow options outside RTH.
instrument_id: optional string
Instrument ID (UUID) or symbol (equity ticker or OSI option symbol). Either symbol or instrument_id must be provided.
item_id: optional string
Interaction-tracking identity. Absent on messages created before tracking. When a null/undefined value is observed, it indicates that there is no available data.
strategy: optional object { type } or object { type, end_at, start_at } or object { type, end_at, start_at } or object { destination, type }
Optional execution strategy. One of SOR, VWAP, TWAP, or DMA. Defaults
to SOR, the only strategy OTC common-stock orders support. VWAP and TWAP
are supported only on MARKET and LIMIT orders, and DMA only on LIMIT
orders; all three require DAY time-in-force. VWAP, TWAP, and DMA do
not support extended_hours.
union_member_1: object { type, end_at, start_at }
Volume-Weighted Average Price. Works the order to track the volume-weighted average price over the execution window.
prefill_order_action: PrefillNewOrderAction { orders } or PrefillCancelOrderAction { orders } or PrefillModifyOrderAction { orders }
structured_action: object { prefill_order } or object { open_chart } or object { open_screener } or object { open_entitlement_consent }
Structured actions that Omni AI can return to clients.
These actions provide machine-readable instructions for the client to execute, such as prefilling an order ticket, opening a chart, or navigating to a route.
PrefillOrder: object { prefill_order }
Prefill an order ticket for user confirmation
prefill_order: PrefillNewOrderAction { orders } or PrefillCancelOrderAction { orders } or PrefillModifyOrderAction { orders }
OpenChart: object { open_chart }
Open a chart for a symbol
open_chart: object { symbol, extras, item_id, timeframe }
Open a chart for a symbol
extras: optional unknown
Additional chart configuration (indicators, overlays, etc.) When a null/undefined value is observed, it indicates it does not apply.
OpenScreener: object { open_screener }
Open a stock screener with filters
open_screener: object { filters, columns, item_id, 2 more }
Open a stock screener with filters
Filter criteria for the screener.
left: object { name, lookback, period, value_type }
op: optional object { name, args }
item_id: optional string
Interaction-tracking identity. Absent on messages created before tracking. When a null/undefined value is observed, it indicates that there is no available data.
page_size: optional number
Optional page size. When a null/undefined value is observed, it indicates it does not apply.
Optional sort specification. Absent means the screener’s default order. When a null/undefined value is observed, it indicates it does not apply.
suggested_actions_payload: object { actionButtons, clickedItemIds }
Suggested follow-up buttons rendered at the end of an assistant message.
Omni AIEntitlements
Thread-centric AI assistant for conversational trading. Create threads to start conversations, poll response objects for in-progress output, and read finalized messages from thread history. Thread/message/response endpoints require an explicit account_id. Entitlement endpoints are caller-scoped and use account_ids.
Get Entitlements
Delete Entitlement
Get Entitlement Status
Opt Out Of Entitlements
Get Entitlement Agreements
ModelsExpand Collapse
entitlement_agreement_resource_list: array of EntitlementAgreementResource { agreement_id, agreement_key, document_content, 4 more }
entitlement_resource_list: array of EntitlementResource { account_id, agreement_id, entitlement_code, 2 more }
entitlement_status_resource_list: array of EntitlementStatusResource { account_id, enabled, entitlement_code }
Omni AIMessages
Thread-centric AI assistant for conversational trading. Create threads to start conversations, poll response objects for in-progress output, and read finalized messages from thread history. Thread/message/response endpoints require an explicit account_id. Entitlement endpoints are caller-scoped and use account_ids.
Submit Feedback
Omni AIResponses
Thread-centric AI assistant for conversational trading. Create threads to start conversations, poll response objects for in-progress output, and read finalized messages from thread history. Thread/message/response endpoints require an explicit account_id. Entitlement endpoints are caller-scoped and use account_ids.
Get Response By ID
ModelsExpand Collapse
response: object { id, status, thread_id, 7 more }
Dynamic pollable response.
status: "queued" or "running" or "succeeded" or 4 more
Dynamic lifecycle status for a pollable response.
succeeded, failed, canceled, steered and merged are terminal.
steered: the response ended as written because the user sent a newer
message, and a later response in the thread continues the work. merged:
the response ended without text, and a later response answers its message.
Treat an unknown status as terminal.
content: optional object { parts }
When a null/undefined value is observed, it indicates that there is no available data.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
continued_in_response_id: optional string
The response that continues the work of this response. Present only when status is
steered or merged. Follow it to keep showing the answer. To stop that work, cancel it,
or cancel this response: the server follows the link.
When a null/undefined value is observed, it indicates it does not apply.
error: optional object { code, message, details }
When a null/undefined value is observed, it indicates it does not apply.
output_message_id: optional string
When a null/undefined value is observed, it indicates it does not apply.
output_message_seq: optional number
The seq the output message has in the thread’s message list. Present once the output
message exists. Omitted while the response is queued. Use it to place a response that is
still in progress among the listed messages.
When a null/undefined value is observed, it indicates it does not apply.
user_message_id: optional string
The user message this response answers. Omitted when the response presents a background result, such as a subagent’s report, and answers no user message; its output message then appears in the thread without a preceding request. When a null/undefined value is observed, it indicates it does not apply.
user_message_seq: optional number
The seq the user message has in the thread’s message list. Present exactly when
user_message_id is present. Use it to place the sent prompt among the listed messages
before a list refresh includes it.
When a null/undefined value is observed, it indicates it does not apply.
response_content: object { parts }
Dynamic response content container. May include thinking parts.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
response_content_part: ContentPartTextPayload { text } or ContentPartThinkingPayload { thoughts } or ContentPartStructuredActionPayload { action, action_id, clicked, 2 more } or 3 more
Dynamic content part visible on a pollable response.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
response_status: "queued" or "running" or "succeeded" or 4 more
Dynamic lifecycle status for a pollable response.
succeeded, failed, canceled, steered and merged are terminal.
steered: the response ended as written because the user sent a newer
message, and a later response in the thread continues the work. merged:
the response ended without text, and a later response answers its message.
Treat an unknown status as terminal.
Omni AIThreads
Thread-centric AI assistant for conversational trading. Create threads to start conversations, poll response objects for in-progress output, and read finalized messages from thread history. Thread/message/response endpoints require an explicit account_id. Entitlement endpoints are caller-scoped and use account_ids.
Get Thread Response
ModelsExpand Collapse
message: object { id, content, created_at, 6 more }
Final immutable message.
content: object { parts }
Finalized immutable message content container. Never includes thinking parts.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
context: optional object { items }
Immutable snapshots attached to this user message. Omitted when none were supplied. When a null/undefined value is observed, it indicates that there is no available data.
message_content: object { parts }
Finalized immutable message content container. Never includes thinking parts.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
message_content_part: ContentPartTextPayload { text } or ContentPartStructuredActionPayload { action, action_id, clicked, 2 more } or ContentPartChartPayload { payload } or 2 more
Final immutable content part visible on persisted messages.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
content: object { parts }
Finalized immutable message content container. Never includes thinking parts.
ContentPartStructuredAction: ContentPartStructuredActionPayload { action, action_id, clicked, 2 more }
context: optional object { items }
Immutable snapshots attached to this user message. Omitted when none were supplied. When a null/undefined value is observed, it indicates that there is no available data.
turn_context: object { items }
Client snapshots attached to one instant-chat user message.
Context is separate from visible message text and does not grant account access. The compact JSON representation must not exceed 64 KiB.