Insert Order Request

Envía una orden de compra o venta de instrumentos al mercado desde una cuenta comitente.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Enviá órdenes de compra y venta de instrumentos al mercado usando una cuenta comitente.

Antes de empezar

  1. Tené a mano el investment_account_id de la cuenta comitente que va a operar.
  2. Obtené el market_instrument_id del instrumento con GET /api/instruments/market/all.
  3. Definí si la orden se va a enviar por importe (by_amount=true) o por cantidad (by_amount=false).
  4. 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).
  5. 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/json

Body parameters

El body acepta un objeto InsertMarketOrder.

CampoTipoRequeridoDescripción
investment_account_idintegerSíIdentificador de la cuenta comitente en ApiBroker.
quantityintegerSíCantidad de nominales a comprar o vender.
amountnumberSíImporte de la transacción.
currency_idstringSíMoneda de la operación.
market_instrument_idintegerSíIdentificador del instrumento de mercado.
market_operation_typestringSíTipo de operación: buy o sell.
instrument_pricenumberSíPrecio del instrumento.
termintegerSíPlazo de la operación.
external_idstringSíIdentificador único de la petición.
by_amountbooleanSíIndica si la orden se envía por importe.
at_market_pricebooleanSíIndica si la orden se envía a precio de mercado.
closed_dollar_idintegerNoIdentificador de una operatoria de dólar cerrado, si aplica.

Reglas de combinación entre by_amount y at_market_price

Existen cuatro combinaciones válidas para definir cómo se interpreta la orden:

  1. by_amount=true y at_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.
  2. by_amount=false y at_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.
  3. by_amount=false y at_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.
  4. by_amount=true y at_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.

Valores operativos relevantes

  • market_operation_type: buy para compra o sell para venta.
  • term: 0 para contado inmediato, 1 para operaciones a 24 horas y 2 para operaciones a 48 horas.

Posibles estados de la orden

market_order_status_idDescripción
SENDING_PENDINGPendiente de envío. Será enviada tan pronto como sea posible.
RETRYSe intentó enviar pero no fue posible. Será reenviada cuando corresponda.
SENTEnviada y a la espera de confirmación del mercado.
OFFEREDOfertada en el mercado.
COMPLETEDCompletada. Es un estado final.
CANCELLEDCancelada manualmente.
REJECTEDRechazada por el mercado. Es un estado final.
PARTIALLY_COMPLETEDParcialmente completada. Puede ser temporal o final según la fecha de la orden.
PENDING_CANCELLATIONSe solicitó la cancelación pero todavía no fue confirmada.
NOT_SENTNo enviada. Es un estado final.
EXPIREDExpirada 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.

CampoTipoDescripción
market_order_idintegerCódigo identificador de la orden.
investment_account_idintegerCuenta comitente que envió la orden.
market_instrument_idintegerIdentificador del instrumento operado.
tickerstringTicker del instrumento.
market_operation_typestringTipo de operación.
amountnumberImporte bruto informado.
net_amountnumberImporte neto estimado o resultante.
estimated_expensesnumberGastos estimados de la orden.
include_expenses_in_amountbooleanIndica si los gastos fueron incluidos en el importe.
by_amountbooleanIndica si la orden fue enviada por importe.
at_market_pricebooleanIndica si la orden fue enviada a precio de mercado.
quantityintegerCantidad operada.
currency_idstringMoneda de la orden.
termintegerPlazo de la operación.
instrument_pricenumberPrecio utilizado para la operación.
instrument_typestringTipo de instrumento.
external_idstringIdentificador externo enviado en la request.
trade_datestringFecha de concertación.
settlement_datestringFecha de liquidación.
created_atstringFecha de creación de la orden.
updated_atstringFecha de última actualización.
market_order_status_idstringEstado actual de la orden.
executed_quantityintegerCantidad ya ejecutada.
pending_quantityintegerCantidad 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 mismo external_id o 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.

Body Params

Validation schema for InsertMarketOrder POST request.

integer
required
integer
required
≥ 0
number
required
≥ 0
string
required
length ≤ 5

Currency ISO 4217 code

integer
required
string
enum
required

BUY = "buy"
SELL = "sell"

Allowed:
number
required
≥ 0
integer
enum
required

IMMEDIATE = 0
H24 = 1
H48 = 2

Allowed:
string
required
boolean
required
boolean
required
integer
Responses

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json