Threads Ads

Some updates to Threads Ads may not be available to all users yet.

To run ads on Threads, you need a Threads account ID. You have two options for obtaining one:

  • Instagram-associated Threads account: A Threads account has an associated Instagram account with a matching username in the same Business Portfolio.
    • Note: Businesses with an Instagram-associated Threads account created before January 29, 2026, will have their Threads account automatically added to their Business Portfolio with the same user access and permissions managed from the Instagram account. Developers can continue to use the same Instagram-associated Threads account IDs as they were using prior to January 29, 2026. New Threads accounts created after January 29, 2026, will need to be manually added to the Business Portfolio and managed like other account types.
  • Instagram-backed Threads account: An Instagram account runs ads on behalf of a Threads account created for that purpose.

Make sure your Instagram account has the proper setup for Instagram ads.

Limitations

  • You cannot run ads on Threads without an Instagram-associated or Instagram-backed Threads account, and you cannot run ads on Threads if the associated Instagram account cannot run ads on Instagram.
  • You need to have at least an Advertiser role on the Page that is linked to your Instagram account; Manager or Content Creator roles also work. Or you need to have the Instagram account connected to a business account where you have the appropriate roles.
  • An Instagram account can have a link to only one Threads account (Instagram-associated Threads account) in the Business Portfolio, as well as only one Instagram-backed Threads account. Verify whether a specific Instagram account has an Instagram-associated Threads account or an Instagram-backed Threads account before attempting to create a new one. If an account of the type you want to use already exists, use that one.
  • We are keeping the volume of ads in Threads intentionally low as we test and learn, therefore expect that delivery to Threads will be low. You will see this reflected in your placement breakdown reporting if your campaign delivers on Threads.
  • Threads ads creation only supports images, videos and carousel as the media format.
  • Ads cannot be created from an existing Threads post.

Instagram-associated Threads accounts

Permissions

To make API calls with an Instagram-associated Threads account you need a user access token with the following permissions:

  • instagram_basic
  • threads_business_basic
  • pages_read_engagement

If the app user was granted a role via the Business Manager on the Page connected to your app user's Instagram professional account, your app will also need one of:

  • ads_management
  • ads_read

Note: Anyone with access to create Instagram ads from the Instagram account can create Threads ads from the Instagram-associated Threads account.

Before you begin

You need the following:

  • A business with the proper setup for Instagram ads advertiser identities.
  • An Instagram account with a profile image that is not a Private Account and has the appropriate advertiser permissions (See How do I connect my Facebook Page and Instagram account?).
  • A Threads account associated with an Instagram account through a matching username in the same Business Portfolio. You can set this up by following the Threads Business Portfolio Instructions. Businesses with an Instagram-associated Threads account created before January 29, 2026, will have their Threads account automatically added to their Business Portfolio with the same user access and permissions managed from the Instagram account. New Threads accounts created after January 29, 2026, will need to be manually added to the Business Portfolio and managed like other account types.

Get the Instagram-associated Threads account ID

Once you connect an Threads account to a valid Instagram account, you can call the /<IG_USER_ID>/connected_threads_user endpoint to get the Threads account ID.

Example request

curl -G \
  -d "access_token=<ACCESS_TOKEN>"\
  -d "fields=threads_user_id" \
"https://graph.facebook.com/v24.0/<IG_USER_ID>/connected_threads_user"

The result should be a Threads account object containing only the threads_user_id. Save this threads_user_id to use in your ads.

Instagram-backed Threads accounts

If you don't have a Threads profile, you can still create and deliver ads in Threads using an Instagram-backed Threads account.

These accounts are created with the API and function as if you are running ads for a Threads account, however a mock Threads account is created specifically to run those ads.

You cannot log into Threads accounts created this way to manage posts.

Create an Instagram-backed Threads account

You can create an Instagram-backed Threads account by sending a POST request to the /<IG_USER_ID>/instagram_backed_threads_user endpoint.

Example request

curl \
  -F "access_token=<ACCESS_TOKEN>"\
"https://graph.facebook.com/v24.0/<IG_USER_ID>/instagram_backed_threads_user"

This returns a Threads account ID on success. If an Instagram account already has a Instagram-backed Threads account, the call returns the existing Instagram-backed Threads account ID. Save the returned ID to run your ads.

Get the Instagram-backed Threads account ID

To see if an Instagram account has an Instagram-backed Threads account, send a GET request to the /<IG_USER_ID>/instagram_backed_threads_user endpoint.

Example request

curl -G \
  -d "access_token=<ACCESS_TOKEN>"\
  -d "fields=threads_user_id" \
"https://graph.facebook.com/v24.0/<IG_USER_ID>/instagram_backed_threads_user"

This returns a Threads account object, if there is one. The object includes a threads_user_id that can be used to run Threads ads. If there is no Instagram-backed Threads account already set up, the API returns an empty response.

Ad Creatives with Threads Accounts

Using Instagram-associated Threads accounts in ads

You can use any ad account, either owned by an individual or by a business, as long as you have access, to create ads for Instagram-associated Threads accounts.

When creating an ad creative, you should provide the threads_user_id and the instagram_user_id . The instagram_user_id of your ad creative must be for the Instagram account associated with this Threads account and with the matching username in your Business Portfolio. Businesses with an Instagram-associated Threads account created before January 29, 2026, will have their Threads account automatically added to their Business Portfolio with the same user access and permissions managed from the Instagram account. Developers can continue to use the same Instagram-associated Threads account IDs as they were using prior to January 29, 2026. New Threads accounts created after January 29, 2026, will need to be manually added to the Business Portfolio and managed like other account types.

Using Instagram-backed Threads accounts in ads

You do not need to assign ad accounts to the Instagram-backed Threads account. When you provide an ad creative using a Instagram-backed Threads account, you can use any ad accounts that you have access to.

Once an Instagram-backed Threads account is created, you can use its ID as the threads_user_id in your ad creative, as you do with other types of Instagram accounts. The instagram_user_id of your ad creative must be for the Instagram account associated with this Instagram-backed Threads account.

Examples

While the instagram_user_id must be included in the object_story_spec field, the threads_user_id can be included either in the object_story_spec field or on a higher level of the API call.

Included in the object_story_spec field

curl -X POST \
  -F {
    "name": "test",
    "object_story_spec": {
      "link_data": {
        "link": "<LINK_URL>",
        "call_to_action": {
          "type": "WATCH_MORE",
          "value": {}
        },
        "message": "<MESSAGE_TEXT>",
        "image_hash": "<IMAGE_HASH>"
      },
      "instagram_user_id": "<IG_USER_ID>",
      "threads_user_id": "<THREADS_USER_ID>",
      "page_id": "<PAGE_ID>"
    }
  } \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/adcreatives

Included at a higher level

curl -X POST \
  - F {
    "name": "test",
    "object_story_spec": {
      "link_data": {
        "link": "<LINK_URL>",
        "call_to_action": {
          "type": "WATCH_MORE",
          "value": {}
        },
        "message": "<MESSAGE_TEXT>",
        "image_hash": "<IMAGE_HASH>"
      },
      "instagram_user_id": "<IG_USER_ID>",
      "page_id": "<PAGE_ID>"
    },
    "threads_user_id": "<THREADS_USER_ID>"
  } \
https://graph.facebook.com/v24.0/act_<AD_ACCOUNT_ID>/adcreatives