Twitter API Hata Kodları ve HTTP Durumları Referansı
TwexAPI'de Twitter/X API hatalarını giderin: HTTP 401, 403, 429 ve 5xx, geçersiz auth_token, yinelenen tweetler, DM sınırları ve güvenli yeniden denemeler.
TwexAPI, Twitter/X API hatalarını HTTP durum kodları ve mevcut olduğunda X’ten gelen hata kodları aracılığıyla bildirir. 401, kimlik bilgilerinin düzeltilmesini; 403, erişim veya hesap sorununun giderilmesini; 429 ise hız sınırı nedeniyle beklenmesini gerektirir. Yeniden denemeden önce yanıt gövdesini kontrol edin.
Twitter API hata kodları, invalid auth_token, yinelenen tweetler ve DM sınırlarıyla ilgili sorunları gidermek için bu referansı kullanın. Uç nokta yolları güncel API referansına uygundur. MCP hataları, sayfalama hatalarından kurtarma ve SDK örnekleri için Hata Yönetimi sayfasına bakın.
Aşağıdaki mesajlar ve X’ten gelen kodlar sorun giderme örnekleridir; yanıt yapıları ve HTTP durumlarıyla eşleştirmeler uç noktaya göre değişebilir. Uç nokta şemasını ve gerçek yanıtı birlikte değerlendirin.
Twitter API hatası için doğru çözümü bulun
- HTTP 401 /
Invalid auth_token: Hem TwexAPI API anahtarınızı hem de yazma uç noktalarında kullanılan X oturumunun kimlik bilgilerini kontrol edin. Kimlik Doğrulama sayfasına bakın. - HTTP 403: Mesajda yetersiz kredi, korumalı gönderi, hesap kısıtlaması veya Premium gereksinimi olup olmadığını inceleyin. Aynı isteği değiştirmeden tekrarlamak erişimi geri kazandırmaz.
- HTTP 429 /
Too Many Requests:Retry-Afterveyaretry_afterdeğerine uyun; istek hızının kısıtlanmasıyla X hesabının günlük sınırını ayırt edin. Hız Sınırları sayfasına bakın. - HTTP 500 / 502 / 503: Geçici okuma hatalarında bekleme süresini belirli bir üst sınıra kadar artırarak yeniden deneyin. Bir yazma işlemini tekrarlamadan önce işlemin zaten başarılı olup olmadığını kontrol edin.
- X kodları 187, 344 veya 502: Bunlar X’ten gelen kodlardır ve HTTP durum kodlarından ayrıdır. Twitter/X kod tablosuna ve yeniden deneme sorularına bakın.
Hata yanıtı biçimi
HTTP durumunu ve JSON gövdesinin tamamını saklayın. TwexAPI yanıtları code ve msg içerebilir; istek doğrulama hataları detail kullanır:
{
"code": 500,
"msg": "Internal server error"
}
{
"detail": [
{
"loc": ["body", "cookie"],
"msg": "Field required",
"type": "missing"
}
]
}
Yanıt, X’ten gelen ek meta veriler içeriyorsa bunları da saklayın:
error: Sağlandığında hata mesajını içerir. Her uç noktanın bu alanı kullandığını varsaymayın.twitter_error_code: Sağlandığında X hata kodunu içerir. HTTP durumundan ayrıdır; örneğin X kodu502, bir DM sınırını belirtir.retry_after: Sağlandığında beklenecek saniye sayısını belirtir. HTTPRetry-Afterbaşlığına da uyun.
İsteğe bağlı alanların mutlaka bulunmasını beklemeyin veya yalnızca mesajın tam metnine göre işlem yapmayın. Gövdede farklı bir code bulunsa bile 2xx dışındaki bir HTTP durumu hatadır.
Yaygın hatalar (tüm uç noktalar)
Her istekte bu koşulları kontrol edin. Mesajların tam metni değişebilir.
| Durum | Mesaj | Anlamı | Yapılacak işlem |
|---|---|---|---|
| 401 | Invalid or missing API key |
API anahtarınız eksik veya yanlış | Authorization: Bearer <key> başlığınızı kontrol edin |
| 400 | Missing required … param: <x> |
Zorunlu bir alan/parametre eksik veya geçersiz | İsteği düzeltin |
| 429 | Please try again shortly. (kapasitemiz) · Rate limit exceeded… · veya X tarafındaki bir sınır mesajı |
Çok fazla istek, kapasitemiz veya bir X hesabı sınırı (örneğin günlük DM/tweet sınırı; bunlar twitter_error_code içerebilir) |
retry_after / Retry-After değerine uyun; hesapların günlük sınırları daha uzun süre beklemeyi gerektirir |
| 403 | Krediler tükendi veya erişim reddedildi | Yetersiz kredi veya hesap izinleri | Bakiyeyi ve hesap erişimini kontrol edin |
| 422 | Doğrulama hatası (detail) |
İstek alanları şema doğrulamasından geçemedi | detail içinde listelenen alanları düzeltin; isteği değiştirmeden yeniden denemeyin |
| 500 | Internal server error |
Geçici bir hata oluştu | Kısa bir süre sonra yeniden deneyin |
Twitter API HTTP durum kodları
| Durum | Anlamı |
|---|---|
| 200 | Başarılı |
| 202 | Kabul edildi; uç nokta bu durumu döndürüyorsa işlem beklemededir |
| 400 | Hatalı istek, eksik/geçersiz parametreler, geçersiz proxy URL’si veya çok büyük medya |
| 401 | Yetkisiz, hatalı API anahtarı veya geçersiz/süresi dolmuş auth_token |
| 403 | Yasak — yetersiz kredi, korumalı/gizli veya askıya alınmış hedef hesap (gönderileri okunamaz), kullandığınız hesabın askıya alınmış/kilitli olması, izin kısıtlaması veya yalnızca Premium’a açık bir işlem |
| 404 | Bulunamadı; kullanıcı, tweet veya kaynak mevcut değil |
| 409 | Çakışma, yinelenen tweet |
| 410 | Kaynağa erişilemiyor; hesabın askıya alınmasına ilişkin ayrıntılar için gövdeyi inceleyin |
| 422 | İstek doğrulaması başarısız; detail alanını inceleyip girdiyi düzeltin |
| 423 | X tarafından döndürülüyorsa: hesap kilitli veya doğrulama gerekiyor |
| 429 | Çok fazla istek, hız sınırına ulaşıldı |
| 500 / 502 / 503 | Geçici sunucu hatası veya üst hizmet hatası, yeniden deneyin |
Twitter/X API hata kodları
Yanıtta X’ten gelen bir kod bulunduğunda aşağıdaki anlamları kullanın. Bunlar X kodlarıdır, HTTP durumları değildir; her uç nokta twitter_error_code alanını sunmaz.
| Kod | Anlamı | Yapılacak işlem |
|---|---|---|
| 32 | Kimliğiniz doğrulanamadı | cookie içinde sağladığınız X oturumu kimlik bilgilerini yenileyin |
| 63 | Hedef hesap askıya alınmış | Erişilebilir bir hesap kullanın veya erişimin yeniden sağlanmasını bekleyin |
| 64 | Hesabınız askıya alınmış | Farklı bir hesap kullanın |
| 131 | X’te geçici bir dahili hata | Yeniden deneyin |
| 139 | Zaten beğenilmiş | Mevcut durumu doğrulayın; işlemi tekrarlamayın |
| 144 | Bu kimlikle bir tweet bulunamadı | Tweet silinmiş veya kimlik yanlış |
| 187 | Yinelenen tweet | Önceki gönderiyi doğrulayın; yeni bir gönderi oluşturmak istiyorsanız metni değiştirin |
| 226 | İstek otomatik olarak oluşturulmuş göründü | Yeniden deneyin |
| 326 | Hesap geçici olarak kilitli | x.com/account/access adresinden kilidi açın, ardından yeniden deneyin |
| 327 | Zaten retweet edilmiş | Mevcut durumu doğrulayın; işlemi tekrarlamayın |
| 344 | Gönderi oluşturma geçici olarak kısıtlandı (hesap sınırı değil, ağ/IP kısıtlaması) | Bekleme süresini artırın ve sağladıysanız proxy’yi kontrol edin; yeniden denemeden önce yazma işleminin sonucunu doğrulayın |
| 349 | Bu kullanıcıya mesaj gönderilemiyor | Alıcı, DM’lerinizi kabul etmiyor |
| 399 | X oturum açma işlemi başarısız | X oturumunun kimlik bilgilerini kontrol edin |
| 433 | Yanıtlama kısıtlı / Premium gerekli | Tweeti kimlerin yanıtlayabileceği kısıtlanmış veya işlem X Premium gerektiriyor |
| 465 | Eski bir tweet retweet edilemiyor | Tweet, retweet edilemeyecek kadar eski |
| 476 | Mesaj isteği göndermeye izin verilmiyor | Hesap, DM isteği gönderemiyor |
| 502 | Günlük DM (mesaj isteği) sınırına ulaşıldı | 24 saat bekleyin veya daha yüksek sınırlar için X Premium hesabı kullanın |
Tweet okuma ve arama
POST /twitter/{screen_name}/timeline/page, /twitter/tweets-replies/page ve /twitter/advanced_search/page için geçerlidir.
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 403 | This account's posts are not available. The account is protected (private), suspended, or no longer active. |
İsteği değiştirmeden yeniden denemeyin — isteğin başarılı olabilmesi için erişim koşulları değişmelidir. Hedef hesabın gönderilerini onaylı takipçiler dışında kimse okuyamaz. İsteği herkese açık bir hesaba yönlendirin. |
| 403 | This account is suspended, so its posts are not available. |
Hedef hesap askıya alınmış. Erişilebilir bir hesap kullanın veya erişimin yeniden sağlanmasını bekleyin. |
| 502 | Upstream returned an unexpected response — please retry. |
Üst hizmet hatası. Bekleme süresini belirli bir üst sınıra kadar artırarak yeniden deneyin; aynı cursor değerini koruyun. |
Gönderi oluşturma ve etkileşim
Tweet oluşturma
POST /twitter/tweets/create
tweet_content, isteğe bağlı reply_tweet_id ve cookie içinde X kimlik bilgilerinizi kullanın. Tweet veya Yanıt Oluşturma sayfasına bakın.
| Durum | Kod | Mesaj | Yapılacak işlem |
|---|---|---|---|
| 409 | 187 | Status is a duplicate. |
Gönderinin zaten mevcut olup olmadığını kontrol edin; yeni bir gönderi için metni değiştirin |
| 403 | 433 | The original Tweet author restricted who can reply… |
Tweet, yanıt vermenize izin vermiyor |
| 403 | 433 | Uzun metin / uzun video Premium gerektiriyor | Premium hesabı kullanın veya içeriği kısaltın |
| 403 | n/a | Topluluk üyesi değil | Önce topluluğa katılın |
| 429 | 344 | Gönderi oluşturma geçici olarak kısıtlandı (ağ/IP kısıtlaması) | Bekleme süresini artırın; sağladığınız proxy’yi kontrol edin ve gönderinin oluşturulup oluşturulmadığını doğrulayın |
| 502 | n/a | X returned an empty result (sonuç doğrulanmadı) |
Yeniden denemeden önce hesabın zaman akışını okuyun; yazma işleminin sonucu doğrulanmamıştır |
| 400 | n/a | File size exceeds… |
Medya dosyasının boyutunu küçültün |
| 503 | 226 | This request looks automated |
Bekleme süresini artırın ve yeniden denemeden önce yazma işleminin sonucunu kontrol edin |
| 502 / 503 | n/a | Geçici bağlantı hatası | Yeniden deneyin (proxy sağladıysanız çalıştığını doğrulayın) |
Beğenme / Retweet / Yer imi
POST /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
DELETE /twitter/tweets/{tweet_id}/like · /twitter/tweets/{tweet_id}/retweet · /twitter/tweets/{tweet_id}/bookmark
| Durum | Kod | Mesaj | Yapılacak işlem |
|---|---|---|---|
| 403 | n/a | User is suspended, deactivated or offboarded |
Hesaba erişilemiyor; başka bir hesaba geçin |
| 401 | 32 | Could not authenticate you |
cookie içinde sağladığınız X oturumu kimlik bilgilerini yenileyin |
| 403 | 465 | not permitted to retweet an outdated Tweet |
Tweet, retweet edilemeyecek kadar eski |
| Değişir | 139 / 327 | Zaten beğenilmiş / zaten retweet edilmiş | Mevcut durumu doğrulayın; işlemi tekrarlamayın |
| 429 | n/a | Hız sınırı | İstek hızını azaltın, ardından yeniden deneyin |
| 502 / 503 | n/a | Geçici bağlantı hatası | Yeniden deneyin |
Tweet silme
POST /twitter/tweets/delete-batch
Tek bir tweeti silmek için target_id sağlayın. Bu alanı belirtmezseniz toplu silme seçilir; hatalardan kurtarma sırasında özgün istek alanlarını koruyun.
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 404 | No status found with that ID |
Zaten silinmiş veya kimlik yanlış |
| 403 | Gönderinin yazarı değil | Yalnızca kendi tweetlerinizi silebilirsiniz |
| 401 | Geçersiz auth_token |
X oturumunun kimlik bilgilerini yenileyin |
Takip etme / Takibi bırakma
POST /twitter/user/follow · DELETE /twitter/user/follow
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 404 | User not found |
Kullanıcı adını/kimliğini kontrol edin |
| 403 | Kısıtlı | Hesap veya hedef bu işleme izin vermiyor |
| 401 | Geçersiz auth_token |
X oturumunun kimlik bilgilerini yenileyin |
| 429 | Takip sınırı | Bekleyin, ardından yeniden deneyin |
Profil / Avatar / Kapak görseli güncelleme
POST /twitter/profile
Görsel URL’leri için profile_image ve profile_banner, X kimlik bilgileri için cookie kullanın.
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 401 | Invalid auth_token - could not fetch credentials |
X oturumunun kimlik bilgilerini yenileyin |
| 400 | Görsel çok büyük / biçim hatalı | Görseli düzeltin |
Medya ekleri
Tweet oluştururken veya DM gönderirken medya ekleyin; güncel referansta ayrı bir medya yükleme yolu yoktur. Tweet oluştururken media_urls, en fazla dört görsel, bir GIF veya bir videoyu destekler. GIF/video ile diğer medyaları bir arada kullanmayın. Yeniden denemeden önce erişilemeyen URL’leri, desteklenmeyen biçimleri veya reddedilen dosya boyutlarını düzeltin. Alan adları ve kısıtlamalar için uç nokta şemasına uyun.
Direkt mesajlar
POST /v3/twitter/send-dm · /v3/twitter/dm-history · /v3/twitter/conversations
İzin kontrolleri için POST /v2/dm/status kullanın. DM Gönderme sayfasına bakın.
| Durum | Kod | Mesaj | Yapılacak işlem |
|---|---|---|---|
| 429 | 502 | You've hit your daily message request limit. Subscribe to Premium for higher limits. |
24 saat bekleyin veya Premium hesabı kullanın |
| 403 | 476 | Sender is not verified to send message requests |
Hesap, DM isteği gönderemiyor |
| 403 | 349 | Cannot send messages to this user |
Alıcı, DM’lerinizi kabul etmiyor |
| 401 | 32 | Could not authenticate you |
X oturumunun kimlik bilgilerini yenileyin |
| 404 | n/a | Konuşma / kullanıcı bulunamadı | Alıcıyı kontrol edin |
Veri okuma
POST /v2/tweet/detail · /twitter/tweets/lookup · /twitter/users/by_ids · /v3/twitter/users/followers · /v3/twitter/users/following · /twitter/tweets/thread_by_id · /twitter/tweets/{tweet_id}/replies/page
GET /twitter/{screen_name}/about · /twitter/search-user/{keyword}/{target_count}
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 404 | Tweet not found: <id> |
Tweet silinmiş, korumalı veya kimlik yanlış |
| 404 | Could not resolve userId for @<handle> |
Kullanıcı adı mevcut değil, değiştirilmiş veya hesap askıya alınmış |
| 404 | Could not find user with ID: <id> |
Kullanıcı kimliğini kontrol edin |
| 400 | Missing required query param: <x> |
Zorunlu parametreyi sağlayın |
| 429 | Hız sınırı | retry_after kadar bekleyin, ardından yeniden deneyin |
Makaleler
POST /x/article · GET /x/article/{tweet_id}/markdown
Yazma işlemleri için: POST /x/articles/draft · PUT /x/articles/{article_id}/cover · /x/articles/{article_id}/title · /x/articles/{article_id}/content · POST /x/articles/{article_id}/publish veya /x/articles/publish.
Aşağıdaki Premium gereksinimi makale yayımlama için geçerlidir. article_id değerini koruyabilmek ve yalnızca başarısız olan adımı yeniden deneyebilmek için adım adım makale akışını tercih edin.
| Durum | Mesaj | Yapılacak işlem |
|---|---|---|
| 403 | Premium gerekli | Makale yayımlamak için X Premium hesabı gerekir |
| 404 | Makale bulunamadı | Makale kimliğini kontrol edin |
| 401 | Geçersiz auth_token |
X oturumunun kimlik bilgilerini yenileyin |
| 400 | Geçersiz içerik | Makale gövdesini düzeltin |
Yeniden deneme rehberi
| Karşılaşılan durum… | Yeniden denensin mi? | Notlar |
|---|---|---|
| 429 | ✅ belirtilen bekleme süresinden sonra | İstek hız sınırlarının yanı sıra hesapların günlük sınırlarına da uyun |
| 422 | ❌ | Doğrulama yanıtında listelenen alanları düzeltin |
| 500 / 502 / 503 | ✅ | Geçici; kısa bir süre sonra yeniden deneyin |
| X kodu 226 | Yazma işleminin sonucu kontrol edildikten sonra | Bekleme süresini artırın; yeniden denemeden önce hesap kısıtlamalarını inceleyin |
| 401 | ❌ | API anahtarınızı düzeltin veya X oturumunun kimlik bilgilerini yenileyin |
| 403 (askıya alınmış/kilitli) | ❌ | Farklı bir hesap kullanın veya önce hesabın kilidini açın |
| 404 | ❌ | Kimliği/kullanıcı adını kontrol edin |
| 400 / 409 | ❌ | İsteği düzeltin (parametreler, medya boyutu, yinelenen metin) |
İpucu: 429 ve geçici 5xx hatalarında bekleme süresini belirli bir üst sınıra kadar artırın ve süreye rastgele sapma (jitter) ekleyin. 400/401/403/404/409/422 için önce girdiyi, kimlik bilgilerini veya hesap erişimini düzeltin.
Twitter API hataları ve yeniden deneme soruları
Twitter API neden 401 veya invalid auth_token döndürür?
HTTP 401, TwexAPI API anahtarınızın eksik veya geçersiz olduğunu belirtebilir. Yazma uç noktalarında Invalid auth_token veya X kodu 32, X oturumunun süresinin dolduğunu da belirtebilir. Yeniden denemeden önce Bearer başlığını düzeltin veya cookie içinde sağladığınız X kimlik bilgilerini yenileyin.
Twitter API 403 ve 429 hataları arasındaki fark nedir?
HTTP 403, yetersiz kredi, gizli içerik, kısıtlı hesap veya yalnızca Premium’a açık işlem gibi bir erişim sorununu belirtir. HTTP 429, bir istek veya hesap sınırını belirtir. 403 hatasının nedenini giderin; 429 sonrasında belirtilen sınırın sıfırlanmasını bekleyin.
Twitter API 429 Too Many Requests hatasını nasıl gideririm?
Sağlanmışsa Retry-After veya retry_after kadar bekleyin; ardından eşzamanlı istek sayısını azaltarak ve bekleme süresini belirli bir üst sınıra kadar artırarak devam edin. Günlük tweet veya DM sınırı, yalnızca kısa bir gecikme değil, sıfırlanma süresinin dolmasını gerektirir. Okuma işlemini yeniden denerken başarısız olan sayfanın cursor değerini koruyun.
Twitter hata kodu 187 ne anlama gelir?
X hata kodu 187, yinelenen tweet içeriği anlamına gelir. Önceki yazma işleminin gönderiyi zaten oluşturup oluşturmadığını kontrol edin. Farklı bir gönderi yayımlamak istiyorsanız aynı isteği tekrarlamak yerine tweet_content değerini değiştirin.
Twitter hata kodu 344 ne anlama gelir?
X hata kodu 344, ağ veya IP ile ilişkili geçici bir gönderi oluşturma kısıtlamasını belirtir. Bekleme süresini artırın, sağladığınız proxy’yi kontrol edin ve yazma işlemini yeniden denemeden önce hesabın zaman akışını inceleyin. Bu bir X hata kodudur; HTTP durum kodu değildir.
Twitter API 500, 502 veya 503 hatalarında yeniden denemeli miyim?
Geçici okuma hatalarında bekleme süresini belirli bir üst sınıra kadar artırarak ve rastgele sapma (jitter) ekleyerek yeniden deneyin. Bir yazma işlemi zaman aşımına uğrarsa veya 5xx döndürürse önce zaman akışını, DM geçmişini veya etkileşim durumunu inceleyin. Hata yanıtı, yazma işleminin hiç uygulanmadığını kanıtlamaz.
TwexAPI 422 doğrulama hatasında yeniden denemeli miyim?
Aynı girdiyi yeniden göndermeyin. TwexAPI, istek doğrulama hataları için HTTP 422 kullanır. Hatalı alanı, konumunu ve türünü bulmak için detail alanını inceleyin, ardından isteği uç nokta şemasına göre düzeltin.
Twitter hata kodu 502 ile HTTP 502 aynı mı?
Hayır. X hata kodu 502, günlük DM isteği sınırını belirtir ve HTTP 429 ile birlikte gelebilir. HTTP 502, üst hizmetten gelen yanıtta bir hata olduğunu belirtir. Yeniden deneme politikasını seçmeden önce hem HTTP durumunu hem de sağlanmışsa twitter_error_code alanını okuyun.
İlgili sayfalar
- Hata Yönetimi — MCP, SDK’lar ve sayfalama hatalarından kurtarma
- Kimlik Doğrulama — API anahtarları ve X oturumu kimlik bilgileri
- Hız Sınırları — bekleme süresini artırma ve istek işleme hızı
- API Genel Bakışı — güncel uç nokta referansı