Order Request
Each order has a unique identifier generated by Moment. The ID will be returned when an order is placed and can be used to check the status of the order via the `GET /v1/trading/order/{id}/` endpoint. Updates on open orders at Moment will also be sent over the real-time API, which is the recommended method of maintaining order state.
Properties
| Name | Type | Description |
|---|---|---|
| account_booking_type | object | Deprecated, will be removed soon. Use account_configuration.booking_type instead. |
| account_configuration | object | |
| account_id | stringnull | Unique ID of user account |
| all_or_none | object | |
| allocations | object | Allocations for the order |
| amount | object | |
| annotation | object | |
| booking_instructions | object | Client-provided information to configure trade booking for the order, as a map from string to string. Passing a multi-layer JSON map or something other than "string":"string" key-value pairs will resu |
| bypass_auto_execution | boolean | Flag to indicate if auto execution rules should be bypassed |
| client_order_id | object | |
| counter_expiry_time | object | The time until which the counter is valid |
| custodian_id | string | The Moment-provided custodian ID that the corresponding account belongs to. For organizations with CTM enabled, this field should be left empty for both single and block fixed-income orders. For broke |
| execution_instructions | array | A list of execution instructions for the order |
| expire_date | integernull | Date of order expiration (last day the order can trade), always expressed in terms of the local market date. The maximum expire_date is 90 calendar days out. If the expire_date does not fall on a trad |
| explicit_cancelation_required | boolean | Deprecated. The value provided here is ignored — orders are always treated as if explicit cancellation is required. The field is kept for backwards compatibility and will be removed in a future releas |
| extended_hours | object | |
| fees | array | Custom fees to be applied to the order. If provided, this list overrides the default fees defined in the system. For each fee recipient based on the trade structure, a separate fee object should be in |
| for_block_trade | booleannull | Flag to indicate if the order is for a block trade, used for post order allocation |
| group_members | array | List of group members for the order |
| ib_id | object | The introducing broker ID to use for this specific order. If not specified, will use the introducing broker ID from the bulk request. |
| instrument_id | object | |
| is_counter | boolean | Flag to indicate if the order is a counter |
| is_group_order | boolean | Flag to indicate if the order is a group order |
| limit_price | object | |
| liquidate_fund_position | boolean | Flag to instruct the custodian to sell the entire position rather than just the quantity on the order. Fund sells only and notional. The notional dollar value should be the current notional value of t |
| metadata | objectnull | Custom metadata for the order. This can be used to store additional information about the order that is not covered by the other fields. The keys and values are both strings. |
| offering_id | object | |
| order_rfq_ids | array | A list of existing RFQ IDs to associate with this order. |
| review_reason | string | Reason for why the order requires review. Only applicable when review_required is true. |
| review_required | boolean | Flag to indicate if the order requires manual review before execution. |
| risk_group_id | object | The risk group ID to use for this specific order. If not specified, will use the risk group ID from the bulk request. |
| settlement_date | integernull | The targeted settlement date for the order in the format of YYYYMMDD, like 20090101 |
| side | object | |
| time_in_force | object | Time in force for the order. Acceptable values are `day` and `good_till_date`. Absence is interpreted as `day`. |
| type | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/moment/main/json-schema/moment-order-schema.json",
"title": "Order Request",
"description": "Each order has a unique identifier generated by Moment. The ID will be returned when an order is placed and can be used to check the status of the order via the `GET /v1/trading/order/{id}/` endpoint. Updates on open orders at Moment will also be sent over the real-time API, which is the recommended method of maintaining order state.",
"x-generated": "2026-10-14",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/moment-orders-api-openapi.yml#/components/schemas/Order",
"type": "object",
"properties": {
"account_booking_type": {
"description": "Deprecated, will be removed soon. Use account_configuration.booking_type instead.",
"allOf": [
{
"$ref": "#/$defs/BookingType"
}
],
"deprecated": true,
"x-go-type-skip-optional-pointer": true
},
"account_configuration": {
"$ref": "#/$defs/AccountConfiguration"
},
"account_id": {
"description": "Unique ID of user account",
"type": [
"string",
"null"
],
"x-go-type-skip-optional-pointer": true
},
"all_or_none": {
"$ref": "#/$defs/AllOrNone"
},
"allocations": {
"description": "Allocations for the order",
"$ref": "#/$defs/AllocationRequest",
"nullable": true
},
"amount": {
"$ref": "#/$defs/OrderSize"
},
"annotation": {
"$ref": "#/$defs/Annotation"
},
"booking_instructions": {
"description": "Client-provided information to configure trade booking for the order, as a map from string to string. Passing a multi-layer JSON map or something other than \"string\":\"string\" key-value pairs will result in an error. The specific contents of this field should be determined in conjunction with the back-office integration.",
"type": "object",
"additionalProperties": {
"type": "string"
},
"title": "booking_instructions",
"x-go-type-skip-optional-pointer": true
},
"bypass_auto_execution": {
"description": "Flag to indicate if auto execution rules should be bypassed",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"client_order_id": {
"$ref": "#/$defs/ClientOrderID"
},
"counter_expiry_time": {
"description": "The time until which the counter is valid",
"$ref": "#/$defs/CounterExpiryTime",
"nullable": true
},
"custodian_id": {
"description": "The Moment-provided custodian ID that the corresponding account belongs to.\n\nFor organizations with CTM enabled, this field should be left empty for both single and block fixed-income orders.\nFor brokerages firms, `custodian_id` and `account_id` are both required to identify the inventory account.\nFor RIAs, this field is optional as each account allocation has its own custodian_id field.\n\nWhen available, it is recommended to populate this field.",
"type": "string",
"title": "Custodian ID",
"x-go-name": "CustodianID",
"x-go-type-skip-optional-pointer": true
},
"execution_instructions": {
"description": "A list of execution instructions for the order",
"type": "array",
"items": {
"$ref": "#/$defs/ExecutionInstruction"
},
"x-go-type-skip-optional-pointer": true
},
"expire_date": {
"description": "Date of order expiration (last day the order can trade), always expressed in terms of the local market date. The maximum expire_date is 90 calendar days out. If the expire_date does not fall on a trading day, the next trading day is automatically selected.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"explicit_cancelation_required": {
"description": "Deprecated. The value provided here is ignored — orders are always\ntreated as if explicit cancellation is required. The field is kept\nfor backwards compatibility and will be removed in a future release.\n",
"type": "boolean",
"default": false,
"deprecated": true,
"x-go-type-skip-optional-pointer": true
},
"extended_hours": {
"$ref": "#/$defs/ExtendedHours"
},
"fees": {
"description": "Custom fees to be applied to the order. If provided, this list overrides the default fees defined in the system.\n\nFor each fee recipient based on the trade structure, a separate fee object should be included.\nFor example, in a trade flow like:\n\n Street <-> Executing Broker <-> Introducing Broker <-> Customer\n\nwhere both brokers are charging fees, you would specify:\n\n \"fees\": [\n {\n \"fee_type\": \"markup\",\n \"fee_amount_type\": \"percentage_of_par\",\n \"fee_amount\": 0.01,\n \"recipient\": \"<org_id_of_executing_broker>\"\n },\n {\n \"fee_type\": \"markup\",\n \"fee_amount_type\": \"percentage_of_par\",\n \"fee_amount\": 0.05,\n \"recipient\": \"<org_id_of_introducing_broker>\"\n }\n ]\n",
"type": "array",
"items": {
"$ref": "#/$defs/Fee"
},
"x-go-type-skip-optional-pointer": true
},
"for_block_trade": {
"description": "Flag to indicate if the order is for a block trade, used for post order allocation",
"type": [
"boolean",
"null"
]
},
"group_members": {
"description": "List of group members for the order",
"type": "array",
"items": {
"$ref": "#/$defs/GroupMember"
},
"x-go-type-skip-optional-pointer": true
},
"ib_id": {
"description": "The introducing broker ID to use for this specific order. If not specified, will use the introducing broker ID from the bulk request.",
"$ref": "#/$defs/IntroducingBrokerID",
"nullable": true
},
"instrument_id": {
"$ref": "#/$defs/InstrumentID"
},
"is_counter": {
"description": "Flag to indicate if the order is a counter",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"is_group_order": {
"description": "Flag to indicate if the order is a group order",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"limit_price": {
"$ref": "#/$defs/LimitPrice"
},
"liquidate_fund_position": {
"description": "Flag to instruct the custodian to sell the entire position rather than just the quantity on the order. Fund sells only and notional. The notional dollar value should be the current notional value of the position.",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"metadata": {
"description": "Custom metadata for the order. This can be used to store additional information about the order that is not covered by the other fields. The keys and values are both strings.",
"type": [
"object",
"null"
],
"additionalProperties": {
"type": "string"
},
"x-go-type-skip-optional-pointer": true
},
"offering_id": {
"$ref": "#/$defs/OfferingID"
},
"order_rfq_ids": {
"description": "A list of existing RFQ IDs to associate with this order.",
"type": "array",
"items": {
"type": "string"
}
},
"review_reason": {
"description": "Reason for why the order requires review. Only applicable when review_required is true.",
"type": "string",
"default": "",
"x-go-type-skip-optional-pointer": true
},
"review_required": {
"description": "Flag to indicate if the order requires manual review before execution.",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"risk_group_id": {
"description": "The risk group ID to use for this specific order. If not specified, will use the risk group ID from the bulk request.",
"$ref": "#/$defs/RiskGroupID",
"nullable": true
},
"settlement_date": {
"description": "The targeted settlement date for the order in the format of YYYYMMDD, like 20090101",
"type": [
"integer",
"null"
],
"format": "int64"
},
"side": {
"$ref": "#/$defs/OrderSide"
},
"time_in_force": {
"description": "Time in force for the order. Acceptable values are `day` and `good_till_date`. Absence is interpreted as `day`.",
"allOf": [
{
"$ref": "#/$defs/TimeInForce"
}
],
"nullable": true,
"x-go-type-skip-optional-pointer": true
},
"type": {
"$ref": "#/$defs/OrderType"
}
},
"required": [
"instrument_id",
"amount",
"side",
"type",
"client_order_id"
],
"$defs": {
"AccountConfiguration": {
"title": "Account Configuration",
"type": "object",
"description": "Account configuration for the allocation",
"properties": {
"prime_brokerage_enabled": {
"type": "boolean",
"description": "Whether the prime brokerage is enabled for the account.",
"x-go-type-skip-optional-pointer": true
},
"household_id": {
"type": "string",
"description": "The ID of the household for the account.",
"x-go-type-skip-optional-pointer": true,
"x-go-name": "HouseholdID"
},
"manager_id": {
"type": "string",
"description": "The accounts-service platform advisor for the account: an\naccount group, not a person. The person credited with the trade\nis iar.\n",
"x-go-type-skip-optional-pointer": true,
"x-go-name": "ManagerID"
},
"custodian_advisor_id": {
"description": "The custodian's own identifier for the manager_id account group at\nthis custodian: the rep code. Stored as sent.\n",
"type": "string",
"x-go-type-skip-optional-pointer": true,
"x-go-name": "CustodianAdvisorID"
},
"custodian_id": {
"$ref": "#/$defs/CustodianID"
},
"booking_type": {
"allOf": [
{
"$ref": "#/$defs/BookingType"
}
],
"x-go-type-skip-optional-pointer": true
},
"custodian_tax_lot_id": {
"description": "The tax lot ID assigned by the custodian. Deprecated, use lot_instruction.custodian_tax_lot_id instead.",
"type": "string",
"deprecated": true
},
"is_discretionary": {
"description": "Whether the introducing broker exercised discretion on behalf of the end client on this particular order.",
"type": "boolean"
},
"is_solicited": {
"description": "Whether the order was solicited. Must be unset if the order is discretionary.",
"type": "boolean"
},
"is_natural_person": {
"description": "Whether the account is held by a natural person rather than a\nlegal entity. Omit when the holder cannot be classified, as a\ntrust or an estate may not be. An attestation control can be\nlimited to the accounts this is true of.\n",
"type": "boolean"
},
"lot_instruction": {
"$ref": "#/$defs/LotInstruction"
},
"iar": {
"allOf": [
{
"$ref": "#/$defs/InvestmentAdvisorRepresentative"
}
],
"x-go-name": "IAR"
}
}
},
"AggressivenessLevel": {
"title": "Aggressiveness Level",
"type": "string",
"description": "Execution aggressiveness for a custodian algo. Required by some custodians (e.g. Fidelity);\nignored by custodians without an equivalent concept (e.g. Schwab).",
"enum": [
"passive",
"neutral",
"aggressive"
],
"x-enumNames": [
"AggressivenessLevelPassive",
"AggressivenessLevelNeutral",
"AggressivenessLevelAggressive"
]
},
"AlgoParameters": {
"title": "Algo Parameters",
"type": "object",
"description": "Execution parameters for custodian algos. Exactly one of `twap`, `vwap`, `pov`, or `is` must be set.\nOnly supported on the custodian protocol with the manual strategy. Fields or values not accepted\nby a given custodian are rejected downstream.",
"properties": {
"twap": {
"$ref": "#/$defs/TwapParameters"
},
"vwap": {
"$ref": "#/$defs/VwapParameters"
},
"pov": {
"$ref": "#/$defs/PovParameters"
},
"is": {
"$ref": "#/$defs/IsParameters"
}
}
},
"AllOrNone": {
"description": "If set to true, the entire order quantity will be filled or none at all. There will be no partial fills.",
"type": "boolean",
"default": false,
"title": "All or None",
"x-go-type-skip-optional-pointer": true
},
"AllocationAccountRequest": {
"title": "Allocation Account Request",
"type": "object",
"description": "The account allocation request specifies the amount of the order to allocate to a specific account.\nNote that requested_amount values must be a multiple of the par size of the bond.",
"required": [
"client_account_allocation_id",
"account_id",
"requested_amount"
],
"properties": {
"client_account_allocation_id": {
"type": "string",
"description": "Client-provided unique ID for the account allocation; for example, to cross-reference with an internal system. Values must be unique within the trading day.",
"x-go-name": "ClientAccountAllocationID"
},
"account_id": {
"type": "string",
"description": "Unique ID of user account",
"x-go-name": "AccountID"
},
"requested_amount": {
"$ref": "#/$defs/OrderSize"
},
"account_configuration": {
"$ref": "#/$defs/AccountConfiguration"
},
"moment_sleeve_id": {
"type": "string",
"description": "The Moment internal ID of the sleeve to allocate the order to.",
"x-go-name": "MomentSleeveID"
},
"order_received_at": {
"type": "string",
"format": "date-time",
"description": "When the end client confirmed the order for this account."
},
"order_received_by": {
"description": "Who took that confirmation, by Moment user reference or by name.",
"allOf": [
{
"$ref": "#/$defs/InvestmentAdvisorRepresentative"
}
]
}
}
},
"AllocationRequest": {
"title": "Allocation Request",
"type": "object",
"required": [
"strategy",
"client_allocation_id",
"account_allocations"
],
"properties": {
"strategy": {
"type": "string",
"enum": [
"fifo_without_averaging",
"fifo_with_averaging",
"pro_rata_with_averaging"
],
"description": "Strategy for allocation. Determines how the block's filled quantity is distributed across requested accounts.\n- `fifo_without_averaging`: allocates on a first-in, first-out basis without averaging; preserves individual trade prices per allocation.\n- `fifo_with_averaging`: allocates first-in, first-out and applies the block's average fill price to each allocation.\n- `pro_rata_with_averaging`: allocates pro-rata across requested accounts and applies the block's average fill price. Typically used for equity and ETF block orders.\n\n**RIA accounts must use `fifo_without_averaging`.** The averaging\nstrategies (`fifo_with_averaging`, `pro_rata_with_averaging`) require a\nprincipal/averaging trading account to average executions before they are\nbooked to client accounts. RIAs trade in an agency capacity and must report\nthe actual street-execution prices and quantities to their custodian (e.g.\nSchwab), so each allocation has to match a real executed trade. Because there\nis no averaging account to absorb the difference, averaged allocation is not\navailable to RIAs — only the non-averaging FIFO strategy, which preserves the\ntrue per-trade execution prices, is supported.\n"
},
"client_allocation_id": {
"type": "string",
"description": "Client-provided ID for the allocation",
"x-go-name": "ClientAllocationID"
},
"account_allocations": {
"type": "array",
"description": "Account allocations for an individual order",
"items": {
"$ref": "#/$defs/AllocationAccountRequest"
}
}
}
},
"Annotation": {
"description": "Client-provided custom metadata for the order.",
"type": "string",
"maxLength": 1024,
"title": "annotation"
},
"BookingType": {
"type": "string",
"title": "BookingType",
"description": "The booking type for the account.",
"enum": [
"cash",
"margin"
],
"x-enumNames": [
"BookingTypeCash",
"BookingTypeMargin"
]
},
"ClientOrderID": {
"type": "string",
"title": "Client Order ID",
"description": "Client-provided unique ID for the order; for example, to cross-reference with an internal system. Must be unique within the trading day, otherwise duplicate orders will be rejected during pre-trade checks."
},
"CounterExpiryTime": {
"description": "The time until which the counter is valid.",
"type": "string",
"format": "date-time"
},
"CustodianID": {
"type": "string",
"description": "The Moment-provided ID of the custodian for the order. Custodians must be enabled per risk group.",
"title": "Custodian ID",
"x-go-type-skip-optional-pointer": true,
"x-go-name": "CustodianID"
},
"Decimal": {
"title": "Decimal",
"oneOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Decimal number.",
"x-go-type": "decimal.Decimal",
"x-go-type-import": {
"path": "github.com/shopspring/decimal"
}
},
"ExecutionCriteria": {
"type": "object",
"title": "Execution Criteria",
"required": [
"min_wait_time",
"min_number_quotes"
],
"properties": {
"min_wait_time": {
"type": "string",
"format": "duration",
"description": "Minimum wait time for the execution order."
},
"min_number_quotes": {
"type": "integer",
"description": "Minimum number of quotes required on the side of the order, before execution can proceed. If the protocol is `request_for_quote`, this is the minimum number of RFQ quotes required. If the protocol is `limit_order_book`, this is the minimum number of LOB quotes required."
},
"max_transaction_cost_dollar": {
"type": "string",
"description": "Maximum transaction cost in dollars. Max buy price = estimated price * par value + maxDollar, Min sell price = estimated price * par value - maxDollar. Ex. a value of `5` would mean the transaction cost must be within $5 of the instrument's estimated price in dollars, meaning when buying a bond with a estimated price of $100 and a par value of $1000, the transaction cost must be below $1005."
},
"max_transaction_cost_percent": {
"type": "string",
"description": "Maximum transaction cost in percent. Max buy price = estimated price * (1 + maxPct / 100), Min sell price = estimated price * (1 - maxPct / 100). Ex. a value of `5` would mean the transaction cost must be within 5% of the instrument's estimated price in percent, meaning when buying a bond with a estimated price of $100, the transaction cost must be below $105."
},
"max_transaction_cost_yield": {
"type": "string",
"description": "Maximum transaction cost in yield. Max buy yield = estimated ytw - maxYTW, Max sell yield = estimated ytw + maxYTW. Ex. a value of `0.5` would mean the transaction cost must be within 50 bps of the instrument's estimated yield, meaning when buying a bond with an estimated yield to worst of 1.5%, the transaction cost must be above 1.0%."
}
}
},
"ExecutionInstruction": {
"title": "Execution Instruction",
"type": "object",
"description": "Instructions for the EMS on how to execute the order.",
"required": [
"client_execution_order_id",
"protocol",
"strategy",
"quantity"
],
"properties": {
"client_execution_order_id": {
"type": "string",
"description": "The client-provided ID for the execution order."
},
"protocol": {
"$ref": "#/$defs/Protocol"
},
"strategy": {
"$ref": "#/$defs/Strategy"
},
"quantity": {
"$ref": "#/$defs/OrderSize"
},
"limit_price": {
"$ref": "#/$defs/LimitPrice"
},
"rfq_metadata": {
"$ref": "#/$defs/RFQMetadata"
},
"suppress_pmp_check": {
"type": "boolean",
"description": "Flag to toggle if the Prevailing Market Price (PMP) check should be suppressed for the execution order.",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"venue_trader_info": {
"type": "array",
"description": "A list of venue trader info for the execution order.",
"items": {
"$ref": "#/$defs/VenueTraderInfo"
},
"x-go-type-skip-optional-pointer": true
},
"rfq_protocol_parameters": {
"type": "array",
"description": "A list of RFQ protocol parameters for the execution order.",
"items": {
"$ref": "#/$defs/RFQProtocolParameters"
},
"x-go-type-skip-optional-pointer": true
},
"execution_criteria": {
"$ref": "#/$defs/ExecutionCriteria"
},
"exit_criteria": {
"$ref": "#/$defs/ExitCriteria"
},
"venue_mpid": {
"type": "string",
"description": "MPID of the venue to trade on."
},
"skip_lob_quotes": {
"type": "boolean",
"description": "Only for auto-RFQ orders, flag to determine whether to skip matching against the limit order book quotes and only match against RFQ quotes. Must be set if the protocol is `request_for_quote` and the strategy is `auto_ex`.",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"all_or_none": {
"type": "boolean",
"description": "Flag to indicate whether the order should be executed as an all-or-none order. If set to true, the order will only be executed if the entire quantity can be filled.",
"x-go-type-skip-optional-pointer": true
},
"trader_profile": {
"$ref": "#/$defs/TraderIDs",
"description": "The trader assigned to this execution instruction.",
"nullable": true
},
"ruleset_metadata": {
"$ref": "#/$defs/RulesetMetadata",
"description": "Metadata about the ruleset that auto generated the order.",
"nullable": true
},
"is_counter": {
"type": "boolean",
"description": "Flag to indicate if the order is a counter",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"counter_expires_after": {
"type": [
"string",
"null"
],
"description": "Duration in seconds until which the counter is valid"
},
"external_trade_report": {
"$ref": "#/$defs/ExternalTradeReport"
},
"quotes_snapshot": {
"$ref": "#/$defs/QuotesSnapshot"
},
"algo_parameters": {
"$ref": "#/$defs/AlgoParameters"
},
"time_in_force": {
"description": "Time in force for the execution instruction. Acceptable values are `day`, `good_till_date`, `at_the_opening`, and `at_the_close`. Absence is interpreted as `day`.",
"allOf": [
{
"$ref": "#/$defs/TimeInForce"
}
],
"nullable": true,
"x-go-type-skip-optional-pointer": true
}
}
},
"ExitCriteria": {
"type": "object",
"title": "Exit Criteria",
"required": [
"timeout"
],
"properties": {
"timeout": {
"type": "string",
"format": "duration",
"description": "Timeout for the execution order."
}
}
},
"ExtendedHours": {
"description": "Deprecated. The value provided here is ignored — acceptance hours are\ndetermined by the instrument's asset class: fixed income orders are\naccepted from 7:30 am to 5:30 pm ET, orders for other asset classes\nfrom 7:30 am to 4:00 pm ET. The field is kept for backwards\ncompatibility and will be removed in a future release.\n",
"type": "boolean",
"default": false,
"deprecated": true,
"x-go-type-skip-optional-pointer": true
},
"ExternalTradeReport": {
"type": "object",
"properties": {
"amount": {
"$ref": "#/$defs/OrderSize"
},
"annotation": {
"description": "Optional annotation for the trade.",
"type": [
"string",
"null"
]
},
"bypass_street_side_leg": {
"description": "Flag to bypass street side leg. If true, we will not send the street side to the custodian.",
"type": "boolean",
"default": false,
"x-go-type-skip-optional-pointer": true
},
"bypass_trade_booking": {
"description": "Flag to bypass trade booking. If true, the trade will not be booked in the system.",
"type": "boolean"
},
"client_external_trade_report_id": {
"description": "The client-provided idempotency key.",
"type": "string"
},
"counterparty_clearing_firm_id": {
"description": "DTC ID of the counterparty's clearing firm.",
"type": "string",
"x-go-type-skip-optional-pointer": true
},
"counterparty_id": {
"description": "MPID of the counterparty involved in the street trade.",
"type": "string",
"x-go-type-skip-optional-pointer": true
},
"execution_id": {
"description": "Trade ID. Often times this will be the ID of the execution made at an external venue.",
"type": "string"
},
"external_trade_report_id": {
"description": "Optional external trade report ID. If provided, this ID will be used instead of auto-generating one.\nMust start with 'etr_' followed by a valid ULID.\nIf not provided, the system will generate a unique ID automatically.\n",
"type": "string"
},
"price": {
"description": "The trade price. For mutual funds, if not provided, the backend will use the parent order's estimated price (NAV).",
"type": [
"number",
"null"
],
"format": "double"
},
"settle_date": {
"description": "The settlement date for the trade.",
"type": "string",
"format": "date-time"
},
"snapshot_id": {
"description": "Optional quote snapshot ID. If provided, this snapshot ID will be used instead of creating a new one.",
"type": "string"
},
"trade_time": {
"description": "The timestamp when the trade occurred.",
"type": "string",
"format": "date-time"
}
},
"required": [
"client_external_trade_report_id",
"amount",
"trade_time",
"settle_date",
"bypass_trade_booking"
],
"title": "External Trade Report"
},
"Fee": {
"title": "Fee",
"type": "object",
"description": "The fee to apply to the order.",
"properties": {
"fee_type": {
"$ref": "#/$defs/FeeType"
},
"fee_amount_type": {
"$ref": "#/$defs/FeeAmountType"
},
"recipient_id": {
"type": "string",
"description": "Unique ID of the recipient of the fee.",
"x-go-name": "RecipientID",
"x-go-type-skip-optional-pointer": true
},
"recipient_type": {
"$ref": "#/$defs/RecipientType"
},
"fee_amount": {
"description": "Fee amount to apply to the order.",
"$ref": "#/$defs/Decimal"
},
"max_fee_amount": {
"description": "Maximum fee amount to apply to the order.",
"$ref": "#/$defs/NullableDecimal"
},
"max_fee_amount_type": {
"$ref": "#/$defs/FeeAmountType"
},
"fee_name": {
"type": "string",
"description": "Optional name for the fee, for easier identification."
}
},
"required": [
"fee_type",
"fee_amount_type",
"fee_amount"
]
},
"FeeAmountType": {
"title": "Fee Amount Type",
"type": "string",
"description": "The method used to calculate the fee amount. Supported types include:\n\n- `percentage_of_par`: Fee as a percentage of par value.\n Example: `0.10` = 10 basis points of par value.\n\n- `percentage_of_market_value`: Fee as a percentage of the quote price (market value).\n Example: `1` = 1% of market value.\n\n- `yield_bps`: Fee expressed in yield terms, in basis points.\n Example: `100` = 100 basis points of yield.\n\n- `percentage_of_concession`: Fee applies to concession based quoting mechanism, especially for new issue CDs.\n Example: `50` = 50 percent of all concession from the dealer.\n",
"enum": [
"percentage_of_par",
"percentage_of_market_value",
"yield_bps",
"percentage_of_concession"
],
"x-enumNames": [
"FeeAmountTypePercentageOfPar",
"FeeAmountTypePercentageOfMarketValue",
"FeeAmountTypeYieldBps",
"FeeAmountTypePercentageOfConcession"
]
},
"FeeType": {
"title": "Fee Type",
"type": "string",
"description": "The type of fee to apply to the order. Valid values are \"markup\", \"commission\", and \"sales_credit\".",
"enum": [
"markup",
"commission",
"sales_credit"
],
"x-enumNames": [
"FeeTypeMarkup",
"FeeTypeCommission",
"FeeTypeSalesCredit"
]
},
"GroupMember": {
"title": "Group Member",
"type": "object",
"description": "A group member for an order",
"required": [
"moment_order_id"
],
"properties": {
"moment_order_id": {
"type": "string",
"description": "The ID of the order in the group",
"x-go-name": "MomentOrderID"
}
}
},
"InstrumentID": {
"description": "Instrument CUSIP or ISIN",
"type": "string",
"title": "Instrument ID"
},
"IntroducingBrokerID": {
"description": "The ID of the introducing broker placing the order. If not specified, the organization associated with the API key will be used.",
"type": "string"
},
"InvestmentAdvisorRepresentative": {
"title": "Investment Advisor Representative",
"type": "object",
"description": "The representative credited with this account's participation in the\norder. Accounts in one block order can name different representatives.\nA Moment user is sent as moment_user_id; name and email resolve from\nthe user directory when read. A person with no Moment login is sent\nby name, with email when known. When both are set, moment_user_id is\nalways preferred.\n",
"properties": {
"moment_user_id": {
"description": "The Moment user who is the representative.",
"type": "string",
"x-go-type-skip-optional-pointer": true,
"x-go-name": "MomentUserID"
},
# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moment/refs/heads/main/json-schema/moment-order-schema.json
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/json-schemas/moment-order"
curl "https://apis.io/api/v1/json-schemas?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.