"Unpromoted" Tweets Via API Still Appear in Twitter UI


Twitter’s Ads API does not provide the ability to “pause” a Promoted Tweet (their visibility is instead controlled by parent Line Items). We saw this as an opportunity to introduce a valuable feature for users who organize their campaigns by promoting multiple tweets within a single Line Item and wish to manage their visibility.

We discovered that destroying a Promoted Tweet (effectively “unpromoting” the tweet), then creating it again within the same Line Item had the effect of “undeleting” the Promoted Tweet - it retained its original ID. This made it possible for us to synthesize “Running” and “Paused” statuses for Promoted Tweets by using the DELETE (https://dev.twitter.com/ads/reference/delete/accounts/%3Aaccount_id/promoted_tweets/%3Aid) and POST (https://dev.twitter.com/ads/reference/post/accounts/%3Aaccount_id/promoted_tweets) APIs to promote and unpromote a Tweet, while reporting its stats consistently across states.

After deletion, the API indicates that the tweet is no longer promoted, and the Twitter Ads UI’s Edit Campaign view indicates the same, but the UI’s List Campaigns view still shows the tweets. In fact, we’ve found that tweets unpromoted by using the DELETE API always appear in the List view.

We’ve run experimental campaigns to test and can verify that the deleted tweets do not spend, and are effectively unpromoted. It appears to be a bug in Twitter’s Ads UI, but we would appreciate some confirmation and clarity.


Hi @hyfn,

It does sound like a corner case that behaves as you expected. I will raise it to the product team.

Given that it is existing behavior, changes will have downstream impact, and it make take a while for us to either officially promote or correct this behavior.


Thanks @rchoi

I agree it’s a corner case but I disagree that it’s expected behavior. I would expect for deleted Promoted Tweets to not appear in the UI at all.


It’s a bit confusing, but “deleting” a promoted tweet in the API simply un-promotes it. We still surface these in our UI as they could have had spend, impressions and engagement.


True @jaakkosf. That’s why we store these promoted_tweets locally, store the data locally and surface them within our application. I assume this is the same procedure that Twitter does, just not publicly through the Ads API.