title: Twitter API, Tweets with Images, Error Code 324 "The validation of media ids failed."
body: <p>I have been able to successfully post status updates with images attached. I am using C#/.NET with a REST framework called Hammock. First, I upload the images to upload.twitter.com/1.1/media/upload.json and get media_ids back. Then, I make a request to api.twitter.com/1.1/statuses/update.json with the media_ids parameter. This works fine except that occassionally, with larger images, Twitter responds to my status update request with the following JSON:</p>
  
  <pre><code>{"errors":[{"code":324,"message":"The validation of media ids failed."}]}
  </code></pre>
  
  <p>I have tried waiting several minutes between the time of media upload and status update with no success.  I have also posted on Twitter's developer forums, but posting here as well in case anyone has experienced this and has any insight. <a href="https://twittercommunity.com/t/the-validation-of-media-ids-failed-error-code-324/29304" rel="nofollow">https://twittercommunity.com/t/the-validation-of-media-ids-failed-error-code-324/29304</a>  I don't see "324" anywhere in Twitter's API documentation, especially here: <a href="https://dev.twitter.com/overview/api/response-codes" rel="nofollow">https://dev.twitter.com/overview/api/response-codes</a></p>
  
  <p>Here are the exact (except for sensitive values being xxxx'd out) requests/responses seen in Fiddler:</p>
  
  <p><strong>Media Upload Request</strong></p>
  
  <pre><code>POST https://upload.twitter.com/1.1/media/upload.json HTTP/1.1
  Authorization: OAuth oauth_consumer_key="xxxxxxxxxxx",oauth_nonce="xxxxxxxxxxx",oauth_signature="xxxxxxxxx",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1418763417",oauth_token="xxxxxxxxxx",oauth_version="1.0a"
  Content-Type: multipart/form-data; boundary=5fb9e9e7-25cf-49fd-b5ef-61aefed2897e
  Host: upload.twitter.com
  Content-Length: 2399916
  
  --5fb9e9e7-25cf-49fd-b5ef-61aefed2897e
  Content-Disposition: form-data; name="media"; filename="d1cd395d-bebf-4733-aedc-680327ef63ec"
  Content-Type: image/jpeg
  </code></pre>
  
  <p><strong>Media Upload Response</strong></p>
  
  <pre><code>HTTP/1.1 200 OK
  cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
  content-length: 140
  content-type: application/json;charset=utf-8
  date: Tue, 16 Dec 2014 20:56:57 UTC
  expires: Tue, 31 Mar 1981 05:00:00 GMT
  expires: Tue, 16 Dec 2014 21:56:57 GMT
  last-modified: Tue, 16 Dec 2014 20:56:57 GMT
  pragma: no-cache
  server: tsa_b
  set-cookie: lang=en
  set-cookie: guest_id=v1%xxxxxxxx; Domain=.twitter.com; Path=/; Expires=Thu, 15-Dec-2016 20:56:57   UTC
  status: 200 OK
  strict-transport-security: max-age=631138519
  x-access-level: read-write
  x-connection-hash: xxxxxxxxxxx
  x-frame-options: SAMEORIGIN
  x-response-time: 344
  x-transaction: xxxxxxxxx
  x-xss-protection: 1; mode=block
  
  {"media_id":544959385899122689,"media_id_string":"544959385899122689","size":4311817,"image":{"w":3000,"h":2350,"image_type":"image\/jpeg"}}
  </code></pre>
  
  <p><strong>Status Update Request</strong></p>
  
  <pre><code>POST https://api.twitter.com/1.1/statuses/update.json HTTP/1.1
  Authorization: OAuth oauth_consumer_key="xxxxxxxxxx",oauth_nonce="xxxxx",oauth_signature="xxxxxxxxxxxx",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1418763469",oauth_token="xxxxxxxxxxx",oauth_version="1.0a"
  Content-Type: application/x-www-form-urlencoded
  Host: api.twitter.com
  Content-Length: 117
  
  status=test%20test%20test&amp;media_ids=544959385899122689%2C544959443889557504%2C544959458036957184%2C544959545941192705
  </code></pre>
  
  <p><strong>Status Update Response</strong></p>
  
  <pre><code>HTTP/1.1 400 Bad Request
  cache-control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
  content-length: 73
  content-type: application/json;charset=utf-8
  date: Tue, 16 Dec 2014 20:57:49 UTC
  expires: Tue, 31 Mar 1981 05:00:00 GMT
  last-modified: Tue, 16 Dec 2014 20:57:49 GMT
  pragma: no-cache
  server: tsa_b
  set-cookie: lang=en
  set-cookie: guest_id=xxxxxx; Domain=.twitter.com; Path=/; Expires=Thu, 15-Dec-2016 20:57:49 UTC
  status: 400 Bad Request
  strict-transport-security: max-age=631138519
  x-access-level: read-write
  x-connection-hash: xxxxxxxx
  x-content-type-options: nosniff
  x-frame-options: SAMEORIGIN
  x-response-time: 44
  x-transaction: xxxxxxx
  x-xss-protection: 1; mode=block
  
  {"errors":[{"code":324,"message":"The validation of media ids failed."}]}
  </code></pre>