# Crear nueva orden

`POST /orders`

Coloca una orden y la devuelve tal como la almacenó el motor de trading. Las órdenes de incremento (`market`, `limit`, `stop_market`, `stop_limit`) abren o amplían una posición;
las órdenes de cierre (`stop`, `take`, `trailing_stop`) se vinculan a una posición existente mediante `positionId`.

`amount` se lee en una unidad diferente por cada uno de los dos: en una orden de aumento es un importe de cotización reservado del saldo libre, en una orden de cierre
es el tamaño del activo base de la posición a cerrar, sin reservar nada. El resto de los campos de tamaño (`expectedAmount`, `sizeMode`,
`baseSize`, `leverage`) pertenecen solo a las órdenes de aumento.

Más allá del esquema a nivel de campo, la solicitud se verifica para:

- **Forma para el tipo.** Cada rechazo aquí es un `400` cuyo código nombra la combinación de campos en falta:
  - tamaño — `amount_not_positive`, `base_size_required`, `base_size_negative`, `base_size_not_allowed`;
  - apalancamiento — `leverage_required`, `leverage_negative`;
  - precio de activación — `trigger_price_required`, `trigger_price_negative`;
  - stop-loss / take-profit adjuntos a una orden de incremento — `stop_trigger_price_negative`, `take_trigger_price_negative`,
    `stop_trigger_price_gt_trigger_price`, `stop_trigger_price_lt_trigger_price`, `take_trigger_price_gt_trigger_price`,
    `take_trigger_price_lt_trigger_price`;
  - precio de stop-limit — `stop_limit_price_required`, `stop_limit_price_negative`, `stop_limit_price_gt_trigger_price`,
    `stop_limit_price_lt_trigger_price`;
  - stop móvil — `trailing_stop_activation_price_negative`, `trailing_stop_offset_required`, `trailing_stop_offset_conflict`,
    `trailing_stop_offset_negative`, `trailing_stop_offset_percent_negative`, `trailing_stop_offset_percent_gte_one`;
  - órdenes de cierre — `position_id_required`.
- **Apalancamiento** de una orden de incremento. Debe mantenerse dentro de los límites del mercado: no por debajo del mínimo del mercado ni por encima del máximo de la fase,
  con `invalid_leverage` (`leverage` más `minLeverage` o `maxLeverage` en el cuerpo).
- **Cuenta.** Debe pertenecer al llamador y estar en un estado de trading; las órdenes de incremento se rechazan además mientras la cuenta está bloqueada por el límite de capital gestionado,
  y necesitan `amount` disponible como saldo libre.
- **Mercado.** Debe estar abierto y dentro de la categoría en la que la cuenta puede operar (cripto o RWA). Un mercado de solo cierre no acepta nada más que una orden `take` creada
  sin un precio de activación.
- **Posición**, cuando se proporciona `positionId`: debe existir (`position_not_found`), estar abierta, estar en la misma cuenta, pertenecer al mismo
  mercado y tener la misma dirección que la orden (`position_not_available`).
- **Precio de activación**, contra el precio de mercado actual y — para `stop` / `take` — contra el precio de liquidación de la posición
  (`trigger_price_gt_current`, `trigger_price_lt_current`, `trigger_price_gt_liquidation`, `trigger_price_lt_liquidation`).
  Una orden `market` con un stop-loss / take-profit adjunto se comprueba contra el precio de liquidación que tendría su posición después de la ejecución:
  `market_price_unavailable` cuando no hay un precio actual contra el que comprobar, `order_validation_invariant` cuando faltan los campos de tamaño necesarios para
  esa proyección.
- **Nocional** de una orden de aumento. `(amount − fee) × leverage` debe ajustarse al nocional abierto máximo que el mercado permite en esa dirección
  (`order_exceeds_max_open_notional`).

Una orden diferida no se ejecuta aquí, por lo que aún puede fallar cuando su disparador se active más tarde: entonces termina con el estado `canceled_by_error` y un
`errorCode` (`insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth`, `order_exceeds_max_open_notional`,
`order_zero_size_at_execution`, `slippage_tolerance`, `market_close_only_at_execution`), y se libera su reserva.

Envía un encabezado `x-idempotency-key` para que la llamada sea segura frente a repeticiones: dentro de la ventana de repetición indicada en ese encabezado, la misma clave en la misma ruta reproduce la respuesta almacenada (marcada con `X-Idempotency-Cached: true` y `X-Idempotency-Timestamp`) en lugar de actuar de nuevo, y una segunda llamada que llegue mientras la primera aún se está ejecutando recibe `409` (`idempotency_key_in_flight`).

<a id="authorization"></a>

## Autorización

bearer: http · bearer (obligatorio). Clave de API personal, con el prefijo `usk_`.

<a id="parameters"></a>

## Parámetros

- header: x-idempotency-key (string; opcional). Clave de idempotencia — cualquier cadena opaca, un uuid v4 funciona bien. Repetir la llamada con la misma clave en esta ruta dentro de 1 hora reproduce la respuesta almacenada en lugar de actuar de nuevo; una reproducción incluye `X-Idempotency-Cached: true` y `X-Idempotency-Timestamp`. Omite el encabezado para optar por no participar.

Tipo: string

Ejemplo: "9f1c2b7e-5a3d-4f61-9b0e-2c7d4a8e1f35"

<a id="request-body-ordercreaterequest"></a>

## Cuerpo de la solicitud · OrderCreateRequest

application/json · obligatorio

Esquema: OrderCreateRequest

Tipo: object

Campos obligatorios: accountId, marketId, type, direction, amount

Tipos de campos obligatorios: accountId (string · uuid; obligatorio), marketId (string · uuid; obligatorio), type (string · enum; obligatorio), direction (string · enum; obligatorio), amount (string · int32; obligatorio)

- accountId (string · uuid; obligatorio)

accountId ejemplo: 00000000-0000-4000-8000-000000000000

accountId.Tipo: string · uuid

accountId.Cuenta de trader en la que se coloca la orden. Debe pertenecer al llamador.

accountId.format: uuid

accountId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- marketId (string · uuid; obligatorio)

marketId ejemplo: 00000000-0000-4000-8000-000000000000

marketId.Tipo: string · uuid

marketId.Mercado en el que se coloca la orden, tal como lo devuelve `GET /v2/markets`.

marketId.format: uuid

marketId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- type (string · enum; obligatorio)

type ejemplo: market

type.Tipo: string · enum

type.Tipo de orden. Tipos de aumento (apertura de posición): `market`, `limit`, `stop_market`, `stop_limit`. Tipos de cierre, vinculados a una posición existente: `stop`, `take`, `trailing_stop`. `liquidation` es generado por la propia plataforma y `add_margin` / `remove_margin` son heredados; ninguno de los tres se acepta aquí.

type.Valores permitidos: ["market","limit","stop","trailing_stop","take","stop_limit","stop_market"]

- direction (string · enum; obligatorio)

direction ejemplo: long

direction.Tipo: string · enum

direction.Dirección de la orden. Para una orden de cierre, debe coincidir con la dirección de la posición a la que está vinculada.

direction.Valores permitidos: ["long","short"]

- positionId (string · uuid · nullable; opcional)

positionId ejemplo: 00000000-0000-4000-8000-000000000000

positionId.Tipo: string · uuid · nullable

positionId.Posición a la que está vinculada una orden de cierre (`stop`, `take`, `trailing_stop`). Obligatoria para esos tipos, ignorada para las órdenes de aumento.

positionId.format: uuid

positionId.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- amount (string · int32; obligatorio)

amount ejemplo: 100000000000

amount.Tipo: string · int32

amount.Con qué se dimensiona la orden, fp9 en bruto: la unidad depende de la clase de orden. En una orden de aumento (`market`, `limit`, `stop_market`, `stop_limit`) es un monto **cotización** reservado del saldo libre (margen, comisión, spread y buffer): la cuenta debe tener al menos esta cantidad, y la reserva se libera cuando se cancela la orden. En una orden de cierre (`stop`, `take`, `trailing_stop`) es el tamaño en **activo base** de la posición a cerrar y no se reserva nada; un tamaño mayor que el que mantiene la posición la cierra en su totalidad.

amount.format: int32

amount.pattern: ^(?:-?[1-9][0-9]*|0)$

- expectedAmount (string · int32 · nullable; opcional)

expectedAmount ejemplo: 0

expectedAmount.Tipo: string · int32 · nullable

expectedAmount.Tolerancia de deslizamiento para órdenes de aumento: el tamaño de posición que el llamador espera para `amount`, fp9 en bruto. La ejecución fuera de la tolerancia falla con `slippage_tolerance`. Omitida o `0`: sin comprobación de tolerancia. No aplicable a las órdenes de cierre.

expectedAmount.format: int32

expectedAmount.pattern: ^(?:-?[1-9][0-9]*|0)$

- leverage (string · int32 · nullable; opcional)

leverage ejemplo: 10000000000

leverage.Tipo: string · int32 · nullable

leverage.Apalancamiento, fp9 en bruto (`10000000000` = 10x). Obligatorio para órdenes de incremento y debe estar dentro de los límites de apalancamiento del mercado.

leverage.format: int32

leverage.pattern: ^(?:-?[1-9][0-9]*|0)$

- triggerPrice (string · int32 · nullable; opcional)

triggerPrice ejemplo: 65000000000000

triggerPrice.Tipo: string · int32 · nullable

triggerPrice.Precio al que se activa la orden, fp9 en bruto. Obligatorio para `limit`, `stop`, `take`, `stop_market` y `stop_limit`, y rechazado para `market`. Para `stop` / `take`, `0` significa que la orden se crea sin un disparador y se puede establecer más tarde.

triggerPrice.format: int32

triggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopTriggerPrice (string · int32 · nullable; opcional)

stopTriggerPrice ejemplo: 1000000000

stopTriggerPrice.Tipo: string · int32 · nullable

stopTriggerPrice.Stop-loss asociado a una orden de incremento, fp9 en bruto. Debe situarse por debajo del precio de activación de entrada para `long` y por encima de él para `short`.

stopTriggerPrice.format: int32

stopTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- takeTriggerPrice (string · int32 · nullable; opcional)

takeTriggerPrice ejemplo: 1000000000

takeTriggerPrice.Tipo: string · int32 · nullable

takeTriggerPrice.Take-profit asociado a una orden de incremento, fp9 en bruto. Debe situarse por encima del precio de activación de entrada para `long` y por debajo de él para `short`.

takeTriggerPrice.format: int32

takeTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopActivationPrice (string · int32 · nullable; opcional)

trailingStopActivationPrice ejemplo: 1000000000

trailingStopActivationPrice.Tipo: string · int32 · nullable

trailingStopActivationPrice.Precio al que un `trailing_stop` comienza el trailing, fp9 en bruto. Omitido — la orden hace trailing desde el momento en que se crea.

trailingStopActivationPrice.format: int32

trailingStopActivationPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffset (string · int32 · nullable; opcional)

trailingStopOffset ejemplo: 1000000000

trailingStopOffset.Tipo: string · int32 · nullable

trailingStopOffset.Distancia de seguimiento como un monto absoluto de cotización, fp9 en bruto. Se requiere exactamente uno de `trailingStopOffset` / `trailingStopOffsetPercent`.

trailingStopOffset.format: int32

trailingStopOffset.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffsetPercent (string · int32 · nullable; opcional)

trailingStopOffsetPercent ejemplo: 50000000

trailingStopOffsetPercent.Tipo: string · int32 · nullable

trailingStopOffsetPercent.Distancia de seguimiento como una fracción del precio, fp9 en bruto y estrictamente por debajo de `1000000000` (100%). Se requiere exactamente uno de `trailingStopOffset` / `trailingStopOffsetPercent`.

trailingStopOffsetPercent.format: int32

trailingStopOffsetPercent.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopLimitPrice (string · int32 · nullable; opcional)

stopLimitPrice ejemplo: 1000000000

stopLimitPrice.Tipo: string · int32 · nullable

stopLimitPrice.Precio límite al que se coloca una orden `stop_limit` una vez que se activa su disparador, fp9 en bruto. Obligatorio para ese tipo; debe estar en o por debajo del precio de activación para `long` y en o por encima de él para `short`.

stopLimitPrice.format: int32

stopLimitPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- sizeMode (string · enum; opcional)

sizeMode ejemplo: quote

sizeMode.Tipo: string · enum

sizeMode.Cómo se expresa el tamaño de una orden de aumento: `quote` (predeterminado) lo dimensiona por `amount`, `base` lo dimensiona por `baseSize` mientras que `amount` permanece como reserva. Solo órdenes de aumento — una orden de cierre siempre se dimensiona por `amount` en unidades del activo base.

sizeMode.Valores permitidos: ["quote","base"]

- baseSize (string · int32 · nullable; opcional)

baseSize ejemplo: 1000000000

baseSize.Tipo: string · int32 · nullable

baseSize.Tamaño de la orden en unidades del activo base, fp9 en bruto. Obligatorio cuando `sizeMode` es `base` y rechazado en caso contrario, y significativo solo para órdenes de aumento.

baseSize.format: int32

baseSize.pattern: ^(?:-?[1-9][0-9]*|0)$

Ejemplo



```json
{
  "accountId": "00000000-0000-4000-8000-000000000000",
  "marketId": "00000000-0000-4000-8000-000000000000",
  "type": "market",
  "direction": "long",
  "amount": "100000000000"
}
```

<a id="example-curl"></a>

## Ejemplo · cURL

```bash
curl --request POST 'https://api.upscale.trade/orders' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{
  "accountId": "00000000-0000-4000-8000-000000000000",
  "marketId": "00000000-0000-4000-8000-000000000000",
  "type": "market",
  "direction": "long",
  "amount": "100000000000"
}'
```

<a id="example-javascript"></a>

## Ejemplo · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/orders", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: "{\n  \"accountId\": \"00000000-0000-4000-8000-000000000000\",\n  \"marketId\": \"00000000-0000-4000-8000-000000000000\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"amount\": \"100000000000\"\n}",
});
console.log(response.status, await response.text());
```

<a id="example-python"></a>

## Ejemplo · Python

```python
import requests

response = requests.request(
    "POST",
    "https://api.upscale.trade/orders",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY","Content-Type":"application/json"},
    data="{\n  \"accountId\": \"00000000-0000-4000-8000-000000000000\",\n  \"marketId\": \"00000000-0000-4000-8000-000000000000\",\n  \"type\": \"market\",\n  \"direction\": \"long\",\n  \"amount\": \"100000000000\"\n}",
    timeout=30,
)
print(response.status_code, response.text)
```

<a id="response-401"></a>

## Respuesta 401

**401**  — No autorizado

<a id="response-403"></a>

## Respuesta 403

**403**  — La cuenta pertenece a otro usuario (`account_access_denied`), o la solicitud se autentica con una clave de API mientras `api_trading` está deshabilitado en la cuenta (`api_trading_not_enabled`). El trading en la cuenta ha terminado en su estado actual (`challenge_closed`), o la cuenta está bloqueada por el límite de capital gestionado (`funded_limit_trading_locked`). El mercado está en pausa (`market_paused`) o solo acepta órdenes de cierre (`market_close_only`).

<a id="response-404"></a>

## Respuesta 404

**404**  — No existe tal cuenta, mercado o posición.

<a id="response-409"></a>

## Respuesta 409

**409**  — Otra llamada con la misma `x-idempotency-key` sigue en ejecución (`idempotency_key_in_flight`). Reintenta cuando haya terminado.

<a id="response-429"></a>

## Respuesta 429

**429**  — Se superó el límite de velocidad de la clave de API (`api_key_rate_limit_exceeded`). `Retry-After` indica cuándo volver; el cuerpo incluye el bucket (`read` / `write`), la ventana que se activó, su límite y `retryAt`.

<a id="response-default-orderresponse"></a>

## Respuesta default · OrderResponse

**default** application/json — Respuesta

Esquema: OrderResponse

Tipo: object

Campos obligatorios: id, txId, trader, market, status, type, direction, triggerPrice, requestedTriggerPrice, stopPrice, limitPrice, stopTriggerPrice, takeTriggerPrice, trailingStopActivationPrice, trailingStopOffset, trailingStopOffsetPercent, leverage, index, positionId, parentOrderId, expiration, amount, indexPrice, settlementOraclePrice, createdAt, error, realizedPnl, rawRealizedPnl, profitAdjustmentApplied, executedAfterPause, sizeMode, baseSize, reservedAmount, errorCode, reason

Tipos de campos obligatorios: id (string · uuid; obligatorio), txId (string; obligatorio), trader (string · uuid; obligatorio), market (string · uuid; obligatorio), status (string · enum; obligatorio), type (string · enum; obligatorio), direction (string · enum; obligatorio), triggerPrice (string · int32; obligatorio), requestedTriggerPrice (string · int32 · nullable; obligatorio), stopPrice (string · int32; obligatorio), limitPrice (string · int32; obligatorio), stopTriggerPrice (string · int32; obligatorio), takeTriggerPrice (string · int32; obligatorio), trailingStopActivationPrice (string · int32; obligatorio), trailingStopOffset (string · int32; obligatorio), trailingStopOffsetPercent (string · int32; obligatorio), leverage (string · int32 · nullable; obligatorio), index (string; obligatorio), positionId (string[]; obligatorio), parentOrderId (string[]; obligatorio), expiration (string · date-time · nullable; obligatorio), amount (string · int32; obligatorio), indexPrice (string · int32 · nullable; obligatorio), settlementOraclePrice (string · int32; obligatorio), createdAt (string · date-time; obligatorio), error (string[]; obligatorio), realizedPnl (string · int32 · nullable; obligatorio), rawRealizedPnl (string · int32 · nullable; obligatorio), profitAdjustmentApplied (boolean; obligatorio), executedAfterPause (boolean; obligatorio), sizeMode (string · enum; obligatorio), baseSize (string · int32 · nullable; obligatorio), reservedAmount (string · int32 · nullable; obligatorio), errorCode (string[]; obligatorio), reason (string · enum · nullable; obligatorio)

- id (string · uuid; obligatorio)

id ejemplo: 00000000-0000-4000-8000-000000000000

id.Tipo: string · uuid

id.Identificador de la orden.

id.format: uuid

id.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- txId (string; obligatorio)

txId ejemplo: string

txId.Tipo: string

txId.Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.

- trader (string · uuid; obligatorio)

trader ejemplo: 00000000-0000-4000-8000-000000000000

trader.Tipo: string · uuid

trader.Cuenta del trader a la que pertenece la orden.

trader.format: uuid

trader.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- market (string · uuid; obligatorio)

market ejemplo: 00000000-0000-4000-8000-000000000000

market.Tipo: string · uuid

market.Mercado en el que se coloca la orden.

market.format: uuid

market.pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$

- status (string · enum; obligatorio)

status ejemplo: active

status.Tipo: string · enum

status.Estado del ciclo de vida: `active` mientras espera, `executed` una vez ejecutada, `canceled` cuando es cancelada por el trader o la plataforma, `canceled_by_update` cuando es reemplazada por una edición, `canceled_by_position` cuando la posición a la que estaba vinculada desapareció, `canceled_by_error` cuando falló la ejecución — consulta `errorCode`.

status.Valores permitidos: ["active","canceled","canceled_by_update","canceled_by_error","canceled_by_position","executed"]

- type (string · enum; obligatorio)

type ejemplo: market

type.Tipo: string · enum

type.Tipo de orden. `liquidation` marca una orden que el propio motor generó.

type.Valores permitidos: ["market","limit","stop","trailing_stop","take","stop_limit","stop_market","liquidation"]

- direction (string · enum; obligatorio)

direction ejemplo: long

direction.Tipo: string · enum

direction.Dirección de la orden.

direction.Valores permitidos: ["long","short"]

- triggerPrice (string · int32; obligatorio)

triggerPrice ejemplo: 1000000000

triggerPrice.Tipo: string · int32

triggerPrice.Precio al que se dispara la orden, fp9 en bruto. `0` cuando la orden no lleva disparador.

triggerPrice.format: int32

triggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- requestedTriggerPrice (string · int32 · nullable; obligatorio)

requestedTriggerPrice ejemplo: 1000000000

requestedTriggerPrice.Tipo: string · int32 · nullable

requestedTriggerPrice.Precio de activación tal como se solicitó, antes de que el motor lo desplazara hasta la distancia mínima de stop, fp9 en bruto. Nulo cuando el precio solicitado se mantuvo tal cual.

requestedTriggerPrice.format: int32

requestedTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopPrice (string · int32; obligatorio)

stopPrice ejemplo: 1000000000

stopPrice.Tipo: string · int32

stopPrice.Precio de activación de una orden `stop_market` / `stop_limit`, fp9 en bruto; `0` para cualquier otro tipo.

stopPrice.format: int32

stopPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- limitPrice (string · int32; obligatorio)

limitPrice ejemplo: 1000000000

limitPrice.Tipo: string · int32

limitPrice.Precio al que se coloca la orden una vez activada, fp9 en bruto: el precio stop-limit, recurriendo al precio de activación como alternativa.

limitPrice.format: int32

limitPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- stopTriggerPrice (string · int32; obligatorio)

stopTriggerPrice ejemplo: 1000000000

stopTriggerPrice.Tipo: string · int32

stopTriggerPrice.Stop-loss asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.

stopTriggerPrice.format: int32

stopTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- takeTriggerPrice (string · int32; obligatorio)

takeTriggerPrice ejemplo: 1000000000

takeTriggerPrice.Tipo: string · int32

takeTriggerPrice.Take-profit asociado a la orden, fp9 en bruto. `0` cuando no hay ninguno asociado.

takeTriggerPrice.format: int32

takeTriggerPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopActivationPrice (string · int32; obligatorio)

trailingStopActivationPrice ejemplo: 1000000000

trailingStopActivationPrice.Tipo: string · int32

trailingStopActivationPrice.Precio al que un stop móvil comienza a hacer seguimiento, fp9 sin procesar. `0` cuando hace seguimiento desde la creación.

trailingStopActivationPrice.format: int32

trailingStopActivationPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffset (string · int32; obligatorio)

trailingStopOffset ejemplo: 1000000000

trailingStopOffset.Tipo: string · int32

trailingStopOffset.Distancia de seguimiento como un importe absoluto de cotización, fp9 sin procesar. `0` cuando la distancia se establece como porcentaje.

trailingStopOffset.format: int32

trailingStopOffset.pattern: ^(?:-?[1-9][0-9]*|0)$

- trailingStopOffsetPercent (string · int32; obligatorio)

trailingStopOffsetPercent ejemplo: 1000000000

trailingStopOffsetPercent.Tipo: string · int32

trailingStopOffsetPercent.Distancia de seguimiento como una fracción del precio, fp9 sin procesar. `0` cuando la distancia es absoluta.

trailingStopOffsetPercent.format: int32

trailingStopOffsetPercent.pattern: ^(?:-?[1-9][0-9]*|0)$

- leverage (string · int32 · nullable; obligatorio)

leverage ejemplo: 1000000000

leverage.Tipo: string · int32 · nullable

leverage.Apalancamiento de la orden, fp9 en bruto. Nulo en órdenes de cierre, que heredan el apalancamiento de la posición.

leverage.format: int32

leverage.pattern: ^(?:-?[1-9][0-9]*|0)$

- index (string; obligatorio)

index ejemplo: string

index.Tipo: string

index.Identificador de la orden. Se conserva por compatibilidad con versiones anteriores, siempre igual a `id`.

- positionId (string[]; obligatorio)

positionId ejemplo: [
  "string"
]

positionId.Tipo: string[]

positionId.Posición a la que está asociada una orden de cierre. Nulo para órdenes que abren o aumentan una posición.

positionId.[]Tipo: string

- parentOrderId (string[]; obligatorio)

parentOrderId ejemplo: [
  "string"
]

parentOrderId.Tipo: string[]

parentOrderId.Orden de la que se generó esta: un stop o un take creado a partir de `stopTriggerPrice` / `takeTriggerPrice`, o la orden limit en la que se convirtió un `stop_limit`. Nulo cuando la orden se envió directamente.

parentOrderId.[]Tipo: string

- expiration (string · date-time · nullable; obligatorio)

expiration ejemplo: 2026-05-01T12:30:00.000Z

expiration.Tipo: string · date-time · nullable

expiration.Siempre nulo. Se mantiene por compatibilidad con versiones anteriores: las órdenes no expiran por sí solas.

expiration.format: date-time

- amount (string · int32; obligatorio)

amount ejemplo: 1000000000

amount.Tipo: string · int32

amount.Tamaño de la orden, fp9 en bruto, en la unidad que usa su clase: en una orden de incremento, un importe de cotización — la reserva mientras espera, y lo que realmente gastó una vez ejecutada; en una orden de cierre (`stop`, `take`, `trailing_stop`), el tamaño del activo base que cierra, tal como se solicitó al crearla.

amount.format: int32

amount.pattern: ^(?:-?[1-9][0-9]*|0)$

- indexPrice (string · int32 · nullable; obligatorio)

indexPrice ejemplo: 1000000000

indexPrice.Tipo: string · int32 · nullable

indexPrice.Precio índice al que se ejecutó la orden, fp9 en bruto. Nulo mientras la orden no se haya ejecutado.

indexPrice.format: int32

indexPrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- settlementOraclePrice (string · int32; obligatorio)

settlementOraclePrice ejemplo: 1000000000

settlementOraclePrice.Tipo: string · int32

settlementOraclePrice.Siempre `1000000000` (1.0). Se mantiene por compatibilidad con versiones anteriores.

settlementOraclePrice.format: int32

settlementOraclePrice.pattern: ^(?:-?[1-9][0-9]*|0)$

- createdAt (string · date-time; obligatorio)

createdAt ejemplo: 2026-05-01T12:30:00.000Z

createdAt.Tipo: string · date-time

createdAt.Cuándo se aceptó la orden.

createdAt.format: date-time

- error (string[]; obligatorio)

error ejemplo: [
  "string"
]

error.Tipo: string[]

error.Siempre null. Se mantiene por compatibilidad hacia atrás — utilice `errorCode`.

error.[]Tipo: string

- realizedPnl (string · int32 · nullable; obligatorio)

realizedPnl ejemplo: 1000000000

realizedPnl.Tipo: string · int32 · nullable

realizedPnl.Pnl realizado por esta orden, fp9 en bruto. Se establece solo en una orden de cierre ejecutada; null mientras está pendiente y en órdenes que abren o aumentan una posición.

realizedPnl.format: int32

realizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$

- rawRealizedPnl (string · int32 · nullable; obligatorio)

rawRealizedPnl ejemplo: 1000000000

rawRealizedPnl.Tipo: string · int32 · nullable

rawRealizedPnl.Pnl realizado antes del ajuste de 60 segundos, fp9 en bruto. Difiere de `realizedPnl` solo cuando se activó el ajuste.

rawRealizedPnl.format: int32

rawRealizedPnl.pattern: ^(?:-?[1-9][0-9]*|0)$

- profitAdjustmentApplied (boolean; obligatorio)

profitAdjustmentApplied ejemplo: true

profitAdjustmentApplied.Tipo: boolean

profitAdjustmentApplied.Si el ajuste de 60 segundos limitó la ganancia de esta orden — dentro de un minuto de una apertura o un aumento, el pnl de la posición no puede crecer por encima de lo que era en ese momento.

- executedAfterPause (boolean; obligatorio)

executedAfterPause ejemplo: true

executedAfterPause.Tipo: boolean

executedAfterPause.Indica si la orden se ejecutó después de una pausa del mercado. No lo establece el motor actual — siempre `false`.

- sizeMode (string · enum; obligatorio)

sizeMode ejemplo: quote

sizeMode.Tipo: string · enum

sizeMode.Cómo se expresó el tamaño al crearse: `quote` dimensiona la orden por `amount`, `base` la dimensiona por `baseSize`.

sizeMode.Valores permitidos: ["quote","base"]

- baseSize (string · int32 · nullable; obligatorio)

baseSize ejemplo: 1000000000

baseSize.Tipo: string · int32 · nullable

baseSize.Tamaño de la orden en unidades del activo base, fp9 en bruto. Nulo para órdenes dimensionadas por `quote`.

baseSize.format: int32

baseSize.pattern: ^(?:-?[1-9][0-9]*|0)$

- reservedAmount (string · int32 · nullable; obligatorio)

reservedAmount ejemplo: 1000000000

reservedAmount.Tipo: string · int32 · nullable

reservedAmount.Importe de quote reservado cuando se creó la orden con sizeMode=base, fp9 en bruto. Se mantiene en la reserva original después de la ejecución, mientras que `amount` se reescribe a lo que se gastó. Nulo para órdenes dimensionadas por `quote`, donde `amount` es la reserva.

reservedAmount.format: int32

reservedAmount.pattern: ^(?:-?[1-9][0-9]*|0)$

- errorCode (string[]; obligatorio)

errorCode ejemplo: [
  "string"
]

errorCode.Tipo: string[]

errorCode.Por qué falló la ejecución, establecido junto con el estado `canceled_by_error` — por ejemplo `insufficient_reserve_at_execution`, `order_below_min_notional`, `order_exceeds_market_depth` o `slippage_tolerance`. Nulo en caso contrario.

errorCode.[]Tipo: string

- reason (string · enum · nullable; obligatorio)

reason ejemplo: force_close

reason.Tipo: string · enum · nullable

reason.Por qué la plataforma canceló la orden por sí misma, por ejemplo `force_close` o `weekly_session_risk_close`. Nulo para cancelaciones impulsadas por el trader.

reason.Valores permitidos: ["force_close","stop_accounts_fail","stop_accounts_freeze","stop_accounts_promote","stop_accounts_manual","weekly_session_risk_close",null]

Ejemplo



```json
{
  "id": "00000000-0000-4000-8000-000000000000",
  "txId": "string",
  "trader": "00000000-0000-4000-8000-000000000000",
  "market": "00000000-0000-4000-8000-000000000000",
  "status": "active",
  "type": "market",
  "direction": "long",
  "triggerPrice": "1000000000",
  "requestedTriggerPrice": "1000000000",
  "stopPrice": "1000000000",
  "limitPrice": "1000000000",
  "stopTriggerPrice": "1000000000",
  "takeTriggerPrice": "1000000000",
  "trailingStopActivationPrice": "1000000000",
  "trailingStopOffset": "1000000000",
  "trailingStopOffsetPercent": "1000000000",
  "leverage": "1000000000",
  "index": "string",
  "positionId": [
    "string"
  ],
  "parentOrderId": [
    "string"
  ],
  "expiration": "2026-05-01T12:30:00.000Z",
  "amount": "1000000000",
  "indexPrice": "1000000000",
  "settlementOraclePrice": "1000000000",
  "createdAt": "2026-05-01T12:30:00.000Z",
  "error": [
    "string"
  ],
  "realizedPnl": "1000000000",
  "rawRealizedPnl": "1000000000",
  "profitAdjustmentApplied": true,
  "executedAfterPause": true,
  "sizeMode": "quote",
  "baseSize": "1000000000",
  "reservedAmount": "1000000000",
  "errorCode": [
    "string"
  ],
  "reason": "force_close"
}
```