TL;DR, Réponse Rapide
9 min de lectureMeta plafonne les posts texte de Threads à 500 caractères et compte les emojis en octets UTF-8. Un sujet peut être attaché de deux façons : le paramètre topic_tag, qui se trouve en dehors du champ text et qui est plafonné de 1 à 50 caractères, ou un tag dans le texte qui commence par un croisillon, qui vit à l'intérieur de text et dépense donc les 500. Meta n'indique pas si la valeur d'un topic_tag compte dans la limite du post.
À quoi s'applique la limite de 500 caractères de l'API Threads ?
Meta cantonne la limite de 500 caractères de l'API Threads au paramètre text d'un conteneur média, et garde topic_tag comme paramètre séparé avec son propre plafond de 50 caractères. Le plafond apparaît en une seule puce sous Limitations dans la section Single Thread Posts : « Text posts are limited to 500 characters. » La page de présentation de Threads répète la même phrase mot pour mot sous Other Limitations.
Aucune des deux pages n'attache un nom de champ à cette phrase. Le point de terminaison de conteneur accepte text sur les types de média TEXT, IMAGE, VIDEO et CAROUSEL, et la puce des 500 se trouve sous un titre qui parle de posts texte, Meta laisse donc ouverte la question de savoir si la légende d'un post image reçoit le même plafond. Aucun second nombre n'apparaît nulle part dans la documentation Threads, ce qui fait de 500 le seul plafond sur lequel une intégration peut compter pour n'importe quelle valeur de text.
La règle de comptage attachée à cette puce est la partie que la plupart des compteurs de caractères se ratent : « Emojis are counted as the number of UTF-8 bytes. » Un emoji famille de quatre personnes coûte 25 sur les 500 plutôt que 1, ce qui est traité en entier dans pourquoi la limite de caractères de Threads compte les emojis en octets UTF-8.
topic_tag compte-t-il dans les 500 ?
Meta ne le dit pas. Le paramètre topic_tag est documenté dans sa propre sous-section avec sa propre contrainte, « Topic tags must be at least 1 character and no more than 50 characters long », et rien sur le guide des posts ni sur la référence de publication ne relie cette valeur à la limite de caractères du post.
Ce que la documentation établit, en revanche, c'est où chaque chose vit. topic_tag est un champ de formulaire séparé sur POST /{threads-user-id}/threads, envoyé à côté de text :
curl -i -X POST \
-d "media_type=TEXT" \
-d "text=<TEXT>" \
-d "access_token=<ACCESS_TOKEN>" \
-d "topic_tag=<TAG>" \
"https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads"Un tag dans le texte est le cas inverse et n'a besoin d'aucun arbitrage de Meta, parce que le tag fait partie de la chaîne que vous mettez dans text. Chaque caractère de #socialmedia est un caractère du post, un tag dans le texte dépense donc les 500 par construction. Cette asymétrie est la raison pratique de préférer le paramètre : le tag dans le texte est une dépense documentée sur les 500, alors que le paramètre reste une question ouverte.

Quelle est la différence entre topic_tag et un tag dans le texte ?
Meta prend en charge les deux et en marque un comme hérité. La méthode dans le texte porte un avertissement explicite dans la documentation : « This method is not preferred but is kept for backwards compatability. »
Paramètre topic_tag | Tag dans le texte | |
|---|---|---|
| Où il vit | Son propre champ de formulaire | À l'intérieur de text |
| Règle de longueur | 1 à 50 caractères | 1 à 50 caractères |
| Croisillon | Non utilisé | Requis pour commencer le tag |
| Dépense les 500 | Meta ne le dit pas | Oui, chaque caractère |
| Statut dans la documentation de Meta | Courant | « not preferred but is kept for backwards compatability » |
Une règle s'applique aux deux voies : « Only one topic tag is allowed per post, so the first valid tag included in a post of any type (text-only, image, video, carousel) via the API is treated as the tag for that post. » Les mots supplémentaires précédés d'un croisillon dans le corps ne deviennent pas des sujets supplémentaires, et ils coûtent quand même des caractères.
Les deux pages de documentation ne vous en disent pas non plus autant l'une que l'autre. Le guide des posts énonce la fourchette de 1 à 50 caractères pour les topic tags. La référence POST /{threads-user-id}/threads liste topic_tag avec seulement les caractères interdits et aucune règle de longueur, un développeur qui ne lit que la référence ne voit donc jamais les 50.
Quels caractères sont interdits dans un topic tag Threads ?
Les deux voies ont des listes d'interdits différentes, et celle du tag dans le texte est bien plus longue. Pour le paramètre, Meta interdit deux caractères : les points et les esperluettes. Pour un tag dans le texte, Meta dit « any in-text tag that starts with a hash sign will end just before these characters » puis donne l'ensemble complet.
| Voie | Caractères qui ne sont pas autorisés |
|---|---|
Paramètre topic_tag | Points (.), esperluettes (&) |
| Tag dans le texte | Espaces, tabulations, retours à la ligne, points (.), esperluettes (&), arobases (@), points d'exclamation (!), points d'interrogation (?), virgules (,), points-virgules (;), deux-points (:) |
Une règle séparée tue les tags numériques : « Whole numbers that are preceded by a hash sign (i.e., #1) will not be converted into a tag. This is because it is assumed that # is signifying a number sign in this scenario. » Meta note aussi que « The text is also configured in the app without the hash sign », le croisillon est donc du balisage pour l'API plutôt qu'une partie du sujet.
La conséquence pratique est une troncature silencieuse. Écrire #social media dans text produit le sujet « social » et laisse le mot « media » en texte brut, sans erreur ni avertissement. Envoyer social media comme topic_tag garde toute l'expression.
Quels autres champs de texte l'API Threads plafonne-t-elle ?
Quatre limites différentes régissent ce qui entre dans un post Threads, et une seule d'entre elles est celle des 500. Les confondre est la cause habituelle d'un conteneur qui échoue à la création pour des raisons que le compteur de caractères n'a jamais prévues.
| Champ | Limite | Où Meta l'énonce |
|---|---|---|
text | 500 caractères, emojis comptés en octets UTF-8 | Guide des posts, Limitations sous Single Thread Posts |
topic_tag | 1 à 50 caractères | Guide des posts, Topic Tags |
alt_text | 1 000 caractères | Référence de publication, POST /{threads-user-id}/threads |
| Liens dans un post | 5 ou moins | Guide des posts, Links |
La règle des liens est la seule avec une chaîne d'échec documentée. À partir du 22 décembre 2025, Meta indique que « Threads posts containing more than 5 links will fail to post during the media creation step (POST /{threads-user-id}/threads) with the error code: THREADS_API__LINK_LIMIT_EXCEEDED. » Les liens sont comptés après déduplication : une URL répétée dans text compte une fois, et un link_attachment qui correspond à une URL déjà présente dans text « is only counted once, rather than twice ».
AdaptlyPost
Commencez votre essai gratuit de 7 jours
Analyses multiplateforme
Boîte sociale
Assistant IA
Rien de comparable n'existe pour les 500. L'index de l'API Reference de Threads ne porte aucune page de codes d'erreur, et la page de dépannage ne documente que les valeurs de status d'un conteneur et les valeurs vidéo d'error_message, un text trop long n'a donc aucune constante d'erreur publiée à intercepter.
Que se passe-t-il si text dépasse 500 ?
Meta documente la limite et pas la réponse, le seul geste fiable est donc de mesurer avant d'envoyer. Comme les emojis sont comptés en octets UTF-8 plutôt qu'en caractères, la mesure doit porter sur la chaîne encodée. Un String.length JavaScript de 475 peut faire 517 octets une fois quelques emojis à l'intérieur, ce qui est exactement le mode d'échec décrit sur la page de la limite de caractères de Threads.
La même question du comptage en octets revient sur chaque réseau qui stocke le texte des posts en UTF-8, y compris dans la façon dont les facettes Bluesky indexent les liens par byteStart et byteEnd plutôt que par position de caractère. Toute intégration qui publie sur plus d'un réseau a besoin d'un seul compteur exact en octets, et non d'un par plateforme.

Qu'est-ce que cela change pour les posts Threads programmés ?
Un planificateur compose le conteneur bien avant l'appel de publication, les 500 doivent donc être appliqués au moment du brouillon plutôt qu'au moment de l'envoi. Deux vérifications couvrent l'essentiel : compter text en octets UTF-8, et déplacer les sujets dans topic_tag au lieu du corps quand le post approche du plafond.
La contrainte côté publication est distincte, puisque Threads plafonne aussi un profil à 250 posts publiés par l'API sur une période mobile de 24 heures. Les limites de caractères rejettent un conteneur à la création, les limites de quota le rejettent à la publication, ce sont deux échecs différents à anticiper. Pour les équipes qui planifient Threads à côté d'autres réseaux, la page outil de planification Threads explique comment AdaptlyPost se connecte via l'API officielle.
Questions fréquentes
La limite de 500 caractères de l'API Threads est-elle la même que celle de l'app Threads ?
Le chiffre de 500 que Meta publie pour l'API correspond au nombre que Threads affiche dans son propre éditeur, et Meta ne documente la règle des emojis comptés en octets que dans la documentation de l'API. Les pages de l'API sont celles qui énoncent la règle avec précision, traitez-les donc comme la spécification pour tout ce que vous construisez.
Un post Threads peut-il avoir plus d'un topic tag ?
Non. Meta indique que « Only one topic tag is allowed per post », et que le premier tag valide d'un post de n'importe quel type est celui qui est retenu. Les autres mots précédés d'un croisillon restent du texte brut dans text et comptent toujours dans les 500.
Le croisillon compte-t-il comme un caractère dans un tag écrit dans le texte ?
Un tag dans le texte vit à l'intérieur de la valeur text, chacun de ses caractères compte donc, croisillon compris. Meta note que le sujet lui-même est stocké sans le croisillon : « The text is also configured in the app without the hash sign. »
Pourquoi mon topic tag est-il coupé en plein milieu ?
Un tag dans le texte s'arrête au premier caractère de la liste d'interdits de Meta, qui comprend les espaces, les points, les esperluettes, les arobases, les points d'exclamation, les points d'interrogation, les virgules, les points-virgules et les deux-points. Un sujet en plusieurs mots écrit dans le corps devient donc un tag d'un seul mot. Envoyez-le plutôt via le paramètre topic_tag, où les espaces ne sont pas sur la liste d'interdits.
Quelle longueur peut faire le texte alternatif sur Threads ?
1 000 caractères. Meta donne le nombre dans la référence POST /{threads-user-id}/threads : « The maximum length of alt_text is 1 000 characters. » Ce budget est séparé des 500 de text.
Où Meta documente-t-il la limite de 500 caractères ?
À deux endroits, avec une formulation identique. Le guide des posts à developers.facebook.com/documentation/threads/posts porte « Text posts are limited to 500 characters. » sous Limitations dans la section Single Thread Posts, et la page de présentation à developers.facebook.com/documentation/threads/overview la répète sous Other Limitations. La règle du comptage des emojis en octets se trouve juste à côté sur le guide des posts.
topic_tag est-il compté en octets UTF-8 comme text ?
Meta énonce la règle des octets UTF-8 seulement pour le champ text, liée à la limite de 500. La section sur topic_tag donne une plage de 1 à 50 caractères sans mentionner les octets, donc rien n'indique si un tag chargé en emoji compte en octets ou en caractères. Tant que Meta ne dit pas autrement, mieux vaut traiter ce 50 comme des caractères, l'unité que la documentation utilise réellement ailleurs.
Que se passe-t-il si un post Threads contient plus de 5 liens ?
Le container échoue dès la création. Meta indique que l'erreur survient à l'étape de création du média, POST /{threads-user-id}/threads, avec le code THREADS_API__LINK_LIMIT_EXCEEDED. C'est la seule limite de la page avec une chaîne d'erreur documentée, contrairement aux 500 sur text.
Un lien répété compte-t-il deux fois pour la limite de 5 ?
Il compte une seule fois. Meta compte les liens après déduplication, une même URL répétée dans text compte donc pour un lien, et un link_attachment qui correspond à une URL déjà présente dans text "n'est compté qu'une fois, pas deux". Cinq liens uniques restent le plafond.
AdaptlyPost
Commencez votre essai gratuit de 7 jours
Analyses multiplateforme
Boîte sociale
Assistant IA
topic_tag fonctionne-t-il sur un post image ou vidéo, pas seulement sur un post texte ?
Oui, la règle couvre tous les types de média. Meta précise que le premier tag valide dans "a post of any type (text-only, image, video, carousel)" devient le tag de ce post, donc topic_tag marche de la même façon, que le container porte une image, une vidéo ou un carrousel.
Mettez cela en pratique avec AdaptlyPost
Cet article vous a-t-il été utile ?
Dites-nous ce que vous en pensez !
Nous voir plus souvent sur Google
Un clic définit AdaptlyPost comme source préférée. Nos articles remontent alors dans vos À la une, en mode IA et dans les aperçus IA.
Avant de partir...
AdaptlyPost
Planifiez vos contenus sur toutes les plateformes
Gérez tous vos comptes de réseaux sociaux en un seul endroit avec AdaptlyPost.
Analyses multiplateforme
Boîte sociale
Assistant IA
Termes connexes du glossaire


Comment fonctionne le maximum d'éléments d'un carrousel de l'API Threads
Meta fixe le maximum d'éléments d'un carrousel de l'API Threads à 20 enfants, minimum 2. Voici le flux de conteneurs et ce que renvoie un mauvais appel.


Comment fonctionne la limite de 250 posts par jour de l'API Threads
Meta applique la limite de 250 posts par jour de l'API Threads en fenêtre mobile de 24 heures. Un carrousel compte une fois et un endpoint dit ce qui reste.


Ce que devient un Threads ghost post après 24 heures
Un Threads ghost post est une publication texte que Meta archive après 24 heures. Les réponses peuvent arriver en messages et l'API pose is_ghost_post=true.
Articles Connexes


Pourquoi la limite de caractères de Threads compte les emojis en octets UTF-8
Le plafond est de 500, mais la limite de caractères de Threads mesure chaque emoji en octets UTF-8 : un emoji famille coûte 25. Comment compter juste.


Pourquoi la vérification de domaine pull_from_url de l'API TikTok rejette votre hôte
La vérification de domaine pull_from_url de l'API TikTok est un contrôle DNS sur l'hôte envoyé. Sans elle, chaque appel init renvoie url_ownership_unverified.


Derrière l'étiquette IA de TikTok se cachent deux étiquettes
L'étiquette IA de TikTok existe en deux versions : celle que vous posez avec is_aigc, et celle que TikTok ajoute via ses effets ou C2PA, impossible à retirer.

