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

# Logs de requisições e preço da conta

>  - Consultar a cobrança de uma única chamada por ID de requisição ou ID de tarefa - Sincronizar, página a página, todos os registros de consumo e de erro de um período - Consultar o preço realmente aplicado à sua conta para um modelo 

Use sua API Key para consultar a cobrança de cada chamada e o preço real que sua conta paga por um modelo. Nenhum dos três endpoints verifica o saldo; eles funcionam mesmo com saldo 0.

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

```bash Sincronizar logs 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 Preço da conta 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 logs theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "<ID da requisição>",
      "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 Preço da conta 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"
}
```

## Autenticação

**Authorization** `string` *required*

Use a mesma API Key usada para chamar os modelos, com autenticação Bearer Token. Obtenha sua chave na [página de gerenciamento 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 requisição
GET /v1/logs/requests         Sincronizar logs por período
GET /v1/pricing/model         Consultar o preço da conta
```

Os valores estão em USD; `cost_credits` e `credits` estão em créditos, equivalentes a USD × 10.

***

## Registro único por ID de requisição

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

**id** `string` *required*

* Chamadas síncronas: valor do cabeçalho de resposta `X-Oneapi-Request-Id`
* Tarefas assíncronas: ID da tarefa retornado no envio

> [!NOTE]
>
> Os logs são gravados de forma assíncrona e normalmente ficam disponíveis alguns segundos após o fim da requisição. Se receber `404 log_not_found`, tente novamente mais tarde. Tarefas assíncronas devem ser consultadas pelo ID da tarefa e só têm registro depois de concluídas ou com falha.

A consulta abrange toda a conta à qual a API Key pertence. `data` é um array; o mesmo ID pode ter um registro de consumo e um de erro. Campos principais:

| Campo | Descrição |
| - | - |
| `id` | ID da requisição ou ID da tarefa |
| `type` | `consume` (consumo) ou `error` (erro) |
| `created_at` | Horário do registro, segundos Unix; para tarefas assíncronas, o horário da liquidação |
| `model_name` | Nome do modelo |
| `token_name` | Nome da API Key que fez a chamada (o nome no momento do registro; nomes podem se repetir). Para distinguir as chaves com precisão, filtre por `token_id` no endpoint de sincronização |
| `prompt_tokens` / `completion_tokens` | Tokens de entrada / saída |
| `cost_usd` | Valor cobrado neste registro (USD) |
| `cost_credits` | Créditos cobrados |

`cost_usd` é o valor final liquidado: registros de erro são sempre `0`, e os reembolsos por falha são concluídos antes da gravação do registro. A soma dos registros com `type` igual a `consume` é o total cobrado pelas suas chamadas.

***

## Sincronizar logs de requisições

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

Busque, página a página, todos os registros da sua conta em um período — ideal para conciliação agendada. Os campos de cada registro são os mesmos da consulta de registro único.

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

Horário inicial, timestamp Unix em segundos.

**end\_timestamp** `integer`

Horário final, timestamp Unix em segundos. O padrão é o horário atual. Ambos os limites são inclusivos, e o período não pode exceder 31 dias.

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

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

**model** `string`

Filtrar por nome do modelo.

**token\_id** `integer`

Retorna apenas os registros da API Key indicada. Copie o ID na lista "Chaves de API" do console (exibido abaixo do nome da chave); o ID não muda após a rotação da chave.

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

Tamanho da página, `1`–`1000`.

**cursor** `string`

Cursor de paginação. Envie de volta o `next_cursor` da página anterior sem alterações e mantenha os demais parâmetros iguais durante a paginação.

Na resposta, `has_more` indica se há outra página, `next_cursor` é o cursor da próxima página e `watermark` é o horário do servidor menos 300 segundos.

> [!TIP]
>
> **Forma recomendada de sincronizar**: o `end_timestamp` de cada execução não deve passar de `watermark`; comece a próxima execução 10 minutos antes do fim da anterior e remova duplicatas por `(id, type)`; dentro de uma mesma janela, pagine até `has_more` ser `false`.

***

## Consultar o preço da conta

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

Consulte o preço real que a conta da API Key atual paga por um modelo. Preços personalizados, preços de membro, multiplicador de grupo e descontos já estão aplicados, igual à cobrança na chamada. A página de preços mostra os preços públicos; para estimar custos da sua própria conta, use este endpoint.

**model** `string` *required*

Nome do modelo; aliases são aceitos.

**resolution** `string`

Resolução ou nível; deve ser suportado pelo modelo.

**size** `string`

Tamanho da imagem.

**quality** `string`

Nível de qualidade.

**duration** `integer`

Duração em segundos, `1`–`3600`, para modelos cobrados por segundo.

**n** `integer`

Quantidade de saídas, `1`–`100`.

Sem parâmetros de especificação, o preço é calculado com a especificação padrão do modelo. Para modelos cobrados por segundo, sem `duration` é retornado apenas o preço por segundo.

Principais campos da resposta:

| Campo | Descrição |
| - | - |
| `unit` | Unidade de preço: `per_image`, `per_call`, `per_second`, `per_million_tokens` |
| `unit_price_usd` | Preço unitário (USD) |
| `total_usd` | Preço total desta especificação (USD) |
| `unit_prices` | Retornado para modelos cobrados por token: preço por milhão de tokens, por exemplo `input`, `output` |
| `estimated` | `true` indica que a cobrança final depende do uso real (por exemplo, cobrança por token); o preço é apenas uma referência |
| `price_source` | Origem do preço: `membership` (preço de membro), `user_override` (preço personalizado), `group` (preço do grupo), `default` (preço padrão) |

Até `60` consultas por minuto por API Key.

***

## Tratamento de erros

| Status HTTP | `error.code` | Descrição |
| - | - | - |
| 400 | `invalid_request_id` / `invalid_request` etc. | Parâmetro inválido; veja detalhes em `message` |
| 400 | `time_range_too_large` | O período dos logs excede 31 dias |
| 401 / 402 / 403 | — | API Key inválida, expirada ou desativada |
| 404 | `log_not_found` | Registro de log não encontrado; talvez ainda não tenha sido gravado |
| 404 | `model_not_found` / `no_valid_pricing` | O modelo não existe ou não tem preço |
| 429 | — | Requisições em excesso |
| 500 / 503 | — | Serviço temporariamente indisponível, tente novamente mais tarde |


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