> ## Documentation Index
> Fetch the complete documentation index at: https://www.ayrshare.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Robot d'exploration Meta bloqué (Instagram / Threads)

> Corrigez l'erreur 479 quand robots.txt ou un WAF bloque le crawler facebookexternalhit de Meta sur vos médias Instagram ou Threads, puis testez avec curl.

Le code d'erreur **479** est le code Ayrshare dédié et **non relançable** retourné lorsque Meta ne peut pas récupérer l'URL de votre média, le plus souvent parce que `robots.txt` ou une règle de blocage de bots sur votre serveur refuse l'accès au robot d'exploration (`facebookexternalhit`). Il n'est retourné qu'après l'échec du mécanisme de secours automatique d'Ayrshare, qui réhéberge le média : cela indique fortement un blocage côté hébergeur ou une source inaccessible.

Lorsqu'Ayrshare publie sur Instagram ou Threads, il ne se contente pas de transmettre votre URL à Meta puis d'abandonner. Ayrshare relance automatiquement la récupération et, si Meta ne parvient toujours pas à atteindre le média, **réhéberge une copie sur son propre CDN** et demande à Meta de récupérer celle-ci à la place. Le code **479** signifie que même ce mécanisme de secours n'a pas permis à Meta de récupérer le média : relancer la même requête n'aidera donc pas tant que le problème d'hébergement sous-jacent n'est pas corrigé (`retryAvailable: false`, HTTP 400).

> [!NOTE]
>
> Cette page couvre les échecs dont le message d'erreur ou les détails mentionnent que le réseau social n'a pas pu télécharger le média, faisant généralement référence à `facebookexternalhit`, `robots.txt`, `"Restricted by robots.txt"`, `"HTTP error code 403"`, ou au sous-code Meta `2207052`. Pour les erreurs de rapport d'aspect ou de format sur le code Instagram 138, consultez plutôt les [directives média Instagram](https://www.ayrshare.com/docs/media-guidelines/instagram.md) ou les [directives média Threads](https://www.ayrshare.com/docs/media-guidelines/threads.md).

## Symptôme

Lorsque le robot d'exploration est bloqué, vous verrez des erreurs comme celles-ci :

```json Erreur 479 (principale, dédiée, non relançable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 479,
    "retryAvailable": false,
    "message": "The social network could not fetch the media from this URL, even after Ayrshare re-hosted it on its own CDN (Instagram/Meta subcode 2207052). Ensure the file is publicly reachable by Meta's crawlers (facebookexternalhit / Facebot) — check your robots.txt and any WAF/bot rules — not only in a browser. Retrying the same URL will not help until hosting is fixed.",
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Restricted by robots.txt (HTTP error code 403). Meta subcode 2207052.",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Erreur 440 (ingestion transitoire, relançable) theme={"system"}
{
  "status": "error",
  "errors": [{
    "action": "post",
    "code": 440,
    "retryAvailable": true,
    "message": "The social network could not ingest the media in time. This is usually transient (for example Meta subcode 2207032 'download too slow' or 2207003 'create media fail'). Retry the post.",
    "details": "Media download has failed.: Media download took too long / could not create media...",
    "platform": "instagram",
    "status": "error"
  }],
  "postIds": [],
  "id": "..."
}
```

```json Erreur Instagram 138 (secours — réponse en amont moins spécifique) theme={"system"}
{
  "status": "error",
  "errors": [{
    "retryAvailable": true,
    "status": "error",
    "code": 138,
    "details": "Media download has failed.: The media could not be fetched from the provided URI. Video download failed with: HTTP error code 403. Restricted by robots.txt",
    "action": "post",
    "platform": "instagram",
    "message": "Instagram Error: Instagram cannot process your post at this time. Please try your post again."
  }],
  "postIds": [],
  "id": "..."
}
```

```json Erreur Threads 379 theme={"system"}
{
  "status": "error",
  "errors": [{
    "status": "error",
    "code": 379,
    "message": "Error posting to Threads.",
    "action": "post",
    "platform": "threads"
  }],
  "postIds": [],
  "id": "..."
}
```

> [!NOTE]
>
> Comprendre la répartition entre ces codes :
>
> <ul>
>   <li>**Code 479 : échec dédié de récupération du média / blocage du robot d'exploration (non relançable).** C'est le code de l'échec traité par cette page. Il est retourné avec `retryAvailable: false` lorsque Meta n'a pas pu récupérer le média (sous-code `2207052` ou motif textuel d'échec de récupération du média) **même après qu'Ayrshare l'a réhébergé sur son propre CDN**. Son message nomme explicitement `facebookexternalhit` / `Facebot` et `robots.txt` : si vous voyez 479, vous êtes sur la bonne page. Corrigez l'hébergement avant de relancer.</li>
>   <li>**Code 440 : ingestion transitoire (relançable).** Désormais utilisé pour les épuisements d'ingestion réellement transitoires : sous-codes Meta `2207032` (« download too slow ») / `2207003` (« create media fail »), ou épuisement non classifié. Il porte `retryAvailable: true` ; relancez via [`/post/retry`](https://www.ayrshare.com/docs/apis/post/retry-post).</li>
>   <li>**Code 138 : secours Instagram moins spécifique.** Émis pour la même cause fondamentale lorsque la réponse en amont est moins spécifique. 138 est également utilisé pour les problèmes de rapport d'aspect / format, la variante d'échec de récupération de média est donc identifiable par `"Restricted by robots.txt"` ou `"HTTP error code 403"` dans `details`.</li>
>   <li>**Code 379 : Threads.** N'inclut pas de champ `details`. Si Threads échoue en même temps qu'un Instagram 479 ou 138, la cause profonde est généralement la même.</li>
> </ul>

## Pourquoi cela se produit-il

Lorsque vous publiez sur Instagram ou Threads via Ayrshare, les serveurs de Meta récupèrent votre média à partir de l'URL que vous fournissez. Cette récupération côté serveur utilise le User-Agent `facebookexternalhit`. Si le `robots.txt` de votre serveur interdit ce robot — ou si une règle WAF/protection contre les bots le bloque — Meta ne peut pas télécharger le fichier et la publication échoue.

La publication sur les pages Facebook utilise un chemin d'ingestion différent, c'est pourquoi la même `mediaUrl` peut fonctionner pour Facebook mais échouer pour Instagram et Threads.

## Correction : mettez à jour votre robots.txt

### Recommandé : autoriser Meta explicitement, garder les autres ouverts

Ajoutez ces règles à votre fichier `robots.txt` :

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: *
Allow: /
```

Cela autorise explicitement le robot de Meta tout en laissant votre site ouvert aux autres robots (Google, Bing, etc.).

### Avancé : verrouiller uniquement aux éditeurs sociaux

Si vous souhaitez bloquer la plupart des robots mais autoriser les plateformes de réseaux sociaux :

```txt robots.txt theme={"system"}
User-agent: facebookexternalhit
Allow: /

User-agent: Twitterbot
Allow: /

User-agent: LinkedInBot
Allow: /

User-agent: Pinterest
Allow: /

User-agent: *
Disallow: /
```

> [!WARNING]
>
> Utilisez un seul bloc `User-agent: *`, placé à la fin du fichier. Les robots conformes à la RFC 9309 fusionnent plusieurs groupes génériques en un seul, mais tous les analyseurs en circulation ne sont pas conformes à la RFC — les groupes génériques dupliqués sont une source courante de règles supprimées ou appliquées de manière incohérente.

## Vérifiez que Meta peut récupérer votre URL

Avant de relancer votre publication, vérifiez que le robot de Meta peut désormais accéder à votre média. Exécutez cette commande, en remplaçant `$URL` par l'URL complète de votre média :

```bash theme={"system"}
curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" \
  -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" \
  "$URL"
```

<ul>
  <li>**Réponse saine :** HTTP 200 ou 206 avec des données binaires dans le corps.</li>
  <li>**Réponse bloquée :** HTTP 403 ou une page d'erreur vide/HTML.</li>
</ul>

> [!NOTE]
>
> Selon la documentation de Meta, les modifications de `robots.txt` peuvent prendre jusqu'à 24 heures pour se propager dans le cache du robot de Meta. Si la vérification réussit mais que votre publication échoue toujours, attendez et réessayez plus tard.

## Si cela ne résout pas le problème

Si vous avez mis à jour `robots.txt` et vérifié avec la commande `curl` mais que vous voyez toujours des échecs :

<ul>
  <li>**Délai de propagation de 24 heures** — Meta met en cache `robots.txt`. Attendez jusqu'à 24 heures après avoir effectué des modifications avant de réessayer.</li>
  <li>**Règles WAF ou anti-bots** — Cloudflare Bot Fight Mode, les groupes de règles de bot gérés par AWS WAF et les services similaires peuvent bloquer les plages IP du robot de Meta même si `robots.txt` l'autorise. Vérifiez vos journaux WAF et ajoutez une exception pour `facebookexternalhit`.</li>
  <li>**Protection contre le hotlink / vérifications du Referer** — Certains CDN bloquent les requêtes provenant d'IP de datacenter ou sans en-tête `Referer` valide. Mettez en liste blanche le robot de Meta ou désactivez la protection contre le hotlink pour les chemins de médias.</li>
  <li>**Expiration d'URL signée / URL présignée** — Si votre URL média a un horodatage d'expiration (courant avec les URL présignées S3), assurez-vous qu'elle n'expire pas avant que le robot de Meta puisse la récupérer. Pour les publications planifiées, générez des URL qui restent valides bien après l'heure planifiée.</li>
  <li>**Hébergement de médias géré** — Si vous utilisez un service comme Cloudinary, Imgix ou similaire où vous ne pouvez pas modifier `robots.txt`, consultez leur documentation pour un paramètre d'autorisation du robot Meta/Facebook.</li>
</ul>

Si aucune de ces solutions ne résout le problème, [contactez le support Ayrshare](https://www.ayrshare.com/contact) et incluez :

* Le `postId` défaillant de la réponse d'erreur
* La sortie de la commande de vérification `curl` ci-dessus
* Le contenu de votre `robots.txt`

## Relancer une publication échouée

Le comportement de relance dépend du code reçu :

<ul>
  <li>**Code 440 (transitoire, `retryAvailable: true`)** : l'ingestion a simplement manqué de temps ou a rencontré une erreur Meta temporaire. Relancez directement à l'aide du [point de terminaison Retry Post](https://www.ayrshare.com/docs/apis/post/retry-post.md) ; aucune modification de votre hébergement n'est nécessaire.</li>
  <li>**Code 479 (`retryAvailable: false`)** : Meta n'a pas pu récupérer le média même après qu'Ayrshare l'a réhébergé sur son propre CDN, donc relancer avec la même URL bloquée échouera à nouveau. **Corrigez d'abord l'hébergement** : autorisez les robots d'exploration de Meta (`facebookexternalhit` / `Facebot`) dans `robots.txt` et dans votre WAF, ou réhébergez le média sur un CDN accessible par Meta. Vérifiez avec la commande `curl` ci-dessus, puis relancez via le [point de terminaison Retry Post](https://www.ayrshare.com/docs/apis/post/retry-post.md).</li>
</ul>

## Voir aussi

<ul>
  <li>[API Instagram](https://www.ayrshare.com/docs/apis/post/social-networks/instagram.md)</li>
  <li>[API Threads](https://www.ayrshare.com/docs/apis/post/social-networks/threads.md)</li>
  <li>[Directives média Instagram](https://www.ayrshare.com/docs/media-guidelines/instagram.md)</li>
  <li>[Directives média Threads](https://www.ayrshare.com/docs/media-guidelines/threads.md)</li>
  <li>[Codes d'erreur Ayrshare](https://www.ayrshare.com/docs/errors/errors-ayrshare.md#media-fetch-crawler-access-errors)</li>
  <li>[Échec de publication vidéo](https://www.ayrshare.com/docs/help-center/technical-support/video-publishing-fails.md)</li>
</ul>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.