SUB&SUB · Docs
Langue
Thème

Référence de l'API

SUB&SUB expose un relais multi-fournisseurs sur https://api.subnsub.com/v1. Les clients OpenAI appellent /v1/chat/completions ; les clients Anthropic appellent /v1/messages. La même clé sk-cf-... route les deux — choisis le modèle dans le corps de la requête et le relais choisit l'upstream.

Disponibilité du service

Comptes existants uniquement L’accès à l’API est actuellement limité aux comptes créés avant le 8 juin 2026 (heure de Pékin). Les nouvelles inscriptions peuvent utiliser le compte partagé et SUB&SUB Tools, mais ne peuvent ni ouvrir la console API, ni créer de clé, ni ajouter du crédit API, ni appeler le relais. Cette section sera mise à jour lors de la réouverture de l’API.

Démarrage rapide

Pour un compte existant autorisé à utiliser l’API, trois éléments sont nécessaires :

  1. URL de base : https://api.subnsub.com/v1 (clients OpenAI) ou https://api.subnsub.com (clients Anthropic — le SDK ajoute lui-même /v1/messages)
  2. Clé API : sk-cf-... émise depuis la console
  3. Model : l'un des 16 modèles pris en charge — par ex. gpt-5.4-mini ou claude-sonnet-5

Authentification

Chaque requête doit porter un en-tête Authorization: Bearer sk-cf-.... Les clés sont émises depuis la console et stockées sous forme de hachages SHA-256 — une fois que tu quittes l'écran de création, le texte clair est perdu pour toujours, alors enregistre-le immédiatement.

Astuce Génère une clé par intégration (chatbot, plugin d'IDE, traitement par lots). Révoquer une clé fuitée dans la console prend effet en quelques secondes.

Endpoints

La surface publique stable est décrite ci-dessous et dans le document OpenAPI 3.1 lisible par machine. Les champs non répertoriés peuvent être transmis au fournisseur, mais ne font pas automatiquement partie du contrat de compatibilité de SUB&SUB.

POST /v1/chat/completions

POST/v1/chat/completions

Envoie une requête de complétion de chat. Le format de la requête correspond à l'API Chat Completions d'OpenAI — les SDK OpenAI fonctionnent sans modification.

ParamètreTypeDescription
modelstringL'un des ID de modèles vérifiés.
messagesarrayHistorique de la conversation. Chaque élément : {role, content} avec rolesystem / user / assistant.
streambooleanSi true, la réponse est envoyée sous forme de chunks SSE. Voir Streaming.
stream_optionsobjectOptionnel. Le relais force toujours {include_usage: true} vers l'upstream pour que le chunk final porte le bloc d'usage des tokens — le surcharger n'a aucun effet.
max_tokensintegerLimite la longueur de la complétion. Par défaut, le maximum du modèle.
temperaturenumber0 – 2. Plus élevé = plus aléatoire.

POST /v1/responses

POST/v1/responses

OpenAI Responses API — la nouvelle forme de demande OpenAI (client.responses.create(...)). Fonctionne avec tous les modèles de catalogue : gpt-* nativement, claude-* via le même pont de compatibilité que le chat/les complétions. L'utilisation est mesurée de manière identique : jetons d'entrée/sortie au tarif de niveau du modèle.

ParamètreTypeDescription
modelstringTout modèle de catalogue ID.
inputstring | arrayL'invite - une chaîne simple ou la liste d'éléments structurés définie par Responses API.
max_output_tokensintegerLimite la longueur de réponse (raisonnement + sortie visible combinés).
reasoningobject{"effort": "..."} — les cinq mêmes valeurs que reasoning_effort.
streambooleanSi true, diffuse la séquence de réponses standard SSE : response.created, response.output_text.delta, …, response.completed.
backgroundbooleanNon pris en charge. background: true renvoie 400 unsupported_background_mode — le relais ne sert qu'à des courses synchrones.
À noter Le suffixe de recherche Web :online n'a aucun effet sur ce point de terminaison : le suffixe est supprimé mais aucun contexte de recherche n'est injecté (les requêtes sont extraites de messages, que les requêtes Responses ne transportent pas). Utilisez /v1/chat/completions ou /v1/messages pour recherche Web.

Exemple Responses exécutable :

curl https://api.subnsub.com/v1/responses \
  -H "Authorization: Bearer sk-cf-xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini",
    "input": "Explain exponential backoff in two sentences."
  }'

POST /v1/messages

POST/v1/messages

Endpoint Anthropic natif pour les modèles claude-* — le SDK Anthropic (anthropic-sdk-python, @anthropic-ai/sdk, claude-code) fonctionne sans modification sur ce chemin. Pointe ton URL de base vers https://api.subnsub.com et authentifie-toi via l'en-tête x-api-key (la forme Authorization-Bearer fonctionne aussi, si ton client la préfère).

ParamètreTypeDescription
modelstringUn ID de modèle claude-* (voir Modèles disponibles). Passer un modèle OpenAI ici renvoie 400 invalid_request_error.
max_tokensintegerRequis par Anthropic — limite la longueur de la réponse de l'assistant.
messagesarrayHistorique de la conversation, format Anthropic : {role, content} avec roleuser / assistant.
streambooleanSi true, renvoie la séquence d'événements SSE standard d'Anthropic : message_start, content_block_delta, message_delta, message_stop.
thinkingobjectTransmis textuellement à Anthropic. Utilisez {"type":"adaptive"} là où il est pris en charge ; Fable 5 utilise toujours la pensée adaptative même lorsque ce champ est omis. Il n’existe pas d’ID de modèle synthétique -thinking.
cache_controlobjectLe prompt-caching est pris en charge. Les tokens d'écriture de cache sont facturés à 1.25× et les tokens de lecture de cache à 0.10× du tarif d'entrée du tier.
À noter Les demandes Claude sont traitées directement par les comptes officiels Anthropic. Utilisez les identifiants de modèle officiels exacts répertoriés ci-dessous.

Exemple Anthropic Messages exécutable :

curl https://api.subnsub.com/v1/messages \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "Hello"}]
  }'

POST /v1/messages/count_tokens

POST/v1/messages/count_tokens

Comptez un prompt au format Anthropic avant de l’envoyer. Utilisez les mêmes champs x-api-key, anthropic-version, model, system, messages et tools que pour /v1/messages. Ce point de terminaison n’est pas facturé. Le suffixe :online est retiré, mais aucun résultat de recherche n’est récupéré ni compté.

curl https://api.subnsub.com/v1/messages/count_tokens \
  -H "x-api-key: sk-cf-xxxxxxxxxxxx" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "Count this prompt."}]
  }'

GET /v1/models

GET/v1/models

Listez les modèles que vous pouvez réellement utiliser. Le relais vérifie l'état des deux familles en amont et renvoie les 16 identifiants publics vérifiés - la même liste blanche que les points de terminaison POST appliquent, de sorte que la découverte n'annonce jamais un modèle qui serait 400. Si le catalogue en amont est inaccessible, le point de terminaison renvoie 502 models_unreachable plutôt qu'une liste vide trompeuse.

# sample response (truncated)
{
  "object": "list",
  "data": [
    { "id": "gpt-5.4-mini",      "type": "model", ... },
    { "id": "gpt-5.4",           "type": "model", ... },
    { "id": "claude-sonnet-5",     "type": "model", ... },
    { "id": "claude-fable-5",      "type": "model", ... },
    ...
  ]
}

Contrat de compatibilité

Compatible OpenAI ne signifie pas que tous les champs de tous les modèles upstream sont garantis sur chaque route. Trois niveaux de prise en charge s’appliquent :

StatutDétail
Documenté et stableGénération de texte sur les quatre points de terminaison ci-dessus ; réponses synchrones et en streaming ; contrôles de raisonnement documentés ; cache de prompts Anthropic ; :online sur Chat Completions et Messages ; authentification, mesure et formats d’erreur documentés.
Transmission, selon le modèleAppels d’outils/fonctions, outils stricts, sortie structurée / JSON Schema, contrôles d’échantillonnage, séquences d’arrêt, contenu multipartie (images ou documents compris) et limites de contexte/sortie. L’edge transmet ces champs sans validation locale, mais la prise en charge et la forme exacte de la réponse varient selon le modèle et le protocole. Testez précisément votre modèle et votre payload avant la production ; aucune normalisation entre fournisseurs n’est garantie.
Non proposéExécutions Responses en arrière-plan ; :online sur Responses ; API OpenAI de génération d’images, audio, Realtime, Batch, Files, Embeddings et Moderation ; alias Claude synthétiques en -thinking ; et effort de raisonnement OpenAI minimal.
Astuce Considérez openapi.json et cette page comme le contrat pris en charge. Un champ accepté aujourd’hui par un fournisseur peut y être retiré sans devenir une garantie permanente de SUB&SUB.

Modèles disponibles

Deux familles en amont. Les 7 modèles OpenAI mènent à des comptes partagés de niveau ChatGPT ; les 9 modèles Claude sont desservis par des comptes officiels Anthropic. Les tarifs par jeton dépendent du niveau (voir Pricing) — la même clé fonctionne pour les deux.

OpenAI

ID du modèleFamilleTierNotes
gpt-5.4-mini GPT-5.4Mini Rapide & économique. Défaut recommandé pour le chat & le coding.
gpt-5.4 GPT-5.4StandardGPT-5.4 pleine taille — plus lent, raisonnement plus solide.
gpt-5.4-2026-03-05GPT-5.4StandardInstantané daté de gpt-5.4.
gpt-5.5 GPT-5.5Premium Nouveau modèle phare.
gpt-5.6-luna GPT-5.6Luna Léger GPT-5.6 — entre Mini et Standard.
gpt-5.6-terra GPT-5.6StandardTaille moyenne GPT-5.6 — même tarif que gpt-5.4.
gpt-5.6-sol GPT-5.6Premium Top GPT-5.6 — même tarif que gpt-5.5.

Anthropic

ID du modèleFamilleTierNotes
claude-fable-5 Fable 5 Fable Le modèle le plus performant de Anthropic largement diffusé ; la pensée adaptative est toujours active.
claude-haiku-4-5-20251001 Haiku 4.5 Mini Le plus petit Claude — même tarif par token que gpt-5.4-mini.
claude-sonnet-4-5-20250929 Sonnet 4.5 StandardClaude de milieu de gamme — même tarif par token que gpt-5.4.
claude-sonnet-4-6 Sonnet 4.6 StandardNouveau réglage de Sonnet — tier Standard, même tarif que sonnet-4.5.
claude-sonnet-5 Sonnet 5 Sonnet 5 IntroDernier Sonnet ; le prix de lancement s’applique jusqu’au 31 août 2026.
claude-opus-4-5-20251101 Opus 4.5 Ultra Claude de pointe. Facturé au tarif public d'Anthropic — sans marge (voir Tarifs).
claude-opus-4-6 Opus 4.6 Ultra Nouveau réglage d'Opus.
claude-opus-4-7 Opus 4.7 Ultra Instantané d'Opus précédent.
claude-opus-4-8 Opus 4.8 Ultra Dernier instantané d'Opus.
À noter Le catalogue Claude utilise les identifiants de modèles officiels Anthropic. La mise en cache des invites est prise en charge : le cache écrit la facture à 1,25 × et lit à 0,10 × le débit d'entrée du niveau (voir Pricing).
Fable refus Fable 5 classificateurs de sécurité peuvent renvoyer HTTP 200 avec stop_reason: "refusal" et un tableau de contenu vide. Les clients doivent se connecter au statut stop_reason, et non au statut HTTP uniquement, et réessayer la demande avec claude-opus-4-8. Grâce aux points de terminaison du protocole OpenAI, le même résultat est exposé sous la forme finish_reason: "content_filter" (discussion/achèvements) ou status: "incomplete" avec incomplete_details.reason: "content_filter" (réponses). Les refus rapides ne sont pas déduits de votre solde ; un refus à mi-parcours après une production partielle est normalement facturé.
Non disponible Les identifiants OpenAI retirés (gpt-5.2* et gpt-5.3-codex*), l'alias gpt-5.6 nu (utilisez les variantes nommées ci-dessus), les variantes OpenAI Pro/image/audio/realtime, les identifiants de notation par points (par exemple claude-sonnet-4.5) et les identifiants de modèle synthétiques -thinking ne sont pas disponibles. Utilisez les identifiants exacts ci-dessus et le champ thinking natif de Anthropic.

Effort de raisonnement

Chaque modèle OpenAI ci-dessus est un modèle de raisonnement — le backend peut dépenser plus ou moins de jetons de « réflexion » avant d'émettre une sortie visible. Définissez reasoning_effort sur le corps de la demande OpenAI /v1/chat/completions (ou reasoning: {"effort": ...} sur /v1/responses) pour contrôler le budget. Pour Claude, utilisez les champs Anthropic-natifs thinking et output_config.effort — voir la section /v1/messages. Les modèles OpenAI acceptent les mêmes cinq valeurs d'effort :

ValeurComportement
none Aucune réflexion — directement à la réponse. Le moins cher et le plus rapide.
low Une courte passe de raisonnement.
medium Défaut si tu ne passes pas le champ. Équilibré.
high Raisonnement plus approfondi. Recommandé pour le coding non trivial / les problèmes à plusieurs étapes.
xhigh Effort maximal. Le plus lent et le plus coûteux ; réserve-le aux analyses difficiles où tu en as vraiment besoin.
# Two equivalent forms — pick whichever your SDK supports
{
  "model": "gpt-5.4-mini",
  "reasoning_effort": "high",
  "messages": [ ... ]
}

{
  "model": "gpt-5.5",
  "reasoning": { "effort": "xhigh" },
  "messages": [ ... ]
}
Coût Les tokens de réflexion comptent comme des tokens de sortie pour la facturation — plus d'effort = plus de tokens de sortie = une facture plus élevée sur le même prompt. Le tarif par token ne change pas.
À noter Le protocole OpenAI définit aussi 'minimal', mais les modèles de ce relais le rejettent : « 'minimal' is not supported with this model ». Tiens-t'en aux cinq valeurs ci-dessus.

Streaming

Définis "stream": true pour recevoir des Server-Sent Events. Le chunk final porte un bloc usage (nous forçons stream_options.include_usage en upstream pour que les comptes de tokens soient toujours émis), puis un data: [DONE] littéral ferme le flux.

# Streaming format (line by line)
data: {"id":"resp_...","choices":[{"delta":{"content":"Hi"}}]}

data: {"id":"resp_...","choices":[{"delta":{"content":"!"}}]}

data: {"id":"resp_...","choices":[],"usage":{"prompt_tokens":18,"completion_tokens":11,"total_tokens":29}}

data: [DONE]

Exemple Python de streaming exécutable :

from openai import OpenAI

client = OpenAI(
    api_key="sk-cf-xxxxxxxxxxxx",
    base_url="https://api.subnsub.com/v1",
)

stream = client.chat.completions.create(
    model="gpt-5.4-mini",
    messages=[{"role": "user", "content": "Hello"}],
    stream=True,
)
for chunk in stream:
    text = chunk.choices[0].delta.content if chunk.choices else None
    if text:
        print(text, end="", flush=True)

Ajoute :online à n'importe quel ID de modèle pris en charge par l'endpoint et le relais lancera une recherche web avant de transmettre au modèle, en préfixant la conversation avec les résultats pour que la réponse s'appuie sur des données fraîches. Le suffixe fonctionne sur /v1/chat/completions et /v1/messages (ce dernier exige toujours une base claude-*) ; aucun champ de requête spécifique à la recherche n'est requis.

# Same call as before — just :online on the model
curl https://api.subnsub.com/v1/chat/completions \
  -H "Authorization: Bearer sk-cf-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.4-mini:online",
    "messages": [
      {"role": "user", "content": "What did Anthropic ship this week?"}
    ]
  }'

Comment ça marche : le relais retire :online, prend le message utilisateur le plus récent comme requête (limité à 400 caractères), appelle Tavily pour un maximum de 3 résultats avec le texte de page extrait lorsqu'il est disponible, plus un résumé optionnel généré par Tavily, puis les préfixe à ce même tour utilisateur sous forme de bloc <search_results> clairement délimité avant d'envoyer la requête à l'upstream. L'appel de recherche a un délai d'expiration de 8 secondes. Les résultats sont délibérément injectés dans le rôle utilisateur — jamais dans le prompt système — afin que des extraits non fiables ne puissent pas être élevés au rang d'instructions de priorité système.

Le bloc <search_results> ressemble à ceci. Il est précédé d'une instruction sur une ligne indiquant au modèle de traiter le bloc comme des données externes non fiables et de citer les éléments numérotés en ligne :

<search_results query="What did Anthropic ship this week?" retrieved="2026-05-21">
Summary: <short LLM-generated synthesis of the result set>

[1] Anthropic launches Opus 4.8
URL: https://www.anthropic.com/news/opus-4-8
<extracted page text, or short snippet if extraction failed — up to ~2000 chars>

[2] ...
</search_results>
ComportementDétail
CoûtAucun supplément aujourd'hui — tu paies le tarif par token normal du modèle ; le relais absorbe l'appel de recherche. Le bloc <search_results> injecté compte bien comme des tokens d'entrée, alors attends-toi à une facture de tokens de prompt plus élevée que pour la même question sans :online.
Mode d'échecSouple. Si Tavily expire ou échoue, la requête continue vers le modèle sans contexte de recherche (tu obtiens quand même une réponse, simplement non étayée). Le seul échec dur est 503 search_unavailable lorsque la recherche n'est pas du tout configurée sur le relais.
count_tokens/v1/messages/count_tokens retire le suffixe mais n'appelle jamais Tavily — le compte reflète ton prompt original, pas le prompt augmenté.
Multi-toursSeul le dernier tour utilisateur est interrogé & augmenté ; les tours précédents restent intacts. Pour rechercher à nouveau, envoie un nouveau message utilisateur avec :online toujours sur le modèle.

Quand utiliser :online

Le relais effectue un seul appel Tavily par requête et injecte les résultats — ce n'est pas une boucle de recherche agentique. Le modèle ne décide pas de relancer une recherche en fonction de ce qu'il voit, comme le font Perplexity Sonar ou l'outil de navigation de ChatGPT. Planifie en tenant compte de cette limitation :

Bon usageMauvais usage
Faits sensibles au temps (actualités, prix, numéros de version, dates de sortie)Code privé ou collé qui n'est pas sur le web public — ajoute du bruit au prompt sans étayage
Localiser une doc ou une annonce officielleMaths, raisonnement, traduction, écriture créative — rien à étayer
Tout ce que tu vérifierais autrement avec une recherche GoogleConnaissances stables déjà présentes dans les données d'entraînement (« qu'est-ce qu'un arbre binaire »)

Formule le dernier message utilisateur comme une requête de recherche autonome. La recherche s'effectue sur le texte littéral de ton tour utilisateur le plus récent (limité à 400 caractères), donc des relances conversationnelles comme « et qu'en est-il de la dernière version ? » deviennent des requêtes inutiles sans contexte. Dans un chat multi-tours, redonne le sujet quand tu ajoutes :online — par ex. « dernière version du SDK Python Anthropic » plutôt que « la dernière ».

Pour les questions nécessitant une synthèse en plusieurs étapes (comparaison, recherche approfondie), décompose-les en plusieurs tours et ajoute :online à chacun. Le modèle lira les résultats frais de chaque tour ; tu orientes manuellement la requête suivante. Note que le bloc <search_results> injecté n'est envoyé qu'à l'upstream — il n'est pas renvoyé à ton client et n'est pas conservé pour la requête suivante, donc si un tour ultérieur dépend de détails de sources antérieures, demande au modèle de les résumer dans sa réponse visible. Le mode recherche en une seule fois n'est pas pris en charge.

Astuce Combine avec un effort de raisonnement élevé (reasoning_effort: "high") pour que le modèle pèse réellement les sources retournées plutôt que de se reposer sur le premier résultat. L'instruction injectée demande au modèle de citer les sources numérotées sous la forme [1], [2] en ligne, donc la sortie portera généralement de telles citations — bien que le modèle ne soit pas strictement tenu de respecter ce format.

Erreurs

L'enveloppe dépend de l'endpoint que tu as appelé — le relais renvoie les erreurs dans le protocole correspondant au SDK de l'appelant, et les erreurs upstream sont transmises telles quelles.

Chemins OpenAI (/v1/chat/completions, /v1/responses, /v1/models) — enveloppe OpenAI :

{ "error": { "message": "...", "type": "...", "code": "..." } }

Chemins Anthropic (/v1/messages, /v1/messages/count_tokens) — enveloppe Anthropic :

{ "type": "error", "error": { "type": "...", "message": "..." } }

L'enveloppe Anthropic utilise un format différent — pas de champ code, et le discriminateur type: "error" est au niveau racine (avec l'error.type interne donnant la catégorie, par ex. authentication_error, invalid_request_error, permission_error, api_error). Les SDK Anthropic analysent déjà ce format ; les gestionnaires d'erreurs du SDK OpenAI standard ne le feront pas, alors appelle /v1/messages avec un SDK Anthropic (ou fais du HTTP brut).

Les codes de statut sont les codes HTTP canoniques dans les deux protocoles :

StatutOpenAI code / Anthropic error.typeSignification
401invalid_api_key / authentication_errorClé sk-cf-... manquante ou inconnue.
402insufficient_balance / permission_errorLe solde du compte est négatif. Recharge dans l'onglet facturation de la console.
403key_revoked / permission_errorLa clé a été révoquée.
403account_closed / permission_errorLe compte n'est pas activé pour l'accès API : les inscriptions après la date limite de service du 08/06/2026 n'incluent pas le service API.
400model_not_available / invalid_request_errorLe model que tu as envoyé n'est pas dans le catalogue vérifié, ou est incorrect pour l'endpoint (par ex. un modèle OpenAI sur /v1/messages) — vérifie Modèles disponibles.
400unsupported_background_mode / —background: true sur /v1/responses — le relais ne dessert que les courses synchrones. Enveloppe OpenAI uniquement.
429rate_limit_exceeded / rate_limit_errorLa capacité upstream partagée est temporairement limitée. Respectez retry-after lorsqu’il est présent, puis réessayez avec un backoff exponentiel et du jitter.
503Aucun compte upstream ne sert actuellement la requête — généralement une fenêtre de limitation de débit transitoire à l'échelle du pool. Réessaie après un court backoff.
503search_unavailable / api_errorTu as utilisé :online mais la recherche web n'est pas configurée sur ce relais. Voir Recherche web.
502upstream_unreachable / api_errorLe relais n'a pas pu atteindre le backend. Réessaie après un court délai.
500server_error / api_errorLe relais a échoué avant ou après le contact avec l’upstream. Ne réessayez que si l’opération peut être répétée sans risque ; sinon, consultez d’abord l’historique d’utilisation.

Nouvelles tentatives et fiabilité

Limitez le nombre de tentatives. Le relais repose sur une capacité upstream partagée et les requêtes de génération ne sont pas idempotentes.

Tarifs & facturation

Paiement à l'usage, facturé par token en microdollars (1 micro = $0.000001 = 1/10,000 de cent) pour que les requêtes inférieures au cent soient suivies précisément. Les tarifs sont par 1M tokens, par tier — voir le tableau des modèles pour savoir à quel tier chaque modèle correspond.

TierModèlesEntrée / 1MSortie / 1M
Mini gpt-5.4-mini, claude-haiku-4-5-20251001 $0.20$1.60
Luna gpt-5.6-luna $0.30$2.40
Standardgpt-5.4, gpt-5.4-2026-03-05, gpt-5.6-terra, claude-sonnet-4-5-20250929, claude-sonnet-4-6$0.75$6.00
Premium gpt-5.5, gpt-5.6-sol $1.10$8.80
Sonnet 5 Introclaude-sonnet-5 $2.00$10.00
Ultra claude-opus-4-5-20251101, claude-opus-4-6, claude-opus-4-7, claude-opus-4-8$5.00$25.00
Fable claude-fable-5 $10.00$50.00

Les tarifs Fable et Ultra correspondent aux prix catalogue publiés par Anthropic. Sonnet 5 utilise le tarif de lancement de 2 $/10 $ de Anthropic jusqu'au 31 août 2026 ; son prix standard publié après cette date est de 3 $/15 $. Les autres niveaux fonctionnent en dessous des tarifs en amont grâce au support d'abonnement mutualisé.

Les jetons de raisonnement (lorsque vous définissez reasoning_effort sur OpenAI, ou le champ thinking natif de Anthropic sur Claude) comptent comme des jetons output au taux de niveau du modèle - il n'y a pas de supplément distinct pour un effort élevé, mais une requête réfléchie peut facilement émettre 10 à 50 fois plus de jetons de sortie qu'un sans effort, donc le billet d'un dollar évolue avec lui.

Le prompt-caching Anthropic est facturé comme une ligne distincte : écritures de cache à 1.25× et lectures de cache à 0.10× du tarif d'entrée du tier. Ainsi, un cache hit haiku-4.5 coûte 0.20 × 0.10 = $0.02 per 1M tokens, et un cache hit sonnet-4.5 coûte 0.75 × 0.10 = $0.075 per 1M tokens. Les tokens de cache sont détaillés dans le relevé de facturation de chaque requête — la console affiche le détail.

Le solde est déduit en temps réel à mesure que chaque requête se termine — pour les requêtes en streaming, le règlement s'exécute après l'arrivée du chunk [DONE]. Consulte ton solde en direct et les règlements par requête sur /console#billing.

Recharge La console prend en charge Stripe Checkout — carte, Link, Alipay, WeChat Pay. Les crédits n'expirent jamais.

Limites de débit

Pas de limites de débit par clé aujourd'hui. La capacité upstream partagée et le throttling côté fournisseur s'appliquent toujours ; si tu les atteins, le relais renvoie 429 avec un en-tête retry-after. Les limites RPM / TPM par clé sont prévues.

État et assistance

Documentation révisée pour la dernière fois le 14 juillet 2026.