You can create posts with text attachments using the Threads API. Text attachments allow you to share long-form writing in a post or a reply with up to 10,000 characters and a link. They can also include emojis and style formatting.
Starting December 22, 2025, 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.
How links are counted:
text field are counted as links.link_attachment_url field under the text_attachment field contains a URL that is different from all URLs in the text field, it is counted as an additional link.link_attachment_url field under the text_attachment field is the same as any URL in the text field, it is only counted once, rather than twice.Examples:
text field contains only www.facebook.com, and the link_attachment_url is also www.facebook.com, this counts as 1 link.text field contains www.instagram.com and www.threads.com, and the link_attachment_url is www.facebook.com, this counts as 3 links.text field contains www.example.com, www.example.com, and www.test.com, and the link_attachment_url is www.test.com, this counts as 2 links (www.example.com and www.test.com are each counted once).If you receive this error, reduce the number of unique links in your post to 5 or less.
You can add a text attachment to a post by making a request to the POST /{threads-user-id}/threads endpoint to create a media container with the text_attachment JSON object.
| Name | Description |
|---|---|
string | Required. |
URL | Optional. |
string | Optional. Values: Note: The text styling info ranges within the Available text styles:
|
curl -i -X POST \
-d "media_type=TEXT" \
-d "text=<TEXT>" \
-d "access_token=<ACCESS_TOKEN>" \
-d "text_attachment=
{
"plaintext": "Lengthy plain text for the text attachment.",
"link_attachment_url": "<LINK_URL>",
"text_with_styling_info":[
{
"offset": 0,
"length": 7,
"styling_info":["bold","italic"]
},
{
"offset": 7,
"length": 10,
"styling_info":["highlight"]
}]
}" \
"https://graph.threads.net/v1.0/<THREADS_USER_ID>/threads"
{
"id": "<THREADS_MEDIA_CONTAINER_ID>"
}
You can publish using the returned Threads media container ID to create your Threads post with a text attachment.
Make a request to the GET /{threads-user-id}/threads or GET /{threads-media-id} endpoint with the text_attachment field to retrieve any media object(s) with text attachments.
| Name | Description |
|---|---|
| The text attachment for the post. |
curl -i -X GET \ -d "access_token=<ACCESS_TOKEN>" \ -d "fields=id,text_attachment" \ "https://graph.threads.net/v1.0/<THREADS_MEDIA_ID>
{
"id": "<THREADS_MEDIA_ID>",
"text_attachment": {
"plaintext": "Lengthy plaintext for the text attachment.",
"link_attachment_url": "<LINK_URL>",
"text_with_styling_info": [
{
"offset": 0,
"length": 7,
"styling_info":["bold","italic"]
},
{
"offset": 7,
"length": 10,
"styling_info":["highlight"]
}]
}
}