Aller au contenu

Exporter les logs

GET /api/open/v1/logs/export

Renvoie toutes les lignes de log correspondantes en une seule réponse, sans pagination. Les filtres sont les mêmes que ceux de Obtenir les logs du compte ; la réponse est un fichier CSV ou JSONL.

ParamètreEmplacementTypeRequisDéfautDescription
start_timestampqueryintegerNonVoir ci-dessousDate de début (incluse), secondes unix
end_timestampqueryintegerNonVoir ci-dessousDate de fin (incluse), secondes unix
typequeryintegerNon2Type de log : 2 pour les requêtes de consommation (facturées), 7 pour les requêtes ayant définitivement échoué (non facturées). Répétez le paramètre ou séparez par des virgules (?type=2,7) ; toute autre valeur renvoie 400
model_namequerystringNon—Nom de modèle exact ; répétez le paramètre pour plusieurs valeurs (?model_name=a&model_name=b) ou séparez par des virgules
key_namequerystringNon—Nom de Key exact ; répétez le paramètre pour plusieurs valeurs. Les virgules ne sont pas prises en charge car les noms peuvent en contenir
key_idqueryintegerNon—ID de Key, entier positif ; répétez le paramètre ou séparez par des virgules. Les ID d’autres utilisateurs ne renvoient aucune ligne
formatquerystringNoncsvFormat de sortie : csv ou jsonl ; toute autre valeur renvoie 400

Règles de plage temporelle :

  • Les deux omis : les 30 derniers jours.
  • Seulement start_timestamp : 30 jours vers l’avant, plafonné à l’heure actuelle.
  • Seulement end_timestamp : 30 jours vers l’arrière.
  • La plage peut couvrir au maximum 366 jours.

Chaque paramètre multi-valeurs accepte au maximum 50 valeurs ; au-delà, la réponse est 400 invalid_request. Les timestamps doivent être des entiers non négatifs, sinon 400. Cet endpoint n’accepte pas p ni page_size.

Fenêtre de terminal
curl "https://www.routeapi.ai/api/open/v1/logs/export?start_timestamp=1726408000&end_timestamp=1729000000&key_name=bot&type=2,7&format=csv" \
-H "Authorization: Bearer $ROUTEAPI_MANAGEMENT_KEY" \
-o logs.csv

Le corps de la réponse est le fichier exporté, et non le JSON habituel { success, message, data }. En-têtes :

En-têteDescription
X-Export-RowsNombre de lignes écrites dans le fichier
X-Export-Truncatedtrue lorsque plus de lignes correspondent que la limite par requête ; sinon false
Cache-ControlToujours no-store
Content-Dispositionattachment; filename="logs-<UTC yyyyMMdd-HHmmss>.csv" ou .jsonl

Chaque requête renvoie au plus 50 000 lignes. Lorsque davantage de lignes correspondent, les 50 000 plus récentes par ID de log sont renvoyées et X-Export-Truncated vaut true ; découpez la plage temporelle en fenêtres plus petites pour récupérer le reste. Contrairement à Obtenir les logs du compte, les lignes sont triées par ID de log décroissant.

format=csv renvoie Content-Type: text/csv; charset=utf-8 avec un BOM UTF-8, suivi d’une ligne d’en-tête et d’une ligne par log. L’ordre des colonnes est toujours le suivant :

id,created_at,type,key_id,key_name,model_name,prompt_tokens,completion_tokens,total_tokens,amount,request_id,key,use_time,is_stream,first_response_ms,cache_read_tokens,cache_creation_tokens,reasoning_effort,request_path,web_search_calls,audio_input_tokens,audio_output_tokens,billing_source
12345,1729000000,2,12,bot,gpt-4o,1200,300,1500,0.05,20261020120000123456789,sk-abcd**********wxyz,3,true,420,800,0,medium,/v1/chat/completions,0,0,0,wallet

Les champs sont identiques aux items de Obtenir les logs du compte ; created_at est en secondes unix. Les cellules commençant par =, +, @, une tabulation ou un retour chariot, ainsi que celles commençant par un - non numérique, sont préfixées par ' pour empêcher les tableurs de les interpréter comme des formules.

format=jsonl renvoie Content-Type: application/x-ndjson avec un objet JSON par ligne, en utilisant les mêmes champs que les items de Obtenir les logs du compte :

{"id":12345,"created_at":1729000000,"type":2,"key_id":12,"key_name":"bot","key":"sk-abcd**********wxyz","model_name":"gpt-4o","prompt_tokens":1200,"completion_tokens":300,"total_tokens":1500,"amount":0.05,"use_time":3,"is_stream":true,"first_response_ms":420,"cache_read_tokens":800,"cache_creation_tokens":0,"reasoning_effort":"medium","request_path":"/v1/chat/completions","web_search_calls":0,"audio_input_tokens":0,"audio_output_tokens":0,"billing_source":"wallet","request_id":"20261020120000123456789"}
HTTPcodeScénario
400invalid_requestUn timestamp est négatif ou non numérique, la plage dépasse 366 jours, start_timestamp est supérieur à end_timestamp, un paramètre multi-valeurs dépasse 50 valeurs, key_id n’est pas un entier positif, type n’est ni 2 ni 7, ou format n’est ni csv ni jsonl
429—Limite de requêtes par utilisateur dépassée (30/minute par défaut) ; le corps peut être vide

Les erreurs sont renvoyées sous la forme habituelle d’un corps JSON, pas d’un fichier. Pour les autres codes d’erreur communs, voir Erreurs de l’API de la plateforme.

  • Par défaut, seuls les logs de consommation (facturation) sont exportés. Ajoutez type=2,7 pour inclure aussi les requêtes ayant définitivement échoué (non facturées).
  • key_name est le nom de la Key au moment de la requête ; renommer une Key ne réécrit pas les enregistrements passés.
  • key est la valeur masquée ; elle est vide si la Key a depuis été définitivement supprimée.
  • Les nombres de tokens sont des comptes bruts, pas des millions. Les montants utilisent la devise d’affichage du site, voir Obtenir le solde.
  • Cet endpoint partage la limite de requêtes par utilisateur (30/minute par défaut) avec Logs du compte, Usage, Usage par modèle et Usage par Key. Voir Limites de débit.