> ## Documentation Index
> Fetch the complete documentation index at: https://docs.4casters.io/llms.txt
> Use this file to discover all available pages before exploring further.

# API de órdenes de 4casters

La API de órdenes de 4casters permite colocar y cancelar órdenes en tiempo real y gestionar la sesión por una conexión WebSocket cruda.

<h2 id="endpoints">
  Endpoints
</h2>

* **API de órdenes**: `wss://orders-api.4casters.io/orders/ws`

<h2 id="auth">
  Autenticación
</h2>

La conexión se autentica con un token de 4Casters. Envía el token en el
encabezado `Authorization` del handshake WebSocket. El servidor deriva el usuario
a partir del token: **sin nombre de usuario en la URL**.

<h3 id="get-a-token">
  Obtener un token
</h3>

No hay una clave de API aparte. Inicia sesión con tu nombre de usuario y contraseña
de 4Casters llamando al endpoint `/user/login` de la API REST de 4Casters. La respuesta
incluye un token que puedes usar aquí. Consulta [Autenticación](/es/pages/authentication)
para la vida útil y la rotación del token.

Consulta [`POST /user/login` en la documentación de la API REST de 4Casters](/es/pages/rest/authentication).

<h3 id="connect">
  Conectar
</h3>

<CodeGroup>
  ```javascript JavaScript theme={null}
  const WebSocket = require('ws');
  const token = process.env.FOURCASTERS_TOKEN;
  const ws = new WebSocket('wss://orders-api.4casters.io/orders/ws', {
    headers: { Authorization: token },
  });
  ```
</CodeGroup>

<h2 id="message-format">
  Formato de mensajes
</h2>

Cada solicitud del cliente es una 2-tupla `[messageType, payload]`. Cada payload debe incluir un `requestID` que tú generas; el servidor lo devuelve para que puedas correlacionar las respuestas.

<CodeGroup>
  ```json Request theme={null}
  [
    "messageType",
    {
      "requestID": "YOUR_REQUEST_ID",
      "...": "..."
    }
  ]
  ```
</CodeGroup>

Las respuestas del servidor son objetos JSON con `requestID` más `data` (éxito) o `error` (fallo):

<CodeGroup>
  ```json Success theme={null}
  {
    "requestID": "YOUR_REQUEST_ID",
    "data": { "...": "..." }
  }
  ```

  ```json Error theme={null}
  {
    "requestID": "YOUR_REQUEST_ID",
    "error": "human-readable error"
  }
  ```
</CodeGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.