Tailored Audiences stuck "Processing"

tailored-audiences

#1

Hi, we can’t seem to get Tailored Audiences beyond the Processing step… some have been in that state for 2 weeks, others for days. In each case they are plenty large (2K-10K), we’ve never seen an error returned from the upload (headers are set, etc), and they appear as “Processing” from the ads web dashboard.
Since we can create and post the audiences and they show up, I’m assuming we have the permissions for the ta_partner bucket but there does not seem to be a way to confirm this per other posts on this site.
The app is 8105191
and the ads account is 18ce53y353p

Any help much appreciated. Thank you!


#2

I’m seeing the same issue. In our case it’s just audiences that were created a few days ago. We have 340 ‘audience change’ records for this account (over the past couple months), but the latest 3 have been stuck for days. Account id is 8lw2w

 { input_file_path: '/ta_partner/14458280/QPeWAeNGr7HANbJ.csv',
   tailored_audience_id: 'x2x5',
   state: 'PROCESSING',
   id: 'hpzw',
   operation: 'ADD' },
 { input_file_path: '/ta_partner/14458280/xlhwKwOIq3UIr7q.csv',
   tailored_audience_id: 'x2xd',
   state: 'PROCESSING',
   id: 'hq12',
   operation: 'ADD' },
 { input_file_path: '/ta_partner/14458280/rVM6ZRCjALpZ6Ge.csv',
   tailored_audience_id: 'x2x4',
   state: 'PROCESSING',
   id: 'hq13',
   operation: 'ADD' }

#3

@brainflake - any luck? we’re still having the same problem, very frustrating.


#4

@matt @brainflake when this occurred and these changes hung while processing, did you have more than 25 files in process at the same time?


#5

No, we have 6 stuck in processing. The account is 18ce53y353p if you’re able to take a peek. Thanks


#6

@brandonmblack hi, any chance to investigate this? Thanks much.


#7

Hi @matt I’m looking into this, but there’s really not a lot go on here. I don’t see anything obviously wrong with those lists.

Is the issue reproducible or just completely random for you?
For the lists that are stuck, what happened to them prior to them getting stuck?

There is a limit of 25 updates / per audience / per hour after which the system will ignore subsequent updates, but that doesn’t appear to be a factor here.

Can you give me more detail about every interaction you had with these lists prior to the issue occurring?


#8

Hi @brandonmblack - thanks for following up, we’re getting this result (stuck in processing) with every list we load - wholly reproducible. Nothing is happening to the lists before they get stuck, we load them normally per the instructions and cannot get beyond this state. There are zero updates beyond the initial load for all of them. We have taken a set of usernames, hashed them using SHA256, and uploaded them with the API. We can however take the exact same [SHA’ed] list and successfully upload it via the twitter ads web dashboard/audience manager - that works perfectly. Since there is no timeout or error status I don’t know what to do, they are just perpetually stuck - are there any known actions that trigger this condition? If there is a way we are manipulating or uploading the data that causes this state I don’t know how we can track it down without your help. I’m happy to provide any/all of our process, code or lists, but we’ve followed the instructions to the letter as far as we can tell. Any ideas very much appreciated. Thank you.


#9

Under the hood, both systems use the exact same pipeline. If it were a permission issue it would fail quickly rather than hanging while processing. It’s odd to me that the UI works and the same action through your app in the API doesn’t.

This seems like an interesting and potentially meaningful datapoint worth pursuing.

Can you provide a filtered snapshot of your request and respond logs to the API for one of these hung lists? I don’t need to TON upload responses, but from the point that you created the list with the path from the TON API onward I’d like to see every full HTTP request and response made.


#10

Using the ton-upload script from https://github.com/twitterdev/ton-upload and the following arguments results in the following (edited)

ton_upload -m upload -b ta_partner -f ~/twitterTests/audience_hashed.txt -t

POST https://ton.twitter.com/1.1/ton/bucket/ta_partner HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: text/plain\r\nContent-Length: 212745\r\nX-Ton-Expires: Mon, 26 Oct 2015 13:41:59 GMT\r\nAuthorization: OAuth oauth_body_hash=\"{REDACTED}\", oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445002919\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ton.twitter.com\r\n\r\n"
<- "1f9304bd3037d5a567bf167c4c21181aa44eaf9427e289dd372f4f201531b222\n{Data removed for brevity}"

-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-length: 0\r\n"
-> "content-type: text/plain\r\n"
-> "date: Fri, 16 Oct 2015 13:39:15 GMT\r\n"
-> "location: /1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt\r\n" 
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500275493230462; Domain=.twitter.com; Path=/;     Expires=Sun, 15-Oct-2017 13:39:15 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-connection-hash: e29c24d0abb965e3d46dce9f2fd3de40\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-rate-limit-limit: 50\r\n"
-> "x-rate-limit-remaining: 46\r\n"
-> "x-rate-limit-reset: 1445003596\r\n"
-> "x-response-time: 238\r\n"
-> "x-tsa-request-body-time: 358\r\n"
-> "\r\n"
reading 0 bytes...
-> ""
read 0 bytes
Conn close
File stored at /1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt

Next, via twurl we create the tailored audience:

twurl -H ads-api.twitter.com -X POST -d "name=audienceForDebug&list_type=TWITTER_ID" /0/accounts/jt1ks/tailored_audiences -t

trace follows (edited)

opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audiences HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445003887\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 42\r\n\r\n"
<- "name=audienceForDebug&list_type=TWITTER_ID"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 295\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 13:55:22 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500372266650009; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 13:55:22 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 8571adc04a798e34acba348fa405f84a\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445003782\r\n"
-> "x-response-time: 37\r\n"
-> "x-runtime: 0.026809\r\n"
-> "x-transaction: 65d0b1d2d2b6f075\r\n"
-> "x-tsa-request-body-time: 0\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 295 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00t\x90\xCDN\x840\x14\x85\xDF\xA5k&\x99\xA2\xB8\xE8\xCE\x00*\t#\x060\x1A'\xA6\xE9@\x9D\xA0\xA5\xC5\xFE\x98\x8C\x13\xDE\xDD[\f\xE8\x86\xDDm\xEEwN\xEF9g\xD42\xCB\xA8=\r\x1C\x11dY'\x94\xE6-e\xAE\xED\xB8l\xB8A\xC1\x04 r\x86\xA5>r\xCB\x0E\x02\xC87&\f\x0F\x90d\xBD\x97\xCD\xF4\x8D\xD2\t?\xB8#\x88\xFE\xE0\xC9\xDB \xB2Gq\xB9\x83M\xFA\x1C\xE7\x8FI\x9AP\xFF|\r\x16\xF1|\xC3/\xD5\xB50\x9Ez\xF3\x05\xB3\xE6\xCC(i\xA8T\x96\xFE?b\x8F\x1E\xCA\"N\xAB*\xBB\xBF\x05\xAC.\nZ\xED\xAE\xF3\xDC\xBB\x8A\xCE\xD8\xD9\xB1~\xCA\xEA:-i\x96\x00\xD5\x80\x9B\xF5\t-l\xC2-\x8E6x\xBB\xC1W5\xBE \xD1%\xC1\xF8\x05\x187\xB4\xABLD\xC2\xD03\x03\xD3VrM\x8Dr\xBA\xF1\xBF\x14\xF5]Z\xFA\xBA\xB8\xE0 ^:Z\xF2\x99\xEE\e8\xE9\x84\x18}\xA6O\xC7\x8D\xF5\xBD\x82\x13\xEB\x8D\x9FX\xD3('-\x9D\xC2\xBF[\xFC\xE1\xEB_\xEFx%\xE38\x8E?\x00\x00\x00\xFF\xFF\x03\x00\x03\xEE\x85\xF1\xD6\x01\x00\x00"
{"data_type":"tailored_audiences","data":{"targetable":false,"name":"audienceForDebug","targetable_types":["CRM","EXCLUDED_CRM"],"audience_type":"CRM","id":"ymsv","reasons_not_targetable":["PROCESSING","TOO_SMALL"],"list_type":"TWITTER_ID","created_at":"2015-10-16T13:54:11Z","updated_at":"2015-10-16T13:55:22Z","partner_source":"OTHER","deleted":false,"audience_size":null},"request":{"params":{"account_id":"jt1ks","name":"audienceForDebug","list_type":"TWITTER_ID"}}}read 295 bytes
Conn close

Adding the uploaded file to the new audience via twurl:

twurl -H ads-api.twitter.com -X POST -d "tailored_audience_id=ymsv&operation=ADD&input_file_path=/1.1/ton/data/ta_partner/33267772/yV_nGa0VBpmCbDv.txt" /0/accounts/jt1ks/tailored_audience_changes -t

results in: (edited)

opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audience_changes HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"{REDACTED}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445004296\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 121\r\n\r\n"
<- "tailored_audience_id=ymsv&operation=ADD&input_file_path=%2F1.1%2Fton%2Fdata%2Fta_partner%2F33267772%2FyV_nGa0VBpmCbDv.txt"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 216\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 14:02:11 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500413146701454; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 14:02:11 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: b585c71d24980293d392e2f70a85ac95\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445004191\r\n"
-> "x-response-time: 50\r\n"
-> "x-runtime: 0.042466\r\n"
-> "x-transaction: 23fd034569d3b5c9\r\n"
-> "x-tsa-request-body-time: 1\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 216 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00\xA4\x8F1\v\xC2@\f\x85\xFFK\xE6b\xB5\x82\x057\xB5\xE2\xA2\xE8 N\x85#\xB6QO\xDB\xEBy\x97\x8AE\xFA\xDFMuSpq{\xBC$\xEF}y@\x8E\x8C\x8A\eK0\x06F]T\x8Er\x85u\xAE\xC9d\xA4\xB2\x13\x9A#A\xF0Z\x83\xF1\x03\xB4\xB15\xAB\x83.HY\xE4\x93\x1C\xA5\xA1\x04Xtl\xC8\xA5\xE1p\x18\x8D\xE28\x8E\xD2\xB0\xD9)\xB3\xC0\xFEnj\xCB\xD9>\xB9\xF5\xF8\xCE\x92\xF3]\xA1s\tiJ\x7F\x93\xA9g\xE4\x0Ed\xB6^m\x96\xF3\xED<\x11\xEF5/\x8E\x91\x17]Yr\xC8\xBA2bM\x92\x04\xDA\x00\x1C]k\xF2\xDC\xB1\t\x04\x96\xBES\xBF[\xFE\xFD\xE1\x93\"\x00\xCC\xB2\xAA6\xFCn9\xF3\xE0\xE2\xA1m\xDB'\x00\x00\x00\xFF\xFF\x03\x00\xC4\x97\xAC\x80]\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","tailored_audience_id":"ymsv","state":"COMPLETED","id":"lg2s","operation":"ADD"},"request":{"params":{"tailored_audience_id":"ymsv","input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","operation":"ADD","account_id":"jt1ks"}}}read 216 bytes
Conn close

Immediately after the add we check it’s status via twurl and it shows as completed:

twurl -H ads-api.twitter.com -X GET /0/accounts/jt1ks/tailored_audience_changes/lg2s -t

opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "GET /0/accounts/jt1ks/tailored_audience_changes/lg2s HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{REDACTED}\", oauth_nonce=\"{REDACTED}\", oauth_signature=\"9cbhyglDVxgia8kg%2F3oy0mHFN4A%3D\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445004641\", oauth_token=\"{REDACTED}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 0\r\n\r\n"
<- ""
-> "HTTP/1.1 200 OK\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 211\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 14:07:56 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144500447618649929; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 14:07:56 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 046e269ff3620a51aaab2784d8ab53aa\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 2000\r\n"
-> "x-rate-limit-remaining: 1998\r\n"
-> "x-rate-limit-reset: 1445005346\r\n"
-> "x-response-time: 25\r\n"
-> "x-runtime: 0.014434\r\n"
-> "x-transaction: c1e9c21dc3366355\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 211 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00t\x8F\xC1\n\xC2@\fD\xFF%g\xB1Z\xC1Boj\xC5\x8B\xA2\a\xF1TXb\eu\xB5\xDD\xAE\xBBi\xB1H\xFF\xDDT/\x82x\ef\x92\x97\xC9\x13rdT\xDCZ\x82\x18\x18uQ9\xCA\x15\xD6\xB9&\x93\x91\xCA.h\xCE\x04\x83\xF7\x18\xC4O\xD0\xC6\xD6\xACN\xBA e\x91/\xB2\x94\x06\x02\xB0\xE8\xD8\x90K\x83\xC9$\x9CFQ\x14\xA6A{Pf\x85\xA3\xC3\xDC\x96\x8Bc\xD2\f\xF9\xC1\xC2\xF9=\xA1s\x81\xB4\xA5o$\xF5\x8C\xDC\x17Yl7\xBB\xF5r\xBFL\xC4{\xE7\xC59\xF4\xA2+K\x0EYWF\xACY\x92@7\x00G\xF7\x9A<\xF7\xDD\xA4\x04\x96\xBEW\xFF\x1EQ\xDF0\xCC\xB2\xAA6\xFC\xF1\xAE<\xBEy\xE8\xBA\xEE\x05\x00\x00\xFF\xFF\x03\x00\\.$\xB9\x12\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/yV_nGa0VBpmCbDv.txt","tailored_audience_id":"ymsv","state":"COMPLETED","id":"lg2s","operation":"ADD"},"request":{"params":{"tailored_audience_change_id":"lg2s","account_id":"jt1ks"}}}read 211 bytes
Conn close

Please let me know if we’re doing anything wrong.


#11

@brandonmblack replied with details (using MarketChorus acct above) on this thread - please let us know any thoughts. thanks


#12

Checked back and the audience We uploaded the people to was no longer there. Started from scratch here:

Using the ton-upload script from https://github.com/twitterdev/ton-upload and the following arguments results in the following (edited)

ton_upload -m upload -b ta_partner -f ~/twitterTests/audience_hashed.txt -t
Uploading /Users/amrumpler/twitterTests/audience_hashed.txt (207 KB) as text/plain via TON API
opening connection to ton.twitter.com:443...
opened
starting SSL for ton.twitter.com:443...
SSL established
<- "POST https://ton.twitter.com/1.1/ton/bucket/ta_partner HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: text/plain\r\nContent-Length: 212745\r\nX-Ton-Expires: Mon, 26 Oct 2015 20:55:30 GMT\r\nAuthorization: OAuth oauth_body_hash=\"{redacted}\", oauth_consumer_key=\"{redacted}\", oauth_nonce=\"{redacted}\", oauth_signature=\"{redacted}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445028930\", oauth_token=\"{redacted}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ton.twitter.com\r\n\r\n"
<- "1f9304bd3037d5a567bf167c4c21181aa44eaf9427e289dd372f4f201531b222\n{removed data}"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-length: 0\r\n"
-> "content-type: text/plain\r\n"
-> "date: Fri, 16 Oct 2015 20:52:44 GMT\r\n"
-> "location: /1.1/ton/data/ta_partner/33267772/Nov3L5ODlS6uTJd.txt\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144502876457175525; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 20:52:44 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-connection-hash: 02f0736279a7f486fd0ff725a0f6b5ac\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-rate-limit-limit: 50\r\n"
-> "x-rate-limit-remaining: 49\r\n"
-> "x-rate-limit-reset: 1445029664\r\n"
-> "x-response-time: 47\r\n"
-> "x-tsa-request-body-time: 341\r\n"
-> "\r\n"
reading 0 bytes...
-> ""
read 0 bytes
Conn close
File stored at /1.1/ton/data/ta_partner/33267772/Nov3L5ODlS6uTJd.txt

Next, via twurl we create the tailored audience:

twurl -H ads-api.twitter.com -X POST -d "name=audienceForDebug2&list_type=TWITTER_ID" /0/accounts/jt1ks/tailored_audiences -t
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audiences HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{redacted}\", oauth_nonce=\"{redacted}\", oauth_signature=\"{redacted}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445029310\", oauth_token=\"{redacted}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 43\r\n\r\n"
<- "name=audienceForDebug2&list_type=TWITTER_ID"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 293\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 20:59:03 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144502914389296845; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 20:59:03 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 01d14d944ef8850fe770a0a8d72455c3\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445029203\r\n"
-> "x-response-time: 36\r\n"
-> "x-runtime: 0.026167\r\n"
-> "x-transaction: 08f959900d6ed42e\r\n"
-> "x-tsa-request-body-time: 0\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 293 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00\x84\x90QO\x830\x14\x85\xFFK\x9FY\x02,3\x917\x03\xA8$L\f\xD4h\\\x96\xA6\x83\xBA\xA0]\x8B\xED\xED\xC3\\\xF8\xEF\xDE\xCE\x80\xBE\xA8o\xB7\xB9\xDF9\xBD\xE7\x9CH\xC7\x8138\x0E\x82$\x04x/\xB5\x11\x1D\xE3\xAE\xEB\x85j\x85%\xC1\x19 \xC9\t\x97f/\x80\xEF$\x92/\\Z\x11\x10\xC5\x0F^6\xD1\xD7\xDAdb\xE7\xF61\xAA\xBE\xE9\xB3\xB9%\xC9\x86\xA4\xF5\x1A7\xF9SZ>dy\xC6\xFCs\e\xCC\xEA\xE9\x88/\xAA\xEFp<*\xB9\xC4\xD9\bn\xB5\xB2Li`?\xAF\xD8\x90\xFB\xBAJ\xF3\xA6)\xEEn\x10\xA3U\xC5\x9A\xF5UYzW\xD9[\x98\x1C\xE9cAi^\xB3\"C\xAAE7\xF0\x11\x017q\x18\xAD\x16Q\xB8\x88.h\x1C&\xAB\xCB$\\>#\xE3\x86\xEE_f\xE0\x06\x940\xCCjgZ\xFFKEo\xF3\xDA\xF7%\xA4@\xF1\\\xD2\x9C\xCF\xF6\x1F\xC8)'\xE5\xE83\xBD;a\xC1\x17\x8BN\xFC`\xFD\xC4\xDBV;\x05\xEC\x1C\xFE\x15\xA27\xDF\xFF\x1F%\xFF\x12r\x1C\xC7O\x00\x00\x00\xFF\xFF\x03\x00\xD2\an_\xD8\x01\x00\x00"
{"data_type":"tailored_audiences","data":{"targetable":false,"name":"audienceForDebug2","targetable_types":["CRM","EXCLUDED_CRM"],"audience_type":"CRM","id":"ynl3","reasons_not_targetable":["PROCESSING","TOO_SMALL"],"list_type":"TWITTER_ID","created_at":"2015-10-16T20:59:03Z","updated_at":"2015-10-16T20:59:03Z","partner_source":"OTHER","deleted":false,"audience_size":null},"request":{"params":{"account_id":"jt1ks","name":"audienceForDebug2","list_type":"TWITTER_ID"}}}read 293 bytes
Conn close

Adding the uploaded file to the new audience via twurl:

twurl -H ads-api.twitter.com -X POST -d "tailored_audience_id=ynl3&operation=ADD&input_file_path=/1.1/ton/data/ta_partner/33267772/Nov3L5ODlS6uTJd.txt" /0/accounts/jt1ks/tailored_audience_changes -t
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "POST /0/accounts/jt1ks/tailored_audience_changes HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{redacted}\", oauth_nonce=\"{redacted}\", oauth_signature=\"{redacted}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445029513\", oauth_token=\"{redacted}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 121\r\n\r\n"
<- "tailored_audience_id=ynl3&operation=ADD&input_file_path=%2F1.1%2Fton%2Fdata%2Fta_partner%2F33267772%2FNov3L5ODlS6uTJd.txt"
-> "HTTP/1.1 201 Created\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 219\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 21:02:27 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144502934718467939; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 21:02:27 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: ee48c9e731bc91f586c926fdabb6db4e\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 300\r\n"
-> "x-rate-limit-remaining: 299\r\n"
-> "x-rate-limit-reset: 1445029407\r\n"
-> "x-response-time: 52\r\n"
-> "x-runtime: 0.043132\r\n"
-> "x-transaction: 3dd82af7341337f7\r\n"
-> "x-tsa-request-body-time: 0\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 219 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00\xA4\x8FAo\xC20\f\x85\xFF\x8B\xCF\xD5*\xA8\xD6\nn\xD3\xCA\x051@\x82c\xA5\xC8j<\x1A\x96%!u\x10\b\xF5\xBF\xCF\x85\e\x93v\xD9\xED\xE9\xD9~\xEF\xF3\r42*\xBE\x06\x8290\x1A\xEB#i\x85I\er-\xA9\xB6Cw \xC8\xEEk0\xBF\x81q!\xB1\xFA4\x96T@\xEE\xE4\xA8\xC9% `dG\xB1\xC9\x8BbZVU5m\xF2\xB5?\x17\xAB\xD7Mmwe\xDA/\xF5\v_Xr~W\x18-!Wg\v\x99\xF6\x8C<\x82\xBCo>\xB6\xAB\xC5~Q\x8Bw\x9F\xDB\xAE\x9C\x89\xF6\x81\"\xB2\xF1N\xAC\xB7\xBA\x86!\x83H\xA7D=\x8Fl\x02\x81\xDF\xFD\xA8\xFEn\xF9\xEF\x0F\xCF\x14\x19`\xDB\xFA\xE4\xF8\xD1r\xE4\xC9W\x0F\xC30\xFC\x00\x00\x00\xFF\xFF\x03\x00y\xAB<5]\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/Nov3L5ODlS6uTJd.txt","tailored_audience_id":"ynl3","state":"COMPLETED","id":"lh69","operation":"ADD"},"request":{"params":{"tailored_audience_id":"ynl3","input_file_path":"\/ta_partner\/33267772\/Nov3L5ODlS6uTJd.txt","operation":"ADD","account_id":"jt1ks"}}}read 219 bytes
Conn close

Immediately after the add we check it’s status via twurl and it shows as completed:

twurl -H ads-api.twitter.com -X GET /0/accounts/jt1ks/tailored_audience_changes/lh69 -t
opening connection to ads-api.twitter.com:443...
opened
starting SSL for ads-api.twitter.com:443...
SSL established
<- "GET /0/accounts/jt1ks/tailored_audience_changes/lh69 HTTP/1.1\r\nAccept-Encoding: gzip;q=1.0,deflate;q=0.6,identity;q=0.3\r\nAccept: */*\r\nUser-Agent: OAuth gem v0.4.7\r\nContent-Type: application/x-www-form-urlencoded\r\nAuthorization: OAuth oauth_consumer_key=\"{redacted}", oauth_nonce=\"{redacted}\", oauth_signature=\"{redacted}\", oauth_signature_method=\"HMAC-SHA1\", oauth_timestamp=\"1445029694\", oauth_token=\"{redacted}\", oauth_version=\"1.0\"\r\nConnection: close\r\nHost: ads-api.twitter.com\r\nContent-Length: 0\r\n\r\n"
<- ""
-> "HTTP/1.1 200 OK\r\n"
-> "connection: close\r\n"
-> "content-disposition: attachment; filename=json.json\r\n"
-> "content-encoding: gzip\r\n"
-> "content-length: 214\r\n"
-> "content-type: application/json;charset=utf-8\r\n"
-> "date: Fri, 16 Oct 2015 21:05:28 GMT\r\n"
-> "server: tsa_a\r\n"
-> "set-cookie: guest_id=v1%3A144502952821122079; Domain=.twitter.com; Path=/; Expires=Sun, 15-Oct-2017 21:05:28 UTC\r\n"
-> "strict-transport-security: max-age=631138519\r\n"
-> "x-access-level: read\r\n"
-> "x-connection-hash: 1601a11a7d1a73a2df23541bd1f1b0d8\r\n"
-> "x-content-type-options: nosniff\r\n"
-> "x-frame-options: SAMEORIGIN\r\n"
-> "x-rate-limit-limit: 2000\r\n"
-> "x-rate-limit-remaining: 1999\r\n"
-> "x-rate-limit-reset: 1445030428\r\n"
-> "x-response-time: 23\r\n"
-> "x-runtime: 0.013416\r\n"
-> "x-transaction: a35a0106b3e1c495\r\n"
-> "x-xss-protection: 1; mode=block\r\n"
-> "\r\n"
reading 214 bytes...
-> ""
-> "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x00t\x8FO\x8B\xC20\x10\xC5\xBF\xCB\x9C\xC5\xA2e[\xF4&\xD6\xCB\xE2\x9F\x85\xF5X\bC3\xDAhL\xB2\xE9dY\x91~\xF7\x9D\xEAE\x10o\x8F\xF7f~\xF3\xE6\x06\x1A\x19\x15_\x03\xC1\x1C\x18\x8D\xF5\x91\xB4\xC2\xA4\r\xB9\x86T\xD3\xA2;\x12\x8C\xEEc0\xBF\x81q!\xB1:\x18K* \xB7\xB2Tg\x02\b\x18\xD9Q\xAC\xB3<\x9F\x16eYN\xEBl\xEB\x7F\xF3\xF5\xC7\xAE\xB2\xDFE\xDA\x7F\xEA1\xFF\xB1p^O\x18-\x90\xAB\xB3\xB9\xA4\x1D#\x0FE\x96\xBB\xCD\xD7z\xB5_U\xE2\xDDs\xDB\x163\xD1>PD6\xDE\x89\xB5\xA8*\xE8G\x10\xE9'Q\xC7C7)\x81\x97nP\xEF\x1EQ\xCF0l\x1A\x9F\x1C?\xBC\x13O\xCE\x1D\xF4}\xFF\x0F\x00\x00\xFF\xFF\x03\x00\xFB\x1D\xA2\xAF\x12\x01\x00\x00"
{"data_type":"tailored_audience_change","data":{"input_file_path":"\/ta_partner\/33267772\/Nov3L5ODlS6uTJd.txt","tailored_audience_id":"ynl3","state":"COMPLETED","id":"lh69","operation":"ADD"},"request":{"params":{"tailored_audience_change_id":"lh69","account_id":"jt1ks"}}}read 214 bytes
Conn close

#13

Hey… I uploaded a tailored audience list on March 14, 2016. But, still the list is not uploaded yet and it’s still showing the status as processing. How long it will take Twitter to upload a list? I need to launch a campaign today. How can I know the status?


Tailored Audiences taking too long to process
Tailored Audiences Appearing Too Small
#14

I’m having the same issue since February 2016. it doesn’t seem there’s any progress according to the thread ?


#15

There was a recent slow-down which has been fixed and reported about this in Tailored Audience Stuck in Processing. Audience too small

Please post a new thread similar to that one if you are still seeing issues in audiences uploaded in the past couple days (but note that they can take up to 24 or 48 hours to process).


#16