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

# Registros de solicitudes y precio de la cuenta

>  - Consultar el cargo de una sola llamada por ID de solicitud o ID de tarea - Sincronizar por páginas todos los registros de consumo y de error de un periodo - Consultar el precio que realmente se aplica a tu cuenta para un modelo 

Usa tu API Key para consultar el cargo de cada llamada y el precio real que tu cuenta paga por un modelo. Ninguno de los tres endpoints comprueba el saldo; funcionan incluso con saldo 0.

```bash Registro único theme={null}
curl 'https://api.apimart.ai/v1/logs/requests/task_01M6ZDAXTC8QXYCDM5PXPM413R' \
  --header 'Authorization: Bearer <token>'
```

```bash Sincronizar registros theme={null}
curl --get 'https://api.apimart.ai/v1/logs/requests' \
  --header 'Authorization: Bearer <token>' \
  --data-urlencode 'start_timestamp=1762732800' \
  --data-urlencode 'end_timestamp=1762736400' \
  --data-urlencode 'limit=1000'
```

```bash Precio de la cuenta theme={null}
curl --get 'https://api.apimart.ai/v1/pricing/model' \
  --header 'Authorization: Bearer <token>' \
  --data-urlencode 'model=doubao-seedance-2.0' \
  --data-urlencode 'resolution=720P' \
  --data-urlencode 'duration=5'
```

```json Registro único theme={null}
{
  "object": "list",
  "request_id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
  "data": [
    {
      "id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
      "type": "consume",
      "status": "succeeded",
      "created_at": 1762740123,
      "model_name": "doubao-seedance-2.0",
      "token_name": "prod-server",
      "task_id": "task_01M6ZDAXTC8QXYCDM5PXPM413R",
      "prompt_tokens": 0,
      "completion_tokens": 0,
      "cache_tokens": 0,
      "cache_creation_tokens": 0,
      "cost_usd": 0.6,
      "cost_credits": 6
    }
  ]
}
```

```json Sincronizar registros theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "<ID de solicitud>",
      "type": "consume",
      "status": "succeeded",
      "created_at": 1762732805,
      "model_name": "gpt-5.5",
      "token_name": "prod-server",
      "prompt_tokens": 1200,
      "completion_tokens": 350,
      "cache_tokens": 0,
      "cache_creation_tokens": 0,
      "latency_ms": 2310,
      "first_token_ms": 420,
      "cost_usd": 0.004125,
      "cost_credits": 0.04125
    }
  ],
  "has_more": true,
  "next_cursor": "AQAAAABpEoXlAjIwMjYxMTEw...",
  "watermark": 1762739700
}
```

```json Precio de la cuenta theme={null}
{
  "model": "doubao-seedance-2.0",
  "canonical_model": "doubao-seedance-2.0",
  "currency": "USD",
  "group": "vip",
  "billing_type": "per_second",
  "unit": "per_second",
  "spec": { "resolution": "720P", "duration": 5 },
  "spec_source": "request",
  "estimated": false,
  "unit_price_usd": 0.12,
  "quantity": 5,
  "total_usd": 0.6,
  "credits": { "unit_price": 1.2, "total": 6 },
  "price_source": "membership",
  "price_factors": ["membership"],
  "membership_tier": "gold"
}
```

## Autenticación

**Authorization** `string` *required*

Usa la misma API Key con la que llamas a los modelos, con autenticación Bearer Token. Obtén tu clave en la [página de gestión de API Keys](https://apimart.ai/keys).

```
Authorization: Bearer YOUR_API_KEY
```

## Endpoints

```text theme={null}
GET /v1/logs/requests/{id}    Registro único por ID de solicitud
GET /v1/logs/requests         Sincronizar registros por periodo
GET /v1/pricing/model         Consultar el precio de la cuenta
```

Los importes están en USD; `cost_credits` y `credits` están en créditos, equivalentes a USD × 10.

***

## Registro único por ID de solicitud

```text theme={null}
GET /v1/logs/requests/{id}
```

**id** `string` *required*

* Llamadas síncronas: valor del encabezado de respuesta `X-Oneapi-Request-Id`
* Tareas asíncronas: ID de tarea devuelto al enviarla

> [!NOTE]
>
> Los registros se escriben de forma asíncrona y suelen estar disponibles unos segundos después de que termina la solicitud. Si recibes `404 log_not_found`, vuelve a intentarlo más tarde. Las tareas asíncronas se consultan por ID de tarea y solo tienen registro una vez completadas o fallidas.

La consulta abarca toda la cuenta a la que pertenece la API Key. `data` es un array; un mismo ID puede tener un registro de consumo y otro de error. Campos principales:

| Campo | Descripción |
| - | - |
| `id` | ID de solicitud o ID de tarea |
| `type` | `consume` (consumo) o `error` (error) |
| `created_at` | Hora del registro, segundos Unix; en tareas asíncronas, la hora de liquidación |
| `model_name` | Nombre del modelo |
| `token_name` | Nombre de la API Key que hizo la llamada (el nombre en el momento del registro; los nombres pueden repetirse). Para distinguir claves con precisión, filtra por `token_id` en el endpoint de sincronización |
| `prompt_tokens` / `completion_tokens` | Tokens de entrada / salida |
| `cost_usd` | Importe cobrado en este registro (USD) |
| `cost_credits` | Créditos cobrados |

`cost_usd` es el importe final liquidado: los registros de error siempre valen `0`, y los reembolsos por fallo se completan antes de escribir el registro. La suma de los registros con `type` igual a `consume` es el total cobrado por tus llamadas.

***

## Sincronizar registros de solicitudes

```text theme={null}
GET /v1/logs/requests
```

Obtén por páginas todos los registros de tu cuenta en un periodo — ideal para conciliaciones programadas. Cada registro tiene los mismos campos que la consulta de registro único.

**start\_timestamp** `integer` *required*

Hora de inicio, marca de tiempo Unix en segundos.

**end\_timestamp** `integer`

Hora de fin, marca de tiempo Unix en segundos. Por defecto, la hora actual. Ambos extremos son inclusivos y el periodo no puede superar 31 días.

**type** `string` (default: all)

Tipo de registro: `all`, `consume` o `error`.

**model** `string`

Filtrar por nombre de modelo.

**token\_id** `integer`

Devuelve solo los registros de la API Key indicada. Copia el ID desde la lista «Claves de API» de la consola (se muestra debajo del nombre de la clave); el ID no cambia al rotar la clave.

**limit** `integer` (default: 100)

Tamaño de página, `1`–`1000`.

**cursor** `string`

Cursor de paginación. Devuelve sin cambios el `next_cursor` de la página anterior y mantén los demás parámetros iguales mientras paginas.

En la respuesta, `has_more` indica si hay otra página, `next_cursor` es el cursor de la siguiente página y `watermark` es la hora del servidor menos 300 segundos.

> [!TIP]
>
> **Forma recomendada de sincronizar**: el `end_timestamp` de cada ejecución no debe superar `watermark`; empieza la siguiente ejecución 10 minutos antes del final de la anterior y elimina duplicados por `(id, type)`; dentro de una misma ventana, pagina hasta que `has_more` sea `false`.

***

## Consultar el precio de la cuenta

```text theme={null}
GET /v1/pricing/model
```

Consulta el precio real que paga por un modelo la cuenta a la que pertenece la API Key actual. Se aplican precios personalizados, precios de miembro, multiplicador de grupo y descuentos, igual que en el cargo al llamar. La página de precios muestra precios públicos; para estimar costes de tu propia cuenta, usa este endpoint.

**model** `string` *required*

Nombre del modelo; se admiten alias.

**resolution** `string`

Resolución o nivel; debe ser compatible con el modelo.

**size** `string`

Tamaño de la imagen.

**quality** `string`

Nivel de calidad.

**duration** `integer`

Duración en segundos, `1`–`3600`, para modelos que cobran por segundo.

**n** `integer`

Número de resultados, `1`–`100`.

Sin parámetros de especificación, el precio se calcula con la especificación predeterminada del modelo. En los modelos que cobran por segundo, si se omite `duration` solo se devuelve el precio por segundo.

Campos principales de la respuesta:

| Campo | Descripción |
| - | - |
| `unit` | Unidad de precio: `per_image`, `per_call`, `per_second`, `per_million_tokens` |
| `unit_price_usd` | Precio unitario (USD) |
| `total_usd` | Precio total de esta especificación (USD) |
| `unit_prices` | Se devuelve en modelos que cobran por token: precio por millón de tokens, por ejemplo `input`, `output` |
| `estimated` | `true` significa que el cargo final depende del uso real (por ejemplo, cobro por token); el precio es orientativo |
| `price_source` | Origen del precio: `membership` (precio de miembro), `user_override` (precio personalizado), `group` (precio de grupo), `default` (precio estándar) |

Hasta `60` consultas por minuto por API Key.

***

## Manejo de errores

| Estado HTTP | `error.code` | Descripción |
| - | - | - |
| 400 | `invalid_request_id` / `invalid_request`, etc. | Parámetro no válido; consulta `message` para más detalles |
| 400 | `time_range_too_large` | El periodo de registros supera 31 días |
| 401 / 402 / 403 | — | API Key no válida, caducada o desactivada |
| 404 | `log_not_found` | Registro no encontrado; puede que aún no se haya escrito |
| 404 | `model_not_found` / `no_valid_pricing` | El modelo no existe o no tiene precio |
| 429 | — | Demasiadas solicitudes |
| 500 / 503 | — | Servicio no disponible temporalmente, vuelve a intentarlo más tarde |


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