Dasar Konektivitas dan Autentikasi
Gunakan host api.redditapistack.com untuk mengakses arsip historis independen ini. Layanan bukan resmi atau terafiliasi dengan Reddit dan tidak menyediakan data langsung. Permintaan pengambilan memakai GET dengan kunci dalam header X-API-Key. GET /v1/status tidak memerlukan kunci. Cookie sesi panel akun bukan pengganti kunci API untuk mengambil rekaman.
Kunci ditampilkan sekali segera setelah pendaftaran email dan kata sandi, sebelum pembayaran. Kunci dan saldo terkait akun pada domain ini, bukan satu kunci baru untuk setiap program klien. Simpan kredensial di tempat yang sesuai dan pisahkan dari parameter pencarian. Regenerasi oleh pengguna yang sudah masuk memerlukan konfirmasi kata sandi dan langsung membatalkan kunci lama.
Python menyediakan urllib.request atau http.client dalam pustaka standar; requests adalah paket pihak ketiga yang mungkin perlu dipasang. Di JavaScript, periksa dukungan fetch pada lingkungan yang dipilih. Kirim nilai kunci mentah dalam X-API-Key tanpa awalan Bearer. Sebagai alternatif, gateway juga menerima Authorization: Bearer dengan kunci yang valid. Periksa status HTTP sebelum memperlakukan isi respons sebagai data yang berhasil diperoleh.
Struktur Permintaan dan Data Respons
Semua respons API mengembalikan catatan datar, bukan struktur pohon utas yang disusun server. Saat field parent_id atau link_id hadir, klien perlu mengelompokkan data secara lokal jika diperlukan. Tidak ada filter query untuk field hubungan ini, dan tidak ada jaminan hierarki percakapan yang lengkap.
Parameter pencarian adalah q, subreddit, author, kind, from, to, min_score, limit, dan page. kind menerima post atau comment. Tanggal memakai YYYY-MM-DD berdasarkan UTC dengan to inklusif. limit dan page berada pada rentang 1–100 untuk pengambilan daftar. Satu panggilan mengambil satu halaman; maksimal 100 halaman per kueri tidak berarti semua halaman dikirim sekaligus.
Urutan _doc internal bukan urutan waktu, relevansi, skor, atau kronologi pengindeksan yang dijamin. min_score hanya menyaring. Total eq tepat untuk kueri, gte merupakan batas bawah, dan unknown berarti tidak ada total andal; nilainya dapat null. Relasi tersebut tidak membuktikan kelengkapan arsip. Pembagian kueri juga tidak menjamin rekaman unik atau pengambilan tanpa celah.
Penanganan Error dan Kode HTTP
GET /v1/search digunakan untuk pencarian umum, /v1/posts untuk postingan, dan /v1/comments untuk komentar. Kedua daftar terakhir tidak memerlukan id; /v1/item memerlukannya untuk satu item. /v1/subreddits mendukung prefix. Pilih rute sesuai tujuan, lalu periksa bidang yang benar-benar hadir dalam rekaman. Jangan menganggap semua rute menerima semua filter atau menghasilkan skema bidang yang sama.
400 menunjukkan permintaan tidak valid, 401 kunci hilang atau tidak valid, 402 kredit tidak cukup, dan 429 batas laju terlampaui. Perbaiki parameter atau kunci sebelum mengulang. Untuk 429, pertimbangkan jeda dan jumlah pengulangan terbatas. Respons kosong yang berhasil berbeda dari kesalahan dan tetap menggunakan 1 kredit; jangan menampilkannya sebagai kegagalan autentikasi.
Permintaan tidak valid tidak mendebit; kegagalan upstream mengembalikan kredit cadangan. Koneksi klien yang gagal setelah keberhasilan server dapat tetap dikenai biaya. /v1/status gratis dan hanya menampilkan penjelasan statis serta respons HTTP, bukan kesehatan pencarian atau ketersediaan rekaman. Simpan respons mentah dan parameter untuk memeriksa hasil lokal tanpa mengandalkan kueri ulang yang identik.
Rute API
| Metode | Rute | Parameter |
|---|---|---|
GET | /v1/search | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/posts | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/comments | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/item | id |
GET | /v1/subreddits | prefix |
GET | /v1/status | — |
Parameter kueri
| Parameter | Nilai / tipe / rentang |
|---|---|
q | text |
subreddit | keyword |
author | keyword |
kind | post | comment |
from | ISO date |
to | ISO date |
min_score | integer |
limit | 1–100 |
page | 1–100 |
id | item ID |
prefix | subreddit prefix |
curl -H "Authorization: Bearer YOUR_API_KEY" 'https://api.redditapistack.com/v1/search?q=research&limit=10'
import json, urllib.request
request = urllib.request.Request('https://api.redditapistack.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.redditapistack.com/v1/search?q=research&limit=10", {headers: {Authorization: "Bearer YOUR_API_KEY"}})
.then(response => response.json()).then(console.log);