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

# Journaux de requêtes et tarifs du compte

>  - Consulter le montant facturé pour un appel par ID de requête ou ID de tâche - Synchroniser page par page tous les enregistrements de consommation et d'erreur d'une période - Consulter le prix réellement appliqué à votre compte pour un modèle 

Utilisez votre API Key pour consulter le montant facturé pour chaque appel, ainsi que le prix réel que votre compte paie pour un modèle. Aucun des trois endpoints ne vérifie le solde : ils fonctionnent même avec un solde de 0.

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

```bash Synchroniser les journaux 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 Tarif du compte 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 Enregistrement unique 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 Synchroniser les journaux theme={null}
{
  "object": "list",
  "data": [
    {
      "id": "<ID de requête>",
      "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 Tarif du compte 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"
}
```

## Authentification

**Authorization** `string` *required*

Utilisez la même API Key que pour appeler les modèles, avec une authentification Bearer Token. Obtenez votre clé sur la [page de gestion des API Keys](https://apimart.ai/keys).

```
Authorization: Bearer YOUR_API_KEY
```

## Endpoints

```text theme={null}
GET /v1/logs/requests/{id}    Enregistrement unique par ID de requête
GET /v1/logs/requests         Synchroniser les journaux par période
GET /v1/pricing/model         Consulter le tarif du compte
```

Les montants sont en USD ; `cost_credits` et `credits` sont en crédits, soit USD × 10.

***

## Enregistrement unique par ID de requête

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

**id** `string` *required*

* Appels synchrones : valeur de l'en-tête de réponse `X-Oneapi-Request-Id`
* Tâches asynchrones : ID de tâche renvoyé lors de la soumission

> [!NOTE]
>
> Les journaux sont écrits de manière asynchrone et sont généralement disponibles quelques secondes après la fin de la requête. En cas de `404 log_not_found`, réessayez plus tard. Les tâches asynchrones se consultent par ID de tâche et n'ont un enregistrement qu'une fois terminées ou en échec.

La recherche couvre l'ensemble du compte auquel appartient l'API Key. `data` est un tableau : un même ID peut avoir à la fois un enregistrement de consommation et un enregistrement d'erreur. Champs principaux :

| Champ | Description |
| - | - |
| `id` | ID de requête ou ID de tâche |
| `type` | `consume` (consommation) ou `error` (erreur) |
| `created_at` | Heure de l'enregistrement, secondes Unix ; pour les tâches asynchrones, heure du règlement |
| `model_name` | Nom du modèle |
| `token_name` | Nom de l'API Key ayant effectué l'appel (nom au moment de l'enregistrement ; les noms peuvent se répéter). Pour distinguer précisément les clés, filtrez par `token_id` dans l'endpoint de synchronisation |
| `prompt_tokens` / `completion_tokens` | Tokens d'entrée / de sortie |
| `cost_usd` | Montant facturé pour cet enregistrement (USD) |
| `cost_credits` | Crédits facturés |

`cost_usd` est le montant final réglé : les enregistrements d'erreur valent toujours `0`, et les remboursements en cas d'échec sont effectués avant l'écriture de l'enregistrement. La somme des enregistrements dont `type` vaut `consume` correspond au total facturé pour vos appels.

***

## Synchroniser les journaux de requêtes

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

Récupérez page par page tous les enregistrements de votre compte sur une période — idéal pour un rapprochement planifié. Chaque enregistrement a les mêmes champs que la consultation unitaire.

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

Heure de début, horodatage Unix en secondes.

**end\_timestamp** `integer`

Heure de fin, horodatage Unix en secondes. Par défaut, l'heure actuelle. Les deux bornes sont incluses et la période ne doit pas dépasser 31 jours.

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

Type d'enregistrement : `all`, `consume` ou `error`.

**model** `string`

Filtrer par nom de modèle.

**token\_id** `integer`

Ne renvoie que les enregistrements de l'API Key indiquée. Copiez l'ID depuis la liste « Clés API » de la console (affiché sous le nom de la clé) ; l'ID reste inchangé après une rotation de la clé.

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

Taille de page, `1`–`1000`.

**cursor** `string`

Curseur de pagination. Renvoyez tel quel le `next_cursor` de la page précédente et gardez les autres paramètres inchangés pendant la pagination.

Dans la réponse, `has_more` indique s'il existe une page suivante, `next_cursor` est le curseur de la page suivante et `watermark` correspond à l'heure du serveur moins 300 secondes.

> [!TIP]
>
> **Méthode de synchronisation recommandée** : le `end_timestamp` de chaque exécution ne doit pas dépasser `watermark` ; commencez l'exécution suivante 10 minutes avant la fin de la précédente et dédupliquez par `(id, type)` ; dans une même fenêtre, paginez jusqu'à ce que `has_more` vaille `false`.

***

## Consulter le tarif du compte

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

Consultez le prix réel payé pour un modèle par le compte auquel appartient l'API Key actuelle. Les tarifs personnalisés, tarifs membres, coefficients de groupe et remises sont tous appliqués, comme lors de la facturation à l'appel. La page des tarifs affiche les prix publics ; pour estimer les coûts de votre propre compte, utilisez cet endpoint.

**model** `string` *required*

Nom du modèle ; les alias sont acceptés.

**resolution** `string`

Résolution ou palier ; doit être pris en charge par le modèle.

**size** `string`

Taille de l'image.

**quality** `string`

Palier de qualité.

**duration** `integer`

Durée en secondes, `1`–`3600`, pour les modèles facturés à la seconde.

**n** `integer`

Nombre de sorties, `1`–`100`.

Sans paramètre de spécification, le prix est calculé selon la spécification par défaut du modèle. Pour les modèles facturés à la seconde, seul le prix par seconde est renvoyé si `duration` est omis.

Principaux champs de réponse :

| Champ | Description |
| - | - |
| `unit` | Unité de prix : `per_image`, `per_call`, `per_second`, `per_million_tokens` |
| `unit_price_usd` | Prix unitaire (USD) |
| `total_usd` | Prix total pour cette spécification (USD) |
| `unit_prices` | Renvoyé pour les modèles facturés au token : prix par million de tokens, par exemple `input`, `output` |
| `estimated` | `true` signifie que la facturation finale dépend de l'usage réel (par exemple facturation au token) ; le prix est indicatif |
| `price_source` | Source du prix : `membership` (tarif membre), `user_override` (tarif personnalisé), `group` (tarif de groupe), `default` (tarif standard) |

Jusqu'à `60` requêtes par minute et par API Key.

***

## Gestion des erreurs

| Statut HTTP | `error.code` | Description |
| - | - | - |
| 400 | `invalid_request_id` / `invalid_request`, etc. | Paramètre invalide, voir `message` pour les détails |
| 400 | `time_range_too_large` | La période des journaux dépasse 31 jours |
| 401 / 402 / 403 | — | API Key invalide, expirée ou désactivée |
| 404 | `log_not_found` | Enregistrement introuvable ; il n'a peut-être pas encore été écrit |
| 404 | `model_not_found` / `no_valid_pricing` | Le modèle n'existe pas ou n'a pas de tarif |
| 429 | — | Trop de requêtes |
| 500 / 503 | — | Service temporairement indisponible, veuillez réessayer plus tard |


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