Les erreurs renvoient un code de statut 400, 401, 402, 403, 404, 429, 500, 502, 503 ou 504. Un succès renvoie
un code de statut 200. Voir ici pour plus de détails.
- Le champ
errorscontient le tableau des erreurs, une par réseau social ayant rencontré une erreur. - L’
actionfait référence au type d’erreur renvoyé. - Le champ
statusde niveau supérieur vaut « error » si l’appel API a échoué. Par exemple, pour un appel /post, si toutes les publications sur les réseaux sociaux ont réussi, le champstatusvaudra « success », sinon il vaudra « error ». - Le champ
codecontient le code d’erreur de référence Ayrshare. - Le champ
messagecontient les détails spécifiques de l’erreur.
Gestion des erreurs
Vous devez gérer toute réponse d’erreur et prendre l’action appropriée. Une erreur s’est produite si :- Le code de retour de la réponse n’est pas
200 - Le statut de la réponse JSON est
error
400 Bad Request.
400 Bad Request :
Codes d’erreur spécifiques à Instagram
Les codes d’erreur suivants fournissent des détails spécifiques sur les échecs de publication Instagram, en remplaçant, lorsque cela est possible, l’erreur générique 138. Code 435 — Instagram Rate Limit (HTTP 429) Les comptes Instagram professionnels (Business / Creator) sont soumis à une limite glissante de 50 publications sur 24 heures via la Content Publishing API de Meta (les comptes personnels ne peuvent pas publier via l’API, ils n’atteignent donc jamais cette limite). Lorsque le plafond est dépassé, Meta renvoie une erreur de limite de débit. Ayrshare renvoie égalementcode: 435 lorsque l’endpoint de publication de Meta renvoie directement un HTTP 429 ou lorsque le sous-code d’erreur sous-jacent (1390008) indique un throttle de publication / commentaire.
Retry-After, la valeur (en secondes) est transmise dans le champ details — attendez au moins ce délai avant de resoumettre.
Code 436 — Instagram Media Processing Timeout (HTTP 400)
Instagram a mis trop de temps à traiter le média téléversé. Cela peut se produire avec des fichiers vidéo volumineux ou pendant les périodes de forte charge sur les serveurs de Meta.
instagramOptions.trialParams est fourni sur une requête /post mais que graduationStrategy est manquant, null ou une chaîne vide. Les trial reels nécessitent une stratégie de graduation explicite — voir Trial Reels.
instagramOptions.trialParams.graduationStrategy sur "MANUAL" ou "SS_PERFORMANCE" et réessayez, ou supprimez trialParams si vous n’aviez pas l’intention de publier un trial reel.
Code 448 — Instagram Trial Reels : graduationStrategy invalide (HTTP 400)
Renvoyé lorsque graduationStrategy est présent mais n’est pas exactement "MANUAL" ou "SS_PERFORMANCE". La vérification est sensible à la casse — des valeurs comme "manual" ou "ss_performance" sont rejetées. Le champ details reprend la valeur rejetée (tronquée à 64 caractères) pour faciliter le débogage.
graduationStrategy exactement sous la forme "MANUAL" ou "SS_PERFORMANCE" (en majuscules, de type string).
Code 449 — Instagram Trial Reels : média incompatible (HTTP 400)
Renvoyé lorsque le média ou la forme de la publication n’est pas éligible à un trial reel. Les trial reels doivent être une seule vidéo .mp4 ou .mov — les carrousels (plusieurs URL), les stories (instagramOptions.stories: true) et les extensions non vidéo sont tous rejetés. Le champ details précise quel sous-cas a été déclenché.
.mp4 ou .mov sans le drapeau stories: true. Supprimez les entrées mediaUrls supplémentaires, ou supprimez trialParams si vous prévoyiez une publication carrousel/story classique.
Code 258 — Erreur d’état de compte Instagram (HTTP 400)
Un échec général lié à l’état du compte Instagram, avec le message de base « Error with Instagram. » Cela apparaît lorsque Meta rejette la requête en raison de l’état du compte Instagram connecté, et non du contenu de la publication.
error_subcode est 2207085, la réponse ajoute relink: true et retryAvailable: true, et le message indique à l’utilisateur de déconnecter et reconnecter le compte Instagram en accordant toutes les autorisations :
2207085, invitez l’utilisateur à déconnecter et reconnecter son compte Instagram dans Social Accounts en accordant toutes les autorisations demandées, puis réessayez la publication. Pour les autres erreurs d’état de compte, vérifiez que le compte Instagram est en règle chez Meta et réessayez.
Retry Available
Parfois, les réseaux sociaux rencontrent une erreur irrécupérable, par exemple des problèmes serveur, et l’appel finit par échouer même après de nombreuses tentatives. Dans ces cas, notre système détermine si l’erreur est réessayable et, si oui, le champretryAvailable sera true.
Erreurs BYO Key X/Twitter
Les codes d’erreur suivants sont spécifiques aux opérations BYO (Bring Your Own) key pour X/Twitter : Code 272 - Failed to Verify BYO Twitter Identity (HTTP 400) Ayrshare n’a pas pu confirmer votre identité X/Twitter à l’aide de vos consumer keys BYO et des tokens OAuth stockés au moment de la connexion. La forme de la réponse varie selon l’appel qui l’a déclenchée ; les deux formes correspondent aux mêmes trois sous-cas ci-dessous. Vérifiez lequel s’applique en vous connectant à x.com avec le compte propriétaire de la BYO Developer App. Le chemin de publication émet une réponse minimale :details portant la chaîne d’erreur brute de X :
details reflète l’indication côté X et constitue le signal unique le plus fiable pour déterminer lequel des sous-cas ci-dessous s’applique.
Compte suspendu. Vous connecter à x.com affiche un avis de suspension. Action : contactez le support X. La reconnexion ne restaurera pas l’accès tant que X n’aura pas réintégré le compte.
Compte verrouillé. Vous connecter à x.com déclenche un défi de déverrouillage (CAPTCHA, vérification par téléphone, etc.). Action : effectuez le défi de déverrouillage sur x.com, puis réessayez la requête. Aucune reconnexion n’est requise.
Discordance d’identité ou de clés. Votre compte X est en règle sur x.com, mais vos consumer keys BYO appartiennent à une X Developer App différente de celle des tokens OAuth stockés au moment de la connexion. Action : reconnectez X dans Social Accounts et autorisez avec le même compte X que celui qui possède la BYO Developer App.
Code 416 — X Credits Depleted (HTTP 402)
Votre compte X Developer n’a plus de crédits d’API chargés. Tous les appels à l’API X nécessitent des crédits.
x-access-level: read, qui confirme que votre Access Token a été généré avec des autorisations en lecture seule.
Action : dans la X Developer Console, mettez à jour les autorisations de votre application sur Read and write and Direct message, puis régénérez votre Access Token dans Keys and tokens. Le nouveau token héritera des autorisations mises à jour. Voir le Guide de configuration BYO Key pour X pour plus de détails.
Code 419 - Missing BYO Credentials (HTTP 400)
Les opérations X/Twitter nécessitent des identifiants d’API BYO dans les en-têtes de la requête. Ayrshare renvoie le code 419 lorsque les deux en-têtes sont manquants, et également lorsqu’un seul des deux est présent. La chaîne message varie selon le ou les en-têtes manquants.
Lorsque X-Twitter-OAuth1-Api-Key et X-Twitter-OAuth1-Api-Secret sont tous les deux manquants :
X-Twitter-OAuth1-Api-Key et X-Twitter-OAuth1-Api-Secret sur chaque requête ciblant X. Si vous en fournissez un sans l’autre, la requête est rejetée avec le même code. Voir la référence des en-têtes X BYO Keys pour la liste complète des en-têtes.
Code 423 — Legacy X/Twitter OAuth No Longer Supported (HTTP 403)
Renvoyé lorsqu’une requête X/Twitter s’appuie sur l’ancien chemin OAuth (non-BYO), qui n’est plus pris en charge. L’accès à l’API X nécessite désormais vos propres identifiants X Developer App fournis via les en-têtes de la requête.
X-Twitter-OAuth1-Api-Key et X-Twitter-OAuth1-Api-Secret sur chaque requête ciblant X. Voir le Guide de configuration BYO Key pour X pour toutes les étapes de configuration.
Erreurs d’amélioration de légende
Code 441 — Caption Enhancement Failed (HTTP 502) Renvoyé lorsqu’une amélioration de légende (par exempleshortenLinks) échoue pour une ou plusieurs plateformes lors de la préparation d’une publication. Chaque plateforme affectée apparaît dans le tableau errors avec source: "handlePostAdditions" et code: 441.
Lorsque seules certaines plateformes échouent, les autres publient tout de même avec succès et leurs résultats apparaissent dans postIds. Dans ce cas, le status de niveau supérieur est "error" mais postIds n’est pas vide — les clients doivent traiter status et errors[] comme complémentaires plutôt que mutuellement exclusifs.
code: 441 de niveau supérieur avec un HTTP 502 et aucune publication n’est créée :
- Si
postIdsn’est pas vide (certaines plateformes ont publié avec succès), ne resoumettez pas l’ensemble complet des plateformes — cela dupliquerait la publication sur les plateformes réussies. Inspectez plutôterrors[]pour identifier les plateformes en échec et relancez la requête avec uniquement ces plateformes, ou appuyez-vous sur votre propre flux de retry idempotent. - Si
postIdsest vide ou absent (échec total au moment de la planification/publication), vous pouvez relancer la requête complète en toute sécurité. - Si l’échec persiste, soumettez la publication sans le drapeau d’amélioration (par exemple, supprimez
shortenLinks) ou contactez le support.
Erreurs de récupération de média / d’accès du crawler
Code 440 — Social Network Could Not Download Media (HTTP 400) Renvoyé lorsque le crawler de publication de la plateforme ne peut pas télécharger lemediaUrl que vous avez fourni — le plus souvent parce que robots.txt ou une règle WAF / bot-fight bloque le crawler (par exemple facebookexternalhit de Meta). La chaîne details provient de la plateforme en amont et correspond souvent au texte d’erreur Meta/Instagram 2207052.
details contient généralement "Restricted by robots.txt" ou "HTTP error code 403". Le code 138 est également utilisé pour des problèmes de ratio / format et d’autres erreurs Instagram génériques, de sorte que la variante « échec de récupération de média » est identifiable par la chaîne details.
mediaUrl. L’API Threads ne renvoie pas de chaînes de détails, donc le diagnostic nécessite généralement de vérifier la présence d’une erreur Instagram 440 ou 138 concomitante lors de la même publication.
robots.txt et une commande de vérification.
Limite de débit des statistiques Facebook
Code 444 — Facebook Page Analytics Rate Limit (HTTP 429) Renvoyé lorsqu’une Page Facebook a dépassé la limite de débit par Page de Meta sur l’endpoint de statistiques. L’erreur Meta sous-jacente est80001 (« There have been too many calls to this Page account. »). La Page reste connectée et la publication continue de fonctionner — seule la diffusion des statistiques pour cette Page est limitée.
Lorsque le throttle est détecté pour une seule publication dans une réponse /history/facebook ou analytics, chaque publication affectée porte code: 444 sous facebook.code avec errCode: 80001 :
Vérification d’identité Meta
Code 326 — Meta Identity Verification Required (HTTP 403) Renvoyé lorsque Meta exige une vérification d’identité supplémentaire pour le compte connecté avant d’accepter la requête. Cela s’applique à toutes les plateformes Meta — Facebook, Instagram, Facebook Groups, Threads et Messenger. Reconnecter le compte ne résout pas ce problème ; la vérification doit être effectuée côté Meta.Restriction de compte Facebook
Code 476 — Facebook Account Restriction (HTTP 400) Renvoyé lorsqu’une publication sur Facebook échoue parce que Meta a imposé une restriction sur le compte (sous-codes d’erreur Meta2424009 et 1404078, ou formulation de restriction de Meta lorsque l’erreur ne porte pas de sous-code). Il s’agit d’une restriction au niveau du compte, et non d’un simple problème transitoire de publication — elle est non réessayable et ne porte pas de drapeau retryAvailable. Resoumettre la même publication n’aboutira pas tant que la restriction n’est pas résolue avec Meta. Le compte reste connecté à Ayrshare ; aucune reconnexion n’est nécessaire.
Meta ne renvoie pas la raison spécifique de la restriction via l’API, donc le client doit vérifier directement la page Account Status de Meta pour voir la raison et faire appel. Lorsque Meta fournit son propre texte verbatim, Ayrshare l’affiche dans le champ details. Ayrshare envoie également un e-mail de notification au propriétaire du compte lorsque la restriction est détectée.
Erreurs de conversion de format d’image
Ayrshare convertit automatiquement les images WebP, HEIC et AVIF en JPEG avant la publication sur les plateformes qui ne les acceptent pas (Instagram, LinkedIn, TikTok, Google My Business, Threads et Snapchat pour WebP ; toutes les plateformes pour HEIC et AVIF). La conversion s’exécute de manière transparente au moment de l’envoi. Les trois erreurs ci-dessous ne surviennent que lorsque le pipeline de conversion lui-même ne peut pas aboutir ; si l’image source est déjà dans un format pris en charge, aucune conversion n’est tentée et ces codes n’apparaîtront pas. Code 450 — Image Format Conversion Failed (HTTP 400) L’image a été téléchargée mais n’a pas pu être ré-encodée en JPEG. Les causes les plus courantes sont un fichier source corrompu, un format interne inattendu à l’intérieur du conteneur, ou une image dépassant le plafond de taille pour la conversion.mediaUrl source directement dans un navigateur pour confirmer qu’il s’affiche. Si oui, réexportez l’image en JPEG ou PNG propre et réessayez la publication.
Code 451 — Image Download Failed for Conversion (HTTP 400)
Le pipeline de conversion n’a pas pu récupérer l’image source. Les causes typiques incluent une réponse 4xx/5xx de l’origine, un délai réseau dépassé, une chaîne de redirections dépassant la limite de sauts, ou une URL résolvant vers une adresse non publique (bloquée par le garde-fou SSRF). Le champ details, lorsqu’il est présent, contient la chaîne de cause sous-jacente.
mediaUrl est publiquement accessible (pas d’authentification, pas de blocages robots.txt, résout via HTTPS). Si l’URL redirige, assurez-vous que la destination finale est également publique et non sur un réseau privé.
Code 452 — Converted Image Upload Failed (HTTP 500)
La conversion a réussi mais Ayrshare n’a pas pu placer le JPEG converti dans son bucket de stockage temporaire. Il s’agit d’une défaillance interne côté Ayrshare et elle est réessayable.
mediaUrl et l’horodatage approximatif.
Erreurs transitoires de téléversement YouTube
Les codes d’erreur suivants fournissent des signaux spécifiques pour les échecs de téléversement YouTube qui sont typiquement transitoires et peuvent être réessayés sans risque. Les deux réponses incluentretryAvailable: true, de sorte que les intégrations peuvent brancher sur ce booléen plutôt que sur le code de statut HTTP.
La plupart des anciennes réponses code: 176 pour les téléversements YouTube passent désormais par 453 (timeout transitoire) ou 454 (service temporairement indisponible), toutes deux avec retryAvailable: true. Si votre intégration filtre sur HTTP 500 pour réessayer les téléversements YouTube, passez au filtrage sur le champ retryAvailable du corps de la réponse.
Code 453 — YouTube Upload Timed Out (HTTP 504)
Renvoyé lorsque le pipeline d’ingestion YouTube de Google a dépassé son délai en acceptant le téléversement. C’est généralement transitoire et se résout de soi-même en une minute ou deux.
retryAvailable du corps de la réponse plutôt que sur le statut HTTP pour détecter les échecs réessayables. Vous pouvez utiliser l’endpoint retry post pour resoumettre la même charge utile.
Code 454 — YouTube Upload Service Temporarily Unavailable (HTTP 503)
Renvoyé lorsque l’endpoint de téléversement YouTube renvoie un statut 5xx, ou lorsque la connexion à YouTube a été réinitialisée ou expirée au niveau socket (ECONNRESET, ETIMEDOUT, ESOCKETTIMEDOUT). Ces conditions sont transitoires.
retryAvailable du corps de la réponse plutôt que sur le statut HTTP pour détecter les échecs réessayables. Vous pouvez utiliser l’endpoint retry post pour resoumettre la même charge utile.
Erreurs de miniature YouTube - Code 307
Le code307 est renvoyé lorsqu’une miniature personnalisée YouTube (thumbNail) ne peut pas être appliquée. Lorsque la vidéo elle-même est publiée avec succès, cela ne fait pas échouer la publication — le résultat YouTube conserve status: "success" et l’échec est signalé de manière additive dans un tableau warnings (feature: "thumbnail", code: 307). Le sous-objet thumbnail hérité est conservé pour la rétrocompatibilité.
La cause la plus courante est une chaîne YouTube non vérifiée. Lorsqu’une chaîne n’a pas effectué la vérification par téléphone, YouTube renvoie un 403 en amont avec le message générique "The authenticated user doesn't have permissions to upload and set custom video thumbnails". Cette formulation ressemble à un problème OAuth, mais en pratique c’est presque toujours un problème de vérification, donc vérifiez d’abord la chaîne. La reconnexion du compte YouTube est une cause secondaire.
warnings (le status de niveau supérieur reste "success"). Cela est vrai quel que soit le moment où le problème est détecté :
- Détecté avant le téléversement. Lorsque la validation pré-publication peut affirmer de manière définitive que la miniature est invalide (mauvais type de fichier, taille supérieure à 2 Mo confirmée ou URL inaccessible), Ayrshare ignore la miniature, publie tout de même la vidéo et signale la raison précise dans
warnings— vous évitez ainsi une tentative de téléversement vouée à l’échec et obtenez un message plus clair que celui que le fournisseur renverrait. - Détecté après le téléversement. Lorsque l’échec n’est détectable qu’une fois que YouTube traite la requête (par exemple le
403de chaîne non vérifiée, ou un413pour une image trop volumineuse), la vidéo est déjà en ligne et l’échec est signalé dans le même tableauwarnings.
status: "success" + warnings montré plus haut dans cette section.
Action : vérifiez votre chaîne YouTube sur https://www.youtube.com/verify (vérification par téléphone). Si votre chaîne est déjà vérifiée et que les miniatures échouent toujours, déconnectez et reconnectez votre compte YouTube dans Social Accounts et accordez toutes les autorisations. Voir YouTube Thumbnail Not Applied (Unverified Channel) pour le guide de dépannage complet.
Erreurs de publication Reddit
Code 442 — Reddit Banned Subreddit (HTTP 400) Renvoyé lorsque le compte a été banni de la publication dans le subreddit cible. Cela n’est pas réessayable — la publication n’aboutira pas si elle est resoumise en l’état. Le message inclut le nom du subreddit affecté (par exemple,r/news).
r/news).
Erreurs de modération
Code 438 — Moderation Input Rejected (HTTP 400) Renvoyé parPOST /validate/moderation lorsque le fournisseur d’IA rejette l’entrée fournie — par exemple, un type de fichier non pris en charge. Il s’agit d’un problème d’entrée de la requête, et non d’un échec de traitement transitoire.
Contrastez le code 438 avec le code 331. Le code 331 couvre le même scénario de modération mais représente un véritable échec de traitement côté fournisseur (HTTP 500, message « There was an issue with the AI processing. Please try again. »). Le code 331 est un échec transitoire côté serveur que vous pouvez réessayer, tandis que le code 438 indique que l’entrée elle-même a été rejetée et doit être corrigée avant de réessayer.
Erreurs de statistiques LinkedIn
Code 475 — Re-link LinkedIn Profile for Analytics (HTTP 403) Renvoyé parPOST /analytics/post et POST /analytics/social pour un profil LinkedIn personnel (membre) qui a été connecté avant la mise en service des statistiques membres. Ces profils manquent des scopes de statistiques membre LinkedIn (r_member_postAnalytics, r_member_profileAnalytics), donc LinkedIn rejette la requête de statistiques. La publication n’est pas affectée.
475 pendant environ 5 à 10 minutes avant que les statistiques ne fonctionnent.
Erreurs de commentaires TikTok
Code 288 — TikTok Comment Deferred / Post Still Processing (HTTP 400) TikTok traite les vidéos de manière asynchrone, de sorte que l’id d’une publication récemment publiée est "pending" jusqu’à ce que le webhook post.publish.publicly_available de TikTok résolve le véritable id de vidéo. Une requête get-comments, commentaire ou réponse contre une publication encore en cours de traitement (ou dont l’id est "failed") est refusée avant tout appel à TikTok et renvoie le code 288 au lieu d’un échec générique.
tikTokPublished Scheduled Action ou interrogez /history jusqu’à ce que l’id de la publication soit l’id numérique de vidéo résolu. Un first comment est publié automatiquement une fois la publication résolue, il n’a donc pas besoin d’être réessayé. Pour une publication "failed", le message indique à la place que la vidéo n’a pas pu être publiée et que l’action ne sera pas exécutée.
Traduction du message d’erreur
Le message d’erreur renvoyé par l’API peut être automatiquement traduit dans la langue de votre choix. C’est utile si vous souhaitez afficher l’erreur directement à votre utilisateur dans sa langue préférée. Voir ici si vous souhaitez choisir la langue de la page de connexion sociale. Dans l’en-tête, incluez :Language_Code est l’un des codes de langue disponibles.
Par exemple, ce qui suit traduira l’erreur en français.
