Envía una orden de compra o venta de instrumentos al mercado desde una cuenta comitente.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Enviá órdenes de compra y venta de instrumentos al mercado usando una cuenta comitente.
Antes de empezar
- Tené a mano el
investment_account_idde la cuenta comitente que va a operar. - Obtené el
market_instrument_iddel instrumento conGET /api/instruments/market/all. - Definí si la orden se va a enviar por importe (
by_amount=true) o por cantidad (by_amount=false). - Definí si la orden se va a enviar a precio de mercado (
at_market_price=true) o con precio explícito (at_market_price=false). - Generá un
external_idúnico para evitar duplicados y poder reconciliar la respuesta.
Cómo enviar una orden al mercado
POST /api/market/market-order
Content-Type: application/jsonBody parameters
El body acepta un objeto InsertMarketOrder.
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
investment_account_id | integer | Sí | Identificador de la cuenta comitente en ApiBroker. |
quantity | integer | Sí | Cantidad de nominales a comprar o vender. |
amount | number | Sí | Importe de la transacción. |
currency_id | string | Sí | Moneda de la operación. |
market_instrument_id | integer | Sí | Identificador del instrumento de mercado. |
market_operation_type | string | Sí | Tipo de operación: buy o sell. |
instrument_price | number | Sí | Precio del instrumento. |
term | integer | Sí | Plazo de la operación. |
external_id | string | Sí | Identificador único de la petición. |
by_amount | boolean | Sí | Indica si la orden se envía por importe. |
at_market_price | boolean | Sí | Indica si la orden se envía a precio de mercado. |
closed_dollar_id | integer | No | Identificador de una operatoria de dólar cerrado, si aplica. |
Reglas de combinación entre by_amount y at_market_price
by_amount y at_market_priceExisten cuatro combinaciones válidas para definir cómo se interpreta la orden:
-
by_amount=trueyat_market_price=false- Enviá
quantity=0. - La orden se ejecuta por el importe indicado en
amount. - El precio tomado es el valor enviado en
instrument_price.
- Enviá
-
by_amount=falseyat_market_price=false- Enviá
amount=0. - La orden se ejecuta por la cantidad indicada en
quantity. - El precio tomado es el valor enviado en
instrument_price.
- Enviá
-
by_amount=falseyat_market_price=true- Enviá
amount=0. - La orden se ejecuta por la cantidad indicada en
quantity. - El precio se toma del mercado al momento del envío.
- Enviá
-
by_amount=trueyat_market_price=true- Enviá
quantity=0. - La orden se ejecuta por el importe indicado en
amount. - El precio se toma del mercado al momento del envío.
- Enviá
Valores operativos relevantes
market_operation_type:buypara compra osellpara venta.term:0para contado inmediato,1para operaciones a 24 horas y2para operaciones a 48 horas.
Posibles estados de la orden
market_order_status_id | Descripción |
|---|---|
SENDING_PENDING | Pendiente de envío. Será enviada tan pronto como sea posible. |
RETRY | Se intentó enviar pero no fue posible. Será reenviada cuando corresponda. |
SENT | Enviada y a la espera de confirmación del mercado. |
OFFERED | Ofertada en el mercado. |
COMPLETED | Completada. Es un estado final. |
CANCELLED | Cancelada manualmente. |
REJECTED | Rechazada por el mercado. Es un estado final. |
PARTIALLY_COMPLETED | Parcialmente completada. Puede ser temporal o final según la fecha de la orden. |
PENDING_CANCELLATION | Se solicitó la cancelación pero todavía no fue confirmada. |
NOT_SENT | No enviada. Es un estado final. |
EXPIRED | Expirada al cierre del mercado. Es un estado final. |
Ejemplo de request
{
"investment_account_id": 74659,
"market_instrument_id": 123,
"market_operation_type": "buy",
"currency_id": "ARS",
"amount": 100000,
"quantity": 0,
"term": 0,
"instrument_price": 1250.5,
"external_id": "ext_123",
"by_amount": true,
"at_market_price": false
}Qué devuelve este endpoint
La respuesta devuelve un arreglo items. Cada elemento representa una orden de mercado procesada.
| Campo | Tipo | Descripción |
|---|---|---|
market_order_id | integer | Código identificador de la orden. |
investment_account_id | integer | Cuenta comitente que envió la orden. |
market_instrument_id | integer | Identificador del instrumento operado. |
ticker | string | Ticker del instrumento. |
market_operation_type | string | Tipo de operación. |
amount | number | Importe bruto informado. |
net_amount | number | Importe neto estimado o resultante. |
estimated_expenses | number | Gastos estimados de la orden. |
include_expenses_in_amount | boolean | Indica si los gastos fueron incluidos en el importe. |
by_amount | boolean | Indica si la orden fue enviada por importe. |
at_market_price | boolean | Indica si la orden fue enviada a precio de mercado. |
quantity | integer | Cantidad operada. |
currency_id | string | Moneda de la orden. |
term | integer | Plazo de la operación. |
instrument_price | number | Precio utilizado para la operación. |
instrument_type | string | Tipo de instrumento. |
external_id | string | Identificador externo enviado en la request. |
trade_date | string | Fecha de concertación. |
settlement_date | string | Fecha de liquidación. |
created_at | string | Fecha de creación de la orden. |
updated_at | string | Fecha de última actualización. |
market_order_status_id | string | Estado actual de la orden. |
executed_quantity | integer | Cantidad ya ejecutada. |
pending_quantity | integer | Cantidad pendiente de ejecución. |
Respuesta esperada
{
"items": [
{
"investment_account_id": 74659,
"market_order_id": 1001,
"market_instrument_id": 123,
"ticker": "AL30",
"market_operation_type": "buy",
"currency_id": "ARS",
"amount": 100000,
"net_amount": 99850,
"estimated_expenses": 150,
"include_expenses_in_amount": false,
"by_amount": true,
"at_market_price": false,
"quantity": 0,
"term": 0,
"instrument_price": 1250.5,
"instrument_type": "bond",
"trade_date": "2026-04-17",
"settlement_date": "2026-04-17",
"created_at": "2026-04-17T15:30:00Z",
"updated_at": "2026-04-17T15:30:00Z",
"market_order_status_id": "SENDING_PENDING",
"executed_quantity": 0,
"pending_quantity": 0,
"external_id": "ext_123"
}
]
}Errores frecuentes
409 Conflict: ya existe una orden con el mismoexternal_ido hay un conflicto de negocio para la operación.422 Validation Error: alguno de los campos obligatorios tiene un formato inválido o no respeta la combinación esperada.500 Internal Server Error: ocurrió un error inesperado durante el procesamiento de la orden.
Siguiente paso
Usá GET /api/market/market-order/{market_order_id} para consultar el estado de una orden puntual o GET /api/market/market-order/orders-by-investment-account/{investment_account_id} para listar órdenes por cuenta comitente.
