# Cerrar todas las posiciones y órdenes

`POST /accounts/{accountId}/close-all`

Cancela cada orden activa en la cuenta y luego cierra cada posición abierta a mercado.

- Responde `204` sin cuerpo; las ejecuciones resultantes aparecen en el historial de posiciones y en los eventos de la cuenta.
- 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

- path: accountId (string · uuid; obligatorio). Identificador de la cuenta del trader. Debe pertenecer al solicitante.

Tipo: string · uuid

format: uuid

- 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 minuto reproduce la respuesta almacenada en lugar de actuar de nuevo; una repetición lleva `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="example-curl"></a>

## Ejemplo · cURL

```bash
curl --request POST 'https://api.upscale.trade/accounts/{accountId}/close-all' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY'
```

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

## Ejemplo · JavaScript

```javascript
const response = await fetch("https://api.upscale.trade/accounts/{accountId}/close-all", {
  method: "POST",
  headers: {
    "Accept": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
  },
});
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/accounts/{accountId}/close-all",
    headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY"},
    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`).

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

## Respuesta 404

**404**  — No hay ninguna cuenta con este identificador.

<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`.