# Mi historial (https://docs.loybox.com.ar/api-reference/mi-cuenta/historial)



<Endpoint method="GET" path="/v1/me/activity" auth="user-token" />

Movimientos del usuario en el programa del comercio: consumos que sumaron
puntos, compras de beneficios, canjes y recompensas especiales.

Paginado por cursor: para traer la página siguiente se pasa el `next_cursor` de
la respuesta anterior en `?cursor=`.

## Headers [#headers]

<Fields>
  <Field name="X-Commerce-Id" type="integer" location="header" required="true">
    Id del comercio que integra la API. Todas las respuestas quedan limitadas a
    este comercio.
  </Field>
</Fields>

## Parámetros [#parámetros]

<Fields>
  <Field name="cursor" type="string | null" location="query">
    Cursor de la página a traer. Se obtiene del `next_cursor` de la respuesta
    anterior. Sin especificar, trae la primera página.
  </Field>
</Fields>

## Respuesta [#respuesta]

<Fields>
  <Field name="results" type="array de movimientos" required="true">
    Los movimientos de esta página. Ver
    [Movimiento](https://docs.loybox.com.ar/api-reference/objetos#movimiento).
  </Field>

  <Field name="next_cursor" type="string | null">
    Se pasa como `?cursor=` para traer la página siguiente. `null` cuando no hay
    más.
  </Field>

  <Field name="previous_cursor" type="string | null">
    El cursor de la página anterior.
  </Field>
</Fields>

## Ejemplo [#ejemplo]

```bash
curl https://loybox-public-api-752998171300.southamerica-west1.run.app/v1/me/activity \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "X-Commerce-Id: 87"
```

```json
// 200 OK
{
  "results": [
    {
      "type": "consumption",
      "date": "2026-08-20T18:42:00Z",
      "points": 17,
      "benefit": null,
      "amount": 1750,
      "event": null,
      "additional_note": null
    },
    {
      "type": "benefit_exchange",
      "date": "2026-08-24T13:05:00Z",
      "points": -250,
      "benefit": {
        "id": "b_9f2a",
        "type": "percentage_discount",
        "description": "20% de descuento en toda la tienda",
        "cost": 250,
        "expiration": "2026-12-31T23:59:59Z",
        "benefit_type": "normal",
        "color": "#f1a10d",
        "buy_limit": 0,
        "prize": null,
        "tiendanube_coupon": null
      },
      "amount": null,
      "event": null,
      "additional_note": null
    }
  ],
  "next_cursor": "eyJkIjoiMjAyNi0wOC0yMCJ9",
  "previous_cursor": null
}
```

## Los cuatro tipos de movimiento [#los-cuatro-tipos-de-movimiento]

| `type`                  | Qué pasó                                | Campos que trae                |
| ----------------------- | --------------------------------------- | ------------------------------ |
| `consumption`           | Una compra que sumó puntos              | `amount`, `points`             |
| `benefit_exchange`      | Compró un beneficio con puntos          | `benefit`, `points` (negativo) |
| `benefit_usage`         | Canjeó un beneficio en el comercio      | `benefit`                      |
| `points_special_reward` | Una recompensa automática le dio puntos | `event`, `points`              |

Como los campos que vienen cargados dependen del `type`, conviene armar la fila
del historial con un `switch` sobre `type` y no leer todos los campos siempre.

## Errores [#errores]

| Código | Cuándo                                                                |
| ------ | --------------------------------------------------------------------- |
| `401`  | El token de acceso falta, venció o no corresponde a un usuario final. |
| `422`  | Falta el header `X-Commerce-Id`.                                      |
