Authentification WaveSpeed API et Gestion des Erreurs : Corrigez 401, 429, 5xx comme un Pro

Authentification WaveSpeed API et Gestion des Erreurs : Corrigez 401, 429, 5xx comme un Pro

Bonjour, je suis Dora—je casse les API pour le plaisir afin que vous ne ayez pas à le faire.

J’ai continué à recevoir des erreurs 401 la semaine dernière. Pas le genre mystérieux—le genre stupide, où vous savez que quelque chose ne va pas mais vous ne pouvez pas le voir. Il s’avère que j’utilisais X-API-Key dans mes en-têtes. WaveSpeed veut Authorization: Bearer. Une petite différence. Deux heures perdues.

C’est ça avec l’authentification API—ça marche silencieusement quand c’est correct, et ça échoue bruyamment quand ce n’est pas le cas. Et WaveSpeed, comme la plupart des API modernes, ne vous laisse pas beaucoup de marge de manœuvre. C’est ce que j’ai appris en utilisant l’API WaveSpeed pour la génération d’images et de vidéos au cours des derniers mois—et ce qui a vraiment aidé quand les choses se sont cassées.


Comment fonctionne réellement l’authentification de l’API WaveSpeed

WaveSpeed utilise l’authentification par jeton Bearer. Chaque demande a besoin de :

  • Authorization: Bearer <YOUR_API_KEY>
  • Content-Type: application/json

Le format est simple :

Authorization: Bearer your_api_key_here
Content-Type: application/json

J’ai vu des gens essayer X-API-Key, Api-Key, ou l’envelopper dans des guillemets. La documentation officielle de WaveSpeed et les exemples montrent systématiquement le format du jeton Bearer. C’est tout. Pas de variations.

Obtenir votre clé API

Votre clé API se trouve dans le tableau de bord WaveSpeed à wavespeed.ai/accesskey. Vous devez recharger votre compte avant de pouvoir en générer une—il n’y a pas de clé pour les utilisateurs du niveau gratuit.
Quand vous copiez la clé, attention aux espaces supplémentaires. Je l’ai fait deux fois—j’ai attrapé un espace à la fin et j’ai passé 20 minutes à déboguer avant de remarquer.

Flux d’authentification pour l’API WaveSpeed

Il n’y a pas de rafraîchissement de jeton, pas d’OAuth, pas d’étapes intermédiaires. Vous envoyez le jeton Bearer, WaveSpeed le valide, votre demande procède ou est rejetée avec un 401.
Si l’authentification échoue, vous obtenez une réponse 401 immédiatement. L’erreur indique généralement « authentification invalide » et vous demande de vérifier votre clé.

Gestion des erreurs 401 Non autorisé

Un 401 de WaveSpeed signifie qu’il a examiné votre en-tête Authorization et a dit « Je ne reconnais pas ceci ».

Liste de contrôle des causes courantes

Les suspects habituels :

  • Format d’en-tête incorrect (pas d’utilisation d’Authorization: Bearer)
  • Clé API copiée avec des espaces ou des sauts de ligne à la fin
  • Clé régénérée dans le tableau de bord mais ancienne clé toujours dans le code
  • Variable d’environnement non chargée
  • Pas de rechargement de compte—les clés ne seront pas générées sans ajouter de crédits d’abord

Correctifs rapides

Quand je rencontre un 401, je commence ici :
D’abord, enregistrez l’en-tête exact. Pas ce que je pense envoyer—ce qui est réellement dans la requête HTTP. Souvent, le jeton Bearer est mal formé ou le nom de l’en-tête est légèrement décalé.
Deuxièmement, copiez la clé à nouveau depuis le tableau de bord. Testez-la immédiatement avec curl avant de la mettre dans le code :

curl -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/flux-dev" \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt": "test"}'

Si curl fonctionne, le problème est dans mon code applicatif. Si curl échoue, la clé elle-même est incorrecte.
Troisièmement, vérifiez le solde du compte. WaveSpeed fonctionne selon un modèle basé sur les crédits—si votre solde atteint zéro, les appels API pourraient échouer.

Gestion des réponses 429 de limite de débit

Les limites de débit de WaveSpeed sont échelonnées : Bronze (limites de base, recharge de 100 $), Silver (concurrence plus élevée, recharge de 1 000 $), et Gold (personnalisé, 10 000 $ et plus). Chaque niveau a des limites de débit et de tâches concurrentes différentes.

Les spécificités ne sont pas documentées publiquement en nombres exacts, mais le motif est clair : envoyez trop de demandes trop rapidement, obtenez un 429.


Comprendre les limites de débit

Selon la FAQ, les limites d’exemple incluent Bronze à 10 images / 5 vidéos par minute avec max 3 tâches concurrentes, Silver à 500 images / 60 vidéos par minute avec max 100 concurrentes, et **Gold à 2000 images / 120 vidéos par minute avec max 200 concurrentes.

Si vous recevez des erreurs « Trop de demandes », vous atteignez probablement votre limite de niveau. Pour éviter la limitation, envisagez de mettre à niveau votre forfait.


Stratégie de backoff exponentiel pour les retentatives

Quand je rencontre un 429, j’attends avant de réessayer. Pas immédiatement—ça ne m’obtient qu’un autre 429. J’utilise le backoff exponentiel :

  • Première tentative : attendez 1 seconde
  • Deuxième tentative : attendez 2 secondes
  • Troisième tentative : attendez 4 secondes
  • Après trois tentatives, arrêtez et enregistrez l’échec

De nombreuses API incluent un en-tête Retry-After qui vous indique exactement combien de temps attendre. Recherchez-le et utilisez cette valeur quand elle est disponible.


Concevoir une file d’attente de demandes côté client

Pour les opérations en masse—comme générer 100 images dans un travail en lot—j’ai ajouté une file d’attente qui respecte les limites de mon niveau :

  • Suivez le nombre de demandes que j’ai envoyées dans la fenêtre de temps actuelle
  • Une fois que j’approche la limite (disons, 90 % du débit de mon niveau), mettez en pause les nouvelles demandes
  • Reprenez quand la fenêtre de temps se réinitialise

Cela évite la plupart des 429 avant qu’ils ne se produisent. Je les atteins encore occasionnellement quand plusieurs processus s’exécutent simultanément, mais la logique de retry gère ceux-ci.


Gestion des erreurs serveur 5xx

Les erreurs serveur sont différentes. Un 401 ou 429 est moi qui fais quelque chose de mal. Un 500 ou 503 de WaveSpeed signifie que quelque chose s’est cassé de leur côté.


Motifs de retry sûrs

Pour les erreurs 5xx, il est sûr de réessayer—la plupart des erreurs serveur se résolvent en quelques secondes. Un bon motif de la documentation de Microsoft est de réessayer immédiatement une fois au cas où ce serait une erreur transitoire, puis de revenir au backoff exponentiel s’il persiste.

Mon approche :

  • Réessayez immédiatement une fois (c’était peut-être un hoquet)
  • Si cela échoue, utilisez le même backoff exponentiel que pour les 429
  • Plafonnez à trois retentatives au total
  • Enregistrez l’échec et continuez

Pour les demandes GET (vérifier le statut de la génération), réessayer est toujours sûr.
Pour les demandes POST (commencer une nouvelle génération), je suis plus prudent—je ne veux pas accidentellement commencer le même travail deux fois.


Configuration efficace des délais d’expiration

Je définis deux délais d’expiration :

  • Délai de connexion : 5 secondes
  • Délai de lecture : 30 secondes

WaveSpeed cible « moins de 2 secondes » pour les images et « environ 2 minutes » pour les vidéos, bien que les temps réels dépendent du modèle, de la résolution et de la charge.

La plupart des générations d’images se terminent en moins de 5 secondes. La vidéo prend plus de temps—parfois 60–90 secondes. Mais j’ai vu des pics occasionnels jusqu’à 20+ secondes même pour les images.

Sans délais d’expiration, une demande lente pourrait rester suspendue indéfiniment. Avec eux, j’obtiens une erreur propre et je peux réessayer.


Journalisation et observabilité dans l’API WaveSpeed

Une fois que l’authentification et la gestion des erreurs ont fonctionné, j’ai dû savoir qu’elles restaient fonctionnelles.

Ce qu’il faut enregistrer

Pour chaque appel API WaveSpeed, j’enregistre :

  • Le point de terminaison du modèle appelé
  • Code de statut HTTP
  • Temps de réponse en millisecondes
  • Si c’était une tentative, et quel numéro de tentative

Quand vous contactez le support WaveSpeed au sujet de demandes échouées, ils vous demandent les ID de travail et les horodatages. Gardez-les dans vos journaux pour le débogage.


Seuils d’alerte

Je définis des alertes pour :

  • Taux d’erreur 401 supérieur à 1 % (l’authentification est cassée)
  • Taux d’erreur 429 supérieur à 5 % (atteindre les limites de débit de manière cohérente)
  • Toute erreur 5xx (devrait être rare)
  • Temps de réponse moyen supérieur à 10 secondes (problèmes de performance potentiels)

Ce ne sont pas des seuils universels—ce sont ceux qui avaient du sens pour mon utilisation. L’important est d’avoir un seuil qui déclenche une enquête avant que les utilisateurs ne le remarquent.


Liste de contrôle de production pour l’authentification de l’API WaveSpeed

Avant de passer en direct :

  • Clés API stockées dans les variables d’environnement, pas dans le code
  • Utilisation correcte du format Authorization: Bearer
  • En-tête Content-Type défini sur application/json
  • Logique de retry avec backoff exponentiel pour 429 et 5xx
  • Délais d’expiration configurés (5s de connexion, 30s de lecture)
  • La journalisation inclut les codes de statut, les temps de réponse, les ID de travail
  • Les alertes sont configurées pour les pics de taux d’erreur
  • Limitation de débit côté client pour rester dans les limites du niveau
  • Surveillance du solde intégrée pour suivre l’utilisation des crédits

J’obtiens encore occasionnellement des 429 lors de pics de trafic. Et j’ai vu quelques erreurs 5xx quand WaveSpeed avait de brefs problèmes le mois dernier. Mais avec cette configuration, ces erreurs ne se propagent pas.

L’authentification fonctionne surtout juste en fonctionnant. L’effort porte sur la gestion des moments où cela ne fonctionne pas—proprement, prévisiblement, sans me réveiller à 2 heures du matin parce que le solde des crédits a atteint zéro.

💡 Vous avez un problème ?
Publiez le code d’erreur + l’ID de demande dans les commentaires, et nous vous guiderons à travers la liste de contrôle de dépannage pour vous aider à identifier la cause première.

**Conseil : La plupart des erreurs sont côté client et contrôlables (en-têtes, clé API, limites de débit), mais ce processus vous aide également à identifier les problèmes qui nécessitent le support WaveSpeed.