Felo API PlatformFelo API Platform

X Verileri

Sağlayıcı: Felo · Platform bakiyesinden ödenir

İhtiyacınız olan veri için işlemi seçin. Beş uç noktanın tamamı POST kullanır ve ortak bir data sarmalayıcısı olmadan JSON’u kökte döndürür.

Tüm örnekler genel bakış içindeki FELO_API_KEY’i kullanır. Çağrılar Felo Pro kredilerini değil, platform bakiyesini kullanır. Yanıt örnekleri açıklayıcıdır; canlı içerik ve isteğe bağlı alanlar değişebilir.

Bir işlem seçin

İhtiyaçUç nokta
Bilinen kullanıcı adları için profillerPOST /api/v1/data/x/user/info
Bir arama sorgusuyla kullanıcı bulmaPOST /api/v1/data/x/user/search
Tek bir kullanıcının gönderileriPOST /api/v1/data/x/user/tweets
Bir sorguyla eşleşen gönderilerPOST /api/v1/data/x/tweet/search
Bilinen gönderilerin yanıtlarıPOST /api/v1/data/x/tweet/replies

1. Kullanıcı profillerini alın

POST /api/v1/data/x/user/info

AlanTürGerekliAnlamı
usernamesstring arrayEvet1–100 kullanıcı adı; @ olmadan gönderin
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/info" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"usernames":["OpenAI"]}'

Yanıt users ve total içerir. Her kullanıcı user_id, username ve display_name içerir; profil metni, takipçi sayıları, doğrulama ve diğer meta veriler de bulunabilir. Bir toplu istek, istenenden daha az profil döndürebilir. Dizi konumuna göre değil, kullanıcı adına veya kimliğe göre eşleştirin.

{"users":[{"user_id":"example-user-id","username":"example","display_name":"Example"}],"total":1}

2. Kullanıcı arayın

POST /api/v1/data/x/user/search

AlanTürGerekliAnlamı
querystringEvet1–1.000 karakter
cursorstringHayırSayfalama cursor’ı, en fazla 4.000 karakter
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/search" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"AI research"}'

Yanıt users, total, has_next ve next_cursor içerir. Bu işlemde limit parametresi yoktur.

{"users":[],"total":0,"has_next":false,"next_cursor":null}

3. Kullanıcı zaman çizelgesini alın

POST /api/v1/data/x/user/tweets

AlanTürGerekliAnlamı
usernamestringBir tanımlayıcı gerekliKullanıcı adı, en fazla 100 karakter
x_user_idstringBir tanımlayıcı gerekliKullanıcı kimliği, en fazla 100 karakter; username üzerinde önceliklidir
limitintegerHayır1–1.000; mevcut uygulama en az 20 kullanır, varsayılan 20’dir
cursorstringHayırSayfalama cursor’ı, en fazla 4.000 karakter
include_repliesbooleanHayırİç içe yanıtları dahil edin; varsayılan false
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/user/tweets" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"username":"OpenAI","limit":20,"include_replies":false}'

Yanıt tweets, total, has_next ve next_cursor içerir. limit değerini 20’nin altına ayarlamak, daha az dönen öğe veya daha küçük bir ücret garanti etmez. Yanıtları dahil etmek, dönen veriyi ve faturalandırılabilir sonuçları artırabilir.

Sonuç ve iç içe yanıt sınırları

limit, bu istek için üst düzey gönderilerin hedef sayısıdır, garanti edilen bir sonuç sayısı değildir. Mevcut uygulama en az 20’lik bir hedef kullanır: 20’lik bir hedef bir üst akış sayfası okur; daha büyük hedefler otomatik olarak 50 sayfaya kadar getirir. Her sayfadan önce geçen süreyi kontrol eder ve bu süre 60 saniyeyi aştığında daha fazla sayfa getirmeyi durdurur. Bu kontrol, tüm HTTP isteğinin 60 saniye içinde tamamlanacağının garantisi değildir.

Toplama ayrıca hedefe ulaşıldığında, üst akışta sonraki sayfa olmadığında, bir sayfa boş olduğunda veya cursor eksik olduğunda durur. Bu nedenle başarılı bir yanıt limit değerinden daha az gönderi içerebilir. Mevcut olduğunda devam etmek için has_next ve next_cursor kullanın.

include_replies=true ile, dönen her gönderi en fazla 5 ek sayfa ve en fazla 100 iç içe yanıt alır. Sonraki sayfa olmadığında, bir sayfa boş olduğunda veya cursor ilerletilemediğinde toplama daha erken durabilir. Bu iç içe yanıtlar üst düzey limit ve total dışındadır, ancak faturalandırılabilir sonuçları artırabilir.

İç içe replies, tam bir yanıt arşivi değildir ve bu ek toplama için ayrı bir devam cursor’u göstermez. Yanıtları bağımsız olarak sayfalandırmak için Read replies işlemini ve döndürdüğü cursor’u kullanın. Üst düzey gönderi cursor’unu yanıtlar için yeniden kullanmayın.

4. Gönderileri arayın

POST /api/v1/data/x/tweet/search

AlanTürGerekliAnlamı
querystringEvetArama metni, 1–1.000 karakter
query_typestringHayırLatest (varsayılan) veya Top
limitintegerHayır1–1.000; mevcut uygulama en az 20 kullanır, varsayılan 20’dir
cursorstringHayırSayfalama cursor’ı, en fazla 4.000 karakter
since_timeinteger or stringHayırBaşlangıç zamanı; belirsiz olmayan sayısal bir değer için Unix saniyelerini kullanın
until_timeinteger or stringHayırBitiş zamanı; milisaniye değil, Unix saniyelerini kullanın
curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/tweet/search" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"retrieval augmented generation","query_type":"Latest","limit":20}'

Yanıt tweets, total, has_next ve next_cursor içerir. Gönderi nesneleri id, content, author, created_at ve metrics içerir; yanıtlar ve alıntılanmış/yeniden gönderilmiş gönderiler iç içe olabilir. Kimlikleri string olarak ele alın.

Sonuç sayısı sınırları

limit bir hedeftir, garanti değildir. Mevcut uygulama en az 20’lik bir hedef kullanır: 20’lik bir hedef bir üst akış sayfası okur; daha büyük hedefler otomatik olarak 50 sayfaya kadar getirir. Her sayfadan önce geçen süre kontrol edilir ve 60 saniyeyi aştığında daha fazla sayfa getirilmez. Devam eden bir üst akış isteği yine de zaman alabilir; bu nedenle bu, genel bir HTTP zaman aşımı değildir.

Toplama ayrıca hedefe ulaşıldığında, üst akışta sonraki sayfa olmadığında, bir sayfa boş olduğunda veya cursor eksik olduğunda durur. limit değerinden daha az gönderi dönmesi, isteğin başarısız olduğu veya tüm eşleşen gönderilerin alındığı anlamına gelmez. Devam etmeden önce has_next ve next_cursor kontrol edin.

{
  "tweets": [{
    "id":"example-post-id",
    "content":"Example post content",
    "author":{"user_id":"example-user-id","username":"example","display_name":"Example"},
    "created_at":"2026-11-01T00:00:00Z",
    "metrics":{},
    "replies":[]
  }],
  "total":1,
  "has_next":false,
  "next_cursor":null
}

5. Yanıtları okuyun

POST /api/v1/data/x/tweet/replies

AlanTürGerekliAnlamı
tweet_idsstring or string arrayEvetTek bir gönderi kimliği veya en fazla 20 kimliklik bir toplu istek
cursorstringHayırEn fazla 4.000 karakter; tek bir gönderi kimliğiyle kullanın
since_timeintegerHayırUnix saniyeleri cinsinden başlangıç zamanı
until_timeintegerHayırUnix saniyeleri cinsinden bitiş zamanı

Yer tutucuyu gerçek bir gönderi kimliğiyle değiştirin:

curl -sS --request POST "https://openapi.felo.ai/api/v1/data/x/tweet/replies" \
  -H "Authorization: Bearer $FELO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"tweet_ids":["POST_ID"]}'

Zaman çizelgesi ve gönderi aramasının aksine, yanıtlar results altında gruplanır. Her girişin kendi sayfalama durumu vardır:

{"results":[{"tweet_id":"POST_ID","replies":[],"total":0,"has_next":false,"next_cursor":null}]}

İstek başına yanıt sınırları

Her istek, her tweet_id için bir üst akış yanıt sayfası okur ve en fazla 100 yanıt tutar; tüm yanıt sayfalarını otomatik olarak getirmez. En fazla 20 kimliklik bir toplu istekte, 100 yanıt sınırı her results girdisi için ayrı ayrı geçerlidir. Gerçek sayılar daha düşük olabilir.

Her girdinin total değeri, o girdide dönen yanıt sayısıdır; gönderinin tam yanıt sayısı değildir. Devam etmek için, o girdinin next_cursor değerini kullanın ve sonraki istekte yalnızca tek gönderi kimliğini gönderin. İstek başına sınırı artırmak için bir limit parametresi yoktur.

Sayfalama ve maliyet kontrolü

total, geçerli yanıttaki ilgili diziyi sayar: gönderi sorguları için üst düzey gönderiler veya yanıt sorguları için her sonuç girdisindeki yanıtlar. Bu, genel bir eşleşme sayısı, bir gönderinin tam yanıt sayısı ya da nihai faturalandırılabilir sayı değildir.

  1. İlk isteği cursor olmadan gönderin.
  2. Yanıttan has_next ve next_cursor değerlerini okuyun. Yanıtlar için, bunları her sonuç girdisinde okuyun.
  3. Başka bir sayfa varsa ve cursor boş değilse, aynı sorguyla değiştirmeden gönderin. Bir yanıt toplu isteği için her gönderi için ayrı ayrı devam edin.
  4. Sonraki sayfa yoksa, bir cursor tekrar ederse veya kendi sayfa ya da harcama sınırınıza ulaşıldıysa durun.

Sayfalama meta verileri, son üst akış yanıtını yansıtır; dönen koleksiyon sonuç sınırında kesilmiş olabilir. has_next=false olması bile tüm X geçmişinin veya yanıtlarının alındığının garantisi değildir. Sınırlı bir sonuç kümesini mevcut tüm veri olarak etiketlemek yerine, gerçek dönen sayıyı gösterin.

Her başarılı sayfa bir ücret oluşturabilir. Bu beş işlem dönen sonuçlara göre faturalandırılır, sabit bir istek ücretiyle değil. İç içe yanıtlar ve diğer dönen kayıtlar, faturalandırılan sayımı etkileyebilir; maliyeti yalnızca üst düzey dizinin uzunluğuna göre tahmin etmeyin. Güncel fiyatları ve konsoldaki kullanımı kontrol edin. Tam nesne alanları OpenAPI şemasında yer alır.

Yardım mı gerekiyor?