Kontrak pengambilan untuk pemrosesan batch

Dapatkan kunci API

Rute dan autentikasi

Host pengambilan adalah https://api.redditstreamapi.com. Gunakan GET /v1/search untuk pencarian, /v1/posts untuk postingan, dan /v1/comments untuk komentar. /v1/item?id=... mengambil item yang pengenalnya diketahui; /v1/subreddits?prefix=... menyaring nama komunitas berdasarkan awalan. /v1/status mengungkap cakupan layanan statis. Ini adalah arsip historis independen, bukan layanan resmi Reddit atau koneksi SSE dan WebSocket. Tidak ada OAuth, operasi tulis, pemungutan suara, pesan pribadi, atau notifikasi langsung.

Autentikasi menerima Authorization: Bearer YOUR_API_KEY dan X-API-Key: YOUR_API_KEY. Kedua bentuk valid dan nilainya adalah kunci arsip domain ini, bukan token OAuth Reddit. Isi nilai asli hanya pada lingkungan server; jangan menaruhnya di laporan kesalahan atau kode browser. Cookie sesi Secure HttpOnly pada akun berbeda dari header pengambilan. Akun, kunci, dan saldo domain ini tidak dibagikan kepada merek lain. Catat pengenal pekerjaan lokal dan kondisi kueri secara terpisah dari kredensial rahasia.

GET https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2 memilih halaman kedua dengan batas tiga rekaman. Contoh itu bukan bukti bahwa hasil tersedia atau bahwa halaman berikutnya memiliki waktu yang lebih baru. Halaman bukan kursor kejadian langsung. Pisahkan keberhasilan HTTP dari keberhasilan penyimpanan hasil. Penanda lokal dapat membantu mengetahui langkah yang sudah dikerjakan, tetapi tidak menciptakan jaminan snapshot tetap, kelanjutan tanpa kehilangan, atau pengambilan lengkap di server. Periksa berkas yang sudah ada sebelum mengulang permintaan.

Filter, urutan, dan total

Filter pencarian, postingan, dan komentar adalah q, subreddit, author, kind, from, to, min_score, limit, dan page. kind menerima post atau comment. Tanggal memakai YYYY-MM-DD dalam UTC dan to mencakup seluruh hari. min_score menerapkan ambang skor minimum, bukan pengurutan. id hanya untuk /v1/item, bukan filter /v1/posts atau /v1/comments. parent_id dan link_id dapat dikembalikan pada rekaman tetapi bukan filter kueri. Jangan menerjemahkan nama parameter atau menambahkan operator yang tidak didukung saat menyusun jendela pekerjaan.

Maksimal 100 rekaman per permintaan dan 100 halaman per kueri dapat diminta. Setiap halaman adalah panggilan tersendiri. Urutannya adalah urutan dokumen arsip, bukan waktu, relevansi, atau skor. eq menandakan total rekaman tepat, gte batas bawah, dan unknown atau null total tepercaya yang tidak diketahui. Total bukan jumlah halaman. Nilai tepat tidak boleh diperlakukan sebagai perkiraan semata, tetapi juga tidak membuktikan semua hasil telah diterima atau disimpan oleh klien.

Rekaman tidak disusun menjadi pohon percakapan oleh server. Jika parent_id dan link_id tersedia, pengelompokan lokal dapat dipilih untuk analisis hubungan. Membaca, memberi kategori, atau menghitung tidak mengharuskan pohon; induk yang tidak diterima tidak dapat direkonstruksi dari ketiadaan data. Iterasi halaman, pembagian tanggal, dan deduplikasi tidak membuktikan cakupan lengkap atau pengambilan unik. Hitungan agregasi komunitas juga tidak dijamin tepat secara global, dan hasil awalan bukan daftar alfabetis yang menyeluruh. Simpan batas hasil bersama kondisi pengambilannya.

Kode status dan biaya

Setiap pengambilan berhasil, termasuk hasil kosong, memakai satu kredit; 1.000 keberhasilan berharga $1. Permintaan tidak valid tidak didebit dan kegagalan sistem hulu mengembalikan kredit yang dicadangkan. Waktu tunggu habis di klien tidak membuktikan kegagalan server. Keberhasilan dapat terjadi sebelum respons hilang, sehingga pengulangan yang berhasil dikenai kredit lagi. Sifat baca saja tidak menjamin respons identik atau percobaan gratis. Periksa data lokal dan batasi jumlah percobaan serta anggaran sebelum mengirim ulang.

400 memerlukan koreksi parameter, nilai, atau tanggal. 401 menunjukkan kunci hilang atau tidak valid; periksa domain dan nilai lama setelah regenerasi. 402 menandakan saldo kurang, sedangkan 429 menandakan batas laju. Jangan mengulang semua kode dengan logika yang sama. Bila memakai jeda dan pengurangan frekuensi, tetapkan kondisi berhenti dan jangan menghindari batas melalui akun lain. Pertahankan status setiap tahap pekerjaan tanpa menyertakan header rahasia pada pesan yang diteruskan ke sistem pemantauan.

/v1/status publik dan tidak dikenai biaya. Cakupan statis dan respons HTTP yang ditampilkan tidak menguji penyimpanan pencarian, rekaman, kunci, atau saldo. Jalur ini bukan bukti bahwa kueri dapat dijalankan atau bahwa pekerjaan berhasil menyimpan hasil. Tinjau pengambilan, penyimpanan lokal, dan pengolahan berikutnya sebagai tahap berbeda. Retensi informasi akun tidak menjamin retensi rekaman arsip. Kelengkapan, ketetapan hasil, kinerja tertentu, dan ketersediaan terus-menerus juga tidak dijanjikan oleh antarmuka ini.

Rute API

MetodeRuteParameter
GET/v1/searchq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/postsq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/commentsq, subreddit, author, kind, from, to, min_score, limit, page
GET/v1/itemid
GET/v1/subredditsprefix
GET/v1/status—

Parameter kueri

ParameterNilai / tipe / rentang
qtext
subredditkeyword
authorkeyword
kindpost | comment
fromISO date
toISO date
min_scoreinteger
limit1–100
page1–100
iditem ID
prefixsubreddit prefix
curl -H "Authorization: Bearer YOUR_API_KEY" 'https://api.redditstreamapi.com/v1/search?q=research&limit=10'

import json, urllib.request
request = urllib.request.Request('https://api.redditstreamapi.com/v1/search?q=research&limit=10', headers={"Authorization": "Bearer YOUR_API_KEY"})
with urllib.request.urlopen(request) as response:
    print(json.load(response))

fetch("https://api.redditstreamapi.com/v1/search?q=research&limit=10", {headers: {Authorization: "Bearer YOUR_API_KEY"}})
  .then(response => response.json()).then(console.log);