GUIDES DE L’API

Erreurs de l’API DeepSeek : diagnostic et résolution

Rechercher les erreurs d'API deepseekabo, les dépassements de temps de connexion et les problèmes avec les clients de coding. Commencez par une petite requête, puis suivez les étapes de l'erreur retournée.

Sur cette pageCommencer iciUtiliser des données de connexion correctesEnvoyer une demande de diagnosticRéférence d'état et de notificationCorriger l'authentification et l'accès au modèleCorriger les erreurs de contingent, de solde et de parallèleCorriger les demandes non soutenues et les grands contextesCorriger 502 Bad GatewayCorriger 504 Gateway TimeoutCorrection des dépassements de temps de connexion, erreurs DNS et TLSListe de vérification Claude Code CLIListe de vérification du CodexListe de vérification OpenCodeUne réponse s'efface au milieuRépéter sans boucle continuePréparer un rapport d'assistance utile
Paramètres de connexion · Utilisez les clés, l'URL de base et l'ID de modèle de votre compte. URL de base : disponible dans votre compte DeepSeek ABO une fois l’accès activé. api.example.invalid est une adresse d’exemple.

api.example.invalid est une adresse d’exemple. Utilisez l’URL de base indiquée dans les paramètres de connexion de votre compte DeepSeek ABO.

Commencer ici#

  1. Noter la version client, le modèle sélectionné, le chemin de demande, le statut HTTP, le message d'erreur et l'heure avec fuseau horaire. Noter un identifiant de requête retourné si disponible; il n'est pas garanti.
  2. Vérifier Votre abonnement, Consommation et le mode de facturation de la clé sous Clés API. La connexion au site Web et la clé API d'inférence sont des données d'accès différentes.
  3. Testez la requête minimale ci-dessous avec la même clé et le même réseau que le client défectueux. Un appel de chat-complications réussi ne confirme ni messages, ni réponses, ni outils client avancés.
  4. Lire l'état et le message en commun. Les erreurs peuvent être emballées différemment; un texte utile peut être inclus dans error.message, error.code, detailou dans une simple réponse proxy HTML.

Supprimer les clés, les en-têtes d'authentification, les cookies, le code privé et les raccourcis avant de les partager. Ne pas envoyer une sortie complète de l'environnement et ne pas activer un protocole HTTP détaillé avec une vraie clé.

Utiliser des données de connexion correctes#

ClientConfiguration de l'URL de baseEmplacement final de la demande
OpenAI SDK / Chat Completionshttps://api.example.invalid/v1/v1/chat/completions
OpenCode avec @ai-sdk/openai-compatiblehttps://api.example.invalid/v1/v1/chat/completions
Claude Code CLI, ANTHROPIC_BASE_URLhttps://api.example.invalid/v1/messages
Codex, fournisseur de réponses base_urlhttps://api.example.invalid/v1/v1/responses

Pour les SDK, le critère final n'est pas inclus dans l'URL de base Claude Code /v1/messages; utiliser l'origine sans /v1. L'hôte du site deepseeksub.com n'est pas l'hôte de l'API d'inférence. Le proxy public représente les chemins ci-dessus et /v1/modelsprêt; ne vous fiez pas à des chemins inédits ou /v1/responses/compact.

Utiliser deepseek-flash, deepseek-v4-proou son Alias de service deepseek-pro. Un tarif appelé Pro ne choisit pas automatiquement le modèle Pro. Les anciennes clés peuvent être limitées à Flash; voir Modèles et compatibilité.

Envoyer une demande de diagnostic#

Kit CODING_PLAN_API_KEY sécurisé dans le terminal de la commande, comme décrit ci-dessous: Clés API. Ces exemples de shell utilisent la syntaxe macOS/Linux. Les utilisateurs de Windows peuvent utiliser l'exemple de python avec l'environnement PowerShell sous clé API. Démarrer rapidement l'API.

Vérifiez d’abord la résolution DNS, la connexion TLS et l’accessibilité HTTP sans clé ni génération :

s
curl --silent --show-error --connect-timeout 10 --max-time 20 \
  --output /dev/null --write-out 'HTTP %{http_code}\n' \
  https://api.example.invalid/v1/models

Un refus d'authentification, normalement 401, confirme une réponse HTTP, mais pas la clé, le modèle ou la fonction Upstream. HTTP 000 cURL est l'identification d'une réponse manquante, pas l'état du serveur. 502/503/504 signifie qu'un composant HTTP a répondu, mais que le chemin du service doit être examiné.

Envoyez ensuite une brève demande de texte. Elle peut consommer des quotas ou des crédits API. La commande ne se répète pas automatiquement. La limite de 90 secondes est un budget diagnostique, pas une garantie de latence.

s
curl --silent --show-error --connect-timeout 10 --max-time 90 \
  --write-out '\nHTTP %{http_code}; total %{time_total}s\n' \
  https://api.example.invalid/v1/chat/completions \
  -H "Authorization: Bearer ${CODING_PLAN_API_KEY:?Set CODING_PLAN_API_KEY first}" \
  -H 'Content-Type: application/json' \
  --data '{"model":"deepseek-flash","messages":[{"role":"user","content":"Say hello briefly."}],"max_tokens":128,"stream":false}'

Les erreurs HTTP n'entraînent pas nécessairement un code d'extension cURL à zéro; lisez l'état d'exécution. Lorsqu'un reasoning est activé, un petit budget de sortie peut être utilisé avant le texte final de la réponse. finish_reason et consommation avant que vous ne considériez le texte vide comme une erreur de connexion.

Installer pour Python openai et httpxet fixe ensuite des limites de temps explicites; désactive les répétitions SDK pendant le diagnostic:

python
import os
import httpx
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["CODING_PLAN_API_KEY"],
    base_url="https://api.example.invalid/v1",
    timeout=httpx.Timeout(90.0, connect=10.0),
    max_retries=0,
)
response = client.chat.completions.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Say hello briefly."}],
    max_tokens=128,
    stream=False,
)
print(response.choices[0].message.content)

La limite de temps de lecture Python limite l'attente des données réseau, pas nécessairement la durée totale d'un flux.

Référence d'état et de notification#

Les clients, les proxys et les fournisseurs Upstream peuvent les emballer autrement ou fournir d'autres erreurs. HTTP 502/504 et 422 ci-dessous décrivent les réponses possibles aux postes intermédiaires ou aux fournisseurs, pas de codes de facturation spécifiques.

ÉtatMessage ou symptômePremière étape
400Unsupported request field, Unsupported modelSupprimer les champs non pris en charge; utiliser un identifiant de modèle de service
400Stored Responses are not enabledSupprimer: store ou envoyer: store: false; Envoyer l'historique de manière explicite
400Hosted tools require a separate tariff, Custom tool format is not enabledSupprimer l'outil hébergé ou personnalisé non pris en charge; utiliser les outils de fonction client pris en charge
400Only metered text input is enabled, Tools must be an array, Only a single completion is supportedUtiliser du texte, un tableau d'outils pris en charge et: n: 1 ou lâcher: n
400MULTI_INVALID_OUTPUT_LIMIT, MULTI_UNSUPPORTED_OVERRIDEUtiliser la limite de sortie entière positive; supprimer les overbooks de routage et les options non prises en charge: extra_body Options
401API key required, ACCESS_DENIEDVérifier les données d'accès transmises, le déroulement et la révocation
403MODEL_DENIED, ACCESS_DENIEDVérifier les qualifications de modèle de la clé et l'accès au compte
402INSUFFICIENT_BALANCEVérifier les crédits API, les montants réservés et le mode de facturation
404Point d'évaluation/modèle introuvableVérifiez l'hôte. /v1Chemin et modèle définitifs
409Conflit de demande/d'autorisationArrêter les doubles tentatives; signaler le conflit persistant
413Demande trop grande, MULTI_REQUEST_TOO_LARGERéduire l'historique, les fichiers insérés et les schémas d'outils
422Échec de la validation des paramètresCorriger le champ appelé à partir d'une demande minimale
429PLAN_EXHAUSTEDVérifier le tarif actif, les fenêtres en vigueur, le contingent réservé et le mode de facturation
429CONCURRENCY_LIMIT, RATE_LIMITRéduire les tâches parallèles ou la fréquence des demandes
500Erreur interne / erreur du fournisseurSauvegarder les données de diagnostic; répéter les erreurs temporaires limitées
502Passerelle défaillante (Bad Gateway)Distinguer les erreurs client/réseau des erreurs de passerelle/upstream
503MODEL_UNAVAILABLE, SIAPI_BILLING_UNAVAILABLE, SIAPI_BILLING_NOT_CONFIGUREDou erreur proxyVérifier l'état du service; les erreurs de facturation/configuration persistantes nécessitent un support
504Délai d’attente de la passerelle dépassé (Gateway Timeout)Réduire l'échelle de travail; distinguer les limites de temps de la passerelle et du client
Pas de statut HTTPDépassement du temps, ADN, TLS, rupture de connexionSuivre les étapes du réseau ci-dessous

Corriger l'authentification et l'accès au modèle#

  1. Utilisez une clé de service créée par la clé API Clés APIet pas de jeton d'enregistrement Clerk ou de jeton officiel DeepSeek /OpenAI-/Anthropic-Schlüssel.
  2. Envoi de la demande de diagnostic Authorization: Bearer <key>. Vérifiez les espaces supplémentaires, les substituants inchangés et les variables d'environnement manquantes dans le processus client réel.
  3. Remplacez les clés expirées ou retirées et mettez à jour le client. Redémarrez les applications de bureau/IDE après avoir modifié leur source de données d'accès; une exportation shell ne met pas à jour une application en cours.
  4. Dans MODEL_DENIED En cas d'absence d'une clé plus ancienne d'accès Pro, créez un nouveau modèle avec les modèles requis. Échangez une clé valide non seulement en raison de 502 ou d'un dépassement de temps.
  5. Si l'accès est refusé, envoiez un message d'erreur corrigé au support et l'heure, jamais la clé complète.

Corriger les erreurs de contingent, de solde et de parallèle#

  1. Lisez le message: PLAN_EXHAUSTED, RATE_LIMIT et CONCURRENCY_LIMIT nécessitent des mesures différentes.
  2. Dans PLAN_EXHAUSTEDVérifiez qu'un tarif autorisé est actif et que la demande de jetons consommés et réservés s'inscrit dans les deux fenêtres en vigueur. Votre abonnement; l'erreur ne garantit pas les champs de réinitialisation ou un Retry-After En-tête.
  3. Entrée rapide et budget de sortie si la réservation ne convient pas. Par consomme 3,5 fois le contingent équivalent Flash. Les demandes ouvertes ou imprécises peuvent conserver des réservations; une minuterie locale ne prouve pas la libération.
  4. Vérifiez le mode de facturation. Seul le tarif n'utilise jamais de crédits. Seul le crédit API n'utilise pas de tarifs. Automatiquement, si le solde est activé, le solde insuffisant peut entraîner les erreurs suivantes: INSUFFICIENT_BALANCE. Le recours activé permet la consommation d'argent; décide consciemment.
  5. Dans CONCURRENCY_LIMITArrête les agents parallèles et attends les tâches en cours. RATE_LIMITArrêtez la boucle de demande et réduisez la fréquence. Les réservations non résolues nécessitent une assistance.
  6. Notez Retry-After Dans le cas contraire, utilisez des intervalles d'attente limités pour des limites de taux temporaires. Certaines secondes d'attente ne résolvent pas une fenêtre de 5 heures ou 7 jours épuisée.

Corriger les demandes non soutenues et les grands contextes#

  1. Commencez par la pure demande de diagnostic de texte. Complétez le streaming, l'historique, les outils et les options de rétroaction individuellement.
  2. Supprimer store: true, previous_response_id, background, metadata ainsi que les paramètres qui remplacent le routage du fournisseur dans les requêtes directes. Ces options ne font pas partie de l’interface publique actuelle. Joignez l’historique de la conversation à la requête au lieu de vous appuyer sur des réponses stockées.
  3. Supprimer les outils hébergés par le fournisseur comme type: web_search et les outils de réponse avec: type: custom. Les outils de schéma JSON exécutés du côté du client sont différents: Une fonction client appelée web_search n'est pas rejeté pour son seul nom.
  4. Utilisez du texte pour les médias refusés. La validation publique actuelle rejette les saisies de médias; les capacités du modèle Upstream ne suppriment pas cette restriction.
  5. Commencez une nouvelle conversation avec un bref résumé avec 413 erreurs de longueur contextuelle, supprimez les grands fichiers et les schémas d'outils inutilisés et réduisez le budget de sortie. La taille des messages HTTP et le contexte du modèle sont des limites distinctes.
  6. Commencez une nouvelle conversation en cas d'erreur par un jeu de thinking exclusivement crypté ou édité. Le pont a besoin d'une résonation de texte clair pour la lecture prise en charge; n'utilisez pas de résonation cryptée par le fournisseur pour d'autres services.

Corriger 502 Bad Gateway#

  1. État sécurisé, heure et réponse corrigée. Les erreurs HTML peuvent provenir d'un proxy avant une réponse de l'API JSON; ce n'est pas automatiquement un problème clé.
  2. Vérifier État du service La page d'état seule ne vérifie pas une seule demande; exécute le test ci-dessus sans clé.
  3. Renvoie également le test 502, pause la génération et l'hôte de connexion et l'heure. Processus de passerelle, connexion Upstream ou intermédiaires peuvent être impliqués; la cause nécessite des protocoles de service.
  4. Si l'accessibilité fonctionne, essayez une courte demande sans tâches parallèles. Ne casse qu'un seul client, comparez les paramètres URL et proxy. Comparez, si possible, un réseau alternatif pour limiter les problèmes locaux de proxy/VPN.
  5. Répétez au maximum deux fois après environ 2 et 5 secondes avec une dispersion aléatoire; arrêtez-vous ensuite et contactez le support. Vérifiez la consommation avant d'envoyer une nouvelle fois si la première demande a pu atteindre le modèle; une nouvelle demande peut entraîner un nouveau coût.

Corriger 504 Gateway Timeout#

  1. Confirmez une réponse HTTP-504 réelle. APITimeoutError, ReadTimeout, ETIMEDOUT Par contre, le code d'exit 28 cURL sans réponse HTTP est un dépassement du temps client/réseau.
  2. Noter le temps passé et si les données de flux sont arrivées. Les mêmes temps d'erreur indiquent une limite de temps, mais ne identifient pas le composant responsable.
  3. Essayez un nouveau prompt de texte court avec une limite de sortie plus petite et sans agents parallèles. En cas de succès, le contexte et les fonctions optionnelles s'ajoutent progressivement.
  4. Utilise le streaming pour les longues réponses si elles sont prises en charge. Il montre des progrès, mais ne supprime pas les limites d'exécution en amont ou proxy.
  5. Si le client indique d'abord sa durée de lecture/vide documentée à l'intérieur d'un budget fini. Une limite de temps supérieure ne répare pas HTTP 504 généré par la passerelle.
  6. Vérifiez la consommation et le quota réservé, puis appliquez la règle de nouvelle tentative limitée ci-dessous. Si de petites requêtes renvoient systématiquement une erreur 504, communiquez leurs heures à l’assistance.

Correction des dépassements de temps de connexion, erreurs DNS et TLS#

SymptômeSignificationProchaine étape
Échec du code d'extension cURL 6 / résolution hôteÉchec de la requête DNSVérifier api.example.invalid; Vérifier le résolveur et le réseau
Code d'extension cURL 7 / Connexion refuséeImpossible de connecter TCPVérifier le pare-feu, le proxy, le VPN et le port 443.
Code de sortie cURL 28 / ConnectTimeout / ETIMEDOUTDépasséDistinguer la connexion de l'attente des données
ReadTimeout / APITimeoutErrorLe client a fini d'attendreComparer une requête courte; Vérifier la limite de temps de lecture et les répétitions
Erreur de certificat cURL 35 ou 60 / TLSÉchec de l'examen de la main ou du certificatVérifier l'heure du système, la mémoire du certificat et, le cas échéant, le CA d'organisation
Réinitialiser la connexion / flux séparéL'interligne ou l'interligne a fermé le lienSauvegarder la sous-édition et comparer le chemin réseau
  1. Exécutez le test sans clé dans le même environnement que le client: terminal, conteneur, hôte distant ou IDE. Un navigateur fonctionnant ailleurs ne confirme pas cet environnement.
  2. Vérifier HTTP_PROXY, HTTPS_PROXY et ALL_PROXY local sur routage obsolète. Ne publiez pas d'URL proxy avec des données d'accès. Notez les paramètres de réseau requis au lieu de les contourner aveuglément.
  3. Désactivez d'abord les problèmes d'ADN, de pare-feu et de certificat. Ne désactivez pas l'essai TLS ni n'utilisez curl -k comme solution.
  4. Si vous rencontrez des timeouts uniquement lorsque vous avez de grandes requêtes, que vous avez un contexte/une sortie réduit et que vous vérifiez les paramètres de connexion, de lecture et de diffusion.
  5. Arrêtez les boucles de répétition et vérifiez la consommation. Un délai ou l'annulation ne prouve ni le traitement d'upstream arrêté, ni la consommation de jetons zéro ou une réservation partagée.

Liste de vérification Claude Code CLI#

  1. Notation claude --version. Définissez ANTHROPIC_BASE_URL , puis https://api.example.invalid et utilisez votre clé de service comme ANTHROPIC_AUTH_TOKEN. Vérifier les données d'accès et les paramètres d'accès enregistrés contradictoires localement.
  2. Kit ANTHROPIC_MODEL et les variables de modèle standard pour Opus/Sonnet/Haiku et les sous-agents de la Manuel du code Claude Le choix de modèle en arrière-plan peut échouer, même si le chat principal fonctionne.
  3. Redémarrez le CLI dans ce terminal et testez une nouvelle conversation courte. Un test de message direct utilise /v1/messagesun messages Array, un positif max_tokens et anthropic-version: 2023-06-01.
  4. Vérifiez à 404 un double /v1 ou un point d'appui non pris en charge. Vérifiez 400 outils, médias et données de thinking en utilisant les étapes ci-dessus.
  5. Si Chat Completions fonctionne, mais que les messages ne fonctionnent pas, rapportez l'erreur Messages séparément. La conversion du journal ne confirme pas chaque fonction client. Ce guide shell s'applique au CLI; les intégrations de bureau/gérées peuvent utiliser d'autres paramètres.

Liste de vérification du Codex#

  1. Notation codex --version. Configuration sécurisée et catalogue de modèles. Rassemblez les modifications; les tables TOML doubles peuvent empêcher le démarrage avant toute demande HTTP.
  2. Dans ~/.codex/config.tomldoit: model_provider de s'adapter au tableau des fournisseurs; base_url , puis https://api.example.invalid/v1 et wire_api , puis responses. Utilisez un identifiant de modèle de service et un env_key avec le nom de la variable d'environnement contenant votre clé.
  3. Redémarrer dans cet environnement et tester une nouvelle session. /v1/responses Test utilisé input, max_output_tokens et store: false. Le succès du chat-complétement seul n'est pas un test du Codex.
  4. Pour les recherches hébergées, les outils personnalisés, les réponses enregistrées ou les champs non pris en charge, suivez les étapes appropriées ci-dessus. Le client ne peut pas générer de requêtes prises en charge, enregistrer la version et les erreurs de support; l'échange répété de clés n'aide pas.
  5. Choisissez le chemin à 404 pendant la compression. /v1/responses/compact n'est pas fourni par le proxy public actuel. Commencez une nouvelle session avec un bref résumé; vérifiez les compétences du fournisseur/modèle du client installé avant d'activer le compactage externe.
  6. Vérifier les flux suspendus stream_idle_timeout_ms, request_max_retries et stream_max_retries dans les paramètres du fournisseur. Désactivez les répétitions automatiques pendant le diagnostic, si elles sont prises en charge. Conservez les métadonnées du modèle existantes au lieu de copier la taille du contexte d'autres fournisseurs.

Liste de vérification OpenCode#

  1. Notation opencode --version. Dans /connectChoisissez Other et utilise le même identifiant de fournisseur que dans opencode.jsonpar exemple: coding-plan.
  2. Utiliser npm: "@ai-sdk/openai-compatible", options.baseURL: "https://api.example.invalid/v1" et un identifiant de modèle de service précis comme clé sous models. Un nom d'affichage n'est pas un identifiant de modèle API.
  3. Rassemblez JSON valide, redémarrez si nécessaire et sélectionnez le modèle avec /models. Si le fournisseur manque, vérifiez la syntaxe et l'emplacement avant de modifier les données d'accès.
  4. Reconnectez la clé sous l'identifiant du fournisseur approprié en cas d'erreur d'authentification. /v1 exactement une fois, et ne pas ajouter: /chat/completions , puis baseURL.
  5. Essayez une nouvelle conversation courte, puis des outils et un contexte plus long. Suivez les étapes de demande/réseau lors d'une interruption de 400 ou d'une rupture de flux; notez les fournisseurs et les modèles d'assistance.

Une réponse s'efface au milieu#

  1. Vérifiez le signal final du protocole et les erreurs. HTTP 200 ne garantit pas la génération terminée au démarrage du flux.
  2. Distinction d'une limite de sortie (finish_reason: length ou un résultat de réponse incomplet) à partir d'un flux séparé. Une limite budgétaire nécessite une poursuite consciente ou un budget plus important; une interruption nécessite un diagnostic de réseau/temporaire.
  3. Marquez les versions partielles comme incomplètes. N'influe pas sur une nouvelle génération et ne répète pas les actions d'outil partiellement exécutées. Vérifiez à l'avance si un outil a déjà modifié des fichiers ou exécuté des actions externes.
  4. Vérifier Consommation. L'absence de données finales de consommation peut laisser une réservation ouverte ou incertaine pour le vote. L'absence de données d'utilisation ou de connexion fermée ne signifie pas un coût zéro.
  5. Conserver le dernier type d'événement, le temps passé et le message d'erreur corrigé. Voir Réponses en streaming.

Répéter sans boucle continue#

Préciser les requêtes non valides et les erreurs d'authentification/accès avant les répétitions. Notez les limites temporaires de 429 ou 500/502/503/504 Retry-After s'il existe; sinon deux répétitions au maximum avec des temps d'attente et de dispersion croissants, arrêter après. Si le contingent est épuisé, il faut d'abord régler la fenêtre ou la facturation. Les erreurs persistantes de configuration du modèle/du calcul nécessitent un support.

Désactivez les répétitions qui se chevauchent dans le SDK, le client et votre propre script pendant le diagnostic. Les requêtes avec Timeout peuvent avoir déjà été exécutées; vérifiez la consommation et décidez d'envoyer à nouveau. La génération répétée est une nouvelle demande potentiellement payante, pas de poursuite garantie ou de répétition gratuite.

Préparer un rapport d'assistance utile#

Utiliser Aide & Contact et ajoutez les éléments suivants sans secrets ni contenu privé:

texte
Time and timezone:
Client / version / operating system:
API host and final path (no query secrets):
Model ID / streaming on or off:
HTTP status, or network exception / cURL exit code:
Sanitized error code and message:
Elapsed time / whether response data arrived:
Request ID (only if returned):
Key billing mode / plan reset / pending usage:
Does the no-key probe work? Does one short text request work?
Minimal request with key and private prompt removed:

Les paramètres de connexion ont été testés le 6 novembre 2026 contre la mise en œuvre du projet. Les paramètres du client peuvent changer en fonction de la version. Références: Configuration de la passerelle Claude Code, Référence de configuration du Codex, Fournisseur OpenCode personnaliséet Codes de sortie cURL.

Instructions mises à jour le 5 novembre 2026 · Tous les guides