Reddit App API
ID

BerandaDokumentasi

Bangun permintaan pertama berdasarkan pertanyaan pembaca

Gunakan kunci sisi server, filter terdokumentasi, dan paginasi terbatas untuk menambahkan bacaan diskusi historis tanpa membocorkan kredensial atau melebih-lebihkan hasil.

Permintaan pertama

Kirim permintaan dari server Anda dan rahasiakan kunci API Anda.

cURL · Server Anda
: "${REDDITAPP_API_KEY:?Set REDDITAPP_API_KEY on your server}"
curl --get --fail-with-body 'https://api.redditapp.com/v1/search' \
  -H "Authorization: Bearer ${REDDITAPP_API_KEY}" \
  --data-urlencode 'q=offline maps' \
  --data-urlencode 'subreddit=hiking' \
  --data-urlencode 'limit=3'

Referensi API

↔ Gulir tabel secara horizontal

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, limit
GET/v1/status—
Catatan tambahan
API
GET/v1/search · /v1/posts · /v1/comments · /v1/item · /v1/subreddits · /v1/status
q · subreddit · author · kindkind: post | comment
from · toYYYY-MM-DD
min_scorescore ≥ min_score
limit · page1…100 · 1…100
/v1/itemid
/v1/subredditsprefix · limit
_doc≠ date · ≠ relevance · ≠ score
pagination.relationeq · gte · unknown
paginationhas_more · window_exhausted · truncated
1 credit$0.001
$11000 credits
$5050000 credits
400 · 401 · 402 · 429 · 502HTTP

Tempatkan backend di antara aplikasi dan arsip

Dalam contoh fitur pendakian, klien seluler atau web mengirim frasa offline maps ke backend Anda. Backend memvalidasi permintaan, menerapkan batas aplikasi, dan memanggil arsip dengan kunci layanan tersimpan. Kembalikan hanya field yang dibutuhkan layar baca. Contoh ini adalah titik awal desain, bukan klaim bahwa tenant ini telah memperoleh rekaman tentang pendakian.

Gunakan GET https://api.redditapp.com/v1/search?q=offline%20maps&subreddit=hiking&limit=3&page=1. Kirim header X-API-Key: YOUR_SAVED_KEY atau Authorization: Bearer YOUR_SAVED_KEY dari backend. Jangan masukkan kredensial ke URL, bundel klien, atau log publik. Cookie sesi halaman akun tidak menggantikan autentikasi pengambilan data.

Pilih filter yang benar-benar diterima layanan

Pencarian menerima q, subreddit, author, kind, from, to, min_score, limit, dan page. q menerapkan pencocokan AND pada title dan text; ini bukan janji pencocokan frasa persis atau pencarian semantik. kind menerima post atau comment. Subreddit dan penulis difilter berdasarkan nilai field yang tepat. min_score memfilter rekaman, bukan mengurutkannya.

Gunakan from dan to sebagai tanggal YYYY-MM-DD dalam UTC. Tanggal to mencakup seluruh hari UTC tersebut. Misalnya, from=2025-01-01 dan to=2025-12-31 menentukan rentang tanggal tanpa meminta pengurutan menurut tanggal. Jangan kirim string datetime ISO, DSL kueri sewenang-wenang, parameter sort, atau filter parent_id/link_id. Parameter yang tidak didukung akan ditolak.

Pilih endpoint sesuai tugas

GET /v1/posts dan GET /v1/comments membatasi jenis rekaman serta menerima filter pencarian; keduanya tidak memerlukan id. GET /v1/item?id=RECORD_ID mencari rekaman yang tersedia berdasarkan id-nya. GET /v1/subreddits?prefix=hik&limit=3 mengembalikan agregasi subreddit terbatas; jumlahnya bukan jaminan ketepatan secara global.

GET /v1/status bersifat publik dan tidak dikenai biaya. Responsnya berisi pernyataan statis tentang arsip historis dan menunjukkan bahwa penangan HTTP merespons. Endpoint ini tidak menanyai backend pencarian, membuktikan cakupan isi, atau mengukur kesehatan arsip. Tidak satu pun endpoint tersebut menyediakan penerbitan, pemberian suara, pesan, penanda akun, atau pohon percakapan lengkap.

Baca field paginasi sebelum menambahkan Tampilkan lagi

Respons pengambilan berisi data, pagination, dan credits. Rekaman dalam data adalah objek sumber datar dari sistem hulu; title, author, tanggal, atau permalink yang diinginkan mungkin tidak ada. Arsip menggunakan urutan _doc, bukan urutan waktu, relevansi, atau skor. Pengurutan lokal dapat menata ulang bagian yang sudah diambil, tetapi tidak menjadikannya bagian yang paling baru atau paling tinggi peringkatnya secara global.

Pertahankan filter dan limit yang sama ketika menaikkan pagination.page. pagination.has_more memakai satu rekaman tambahan untuk melihat kelanjutan bila tersedia. Jika nilainya false, jangan tawarkan permintaan berikutnya secara otomatis. pagination.window_exhausted menandai kondisi batas halaman terakhir; mencapainya bukan bukti bahwa semua materi yang cocok telah diambil dari arsip.

Batasnya adalah 1–100 rekaman dan halaman 1–100. Baca pagination.total bersama pagination.relation: eq berarti tepat menurut semantik hitungan respons tersebut, gte adalah batas bawah, dan unknown tidak memberi total yang dapat diandalkan, yang mungkin bernilai null. Halaman kosong setelah halaman pertama tidak membuktikan total. Halaman 100 yang penuh dengan limit 100 tidak menyisakan ruang untuk rekaman tambahan dan menghasilkan batas bawah; has_more bernilai false pada batas halaman. Untuk agregasi subreddit, total tidak diketahui dan pagination.truncated menandai kelompok agregasi yang tidak disertakan.

Tangani biaya dan kegagalan secara eksplisit

Pengambilan yang berhasil memerlukan satu kredit, termasuk bila array data kosong. Validasi masukan sebelum mengirimnya dan jangan mengambil halaman hanya untuk menggerakkan indikator pemuatan. HTTP 400 berarti masukan tidak valid; 401 kunci layanan hilang atau tidak valid; 402 kredit tidak cukup; 429 batas laju tercapai. Permintaan yang ditolak ini tidak mereservasi kredit pengambilan.

Permintaan ke sistem hulu yang gagal dilaporkan sebagai HTTP 502 dan melepaskan kredit yang direservasi, atau melaporkan pengembalian yang masih menunggu rekonsiliasi. Respons yang hilang di batas aplikasi membuat hasilnya tidak pasti; jangan anggap permintaan itu gratis. Pertahankan keadaan kueri, patuhi Retry-After, dan biarkan pengguna memilih percobaan ulang bila sesuai. Pengelolaan kredensial dan saldo adalah tugas operator, bukan pendaki.

Petakan respons ke layar baca yang jujur

Lakukan escaping pada teks rekaman sebelum menampilkannya. Pertahankan identitas sumber dan tautannya bila tersedia, tandai tanggal yang hilang sebagai tidak diketahui, serta bedakan waktu pembuatan rekaman dari waktu pengambilan oleh aplikasi. Pengenal induk dan tautan dapat membantu pengelompokan lokal bila ada, tetapi tidak melengkapi leluhur yang hilang.

Status antarmuka mengembangkan usulan pesan memuat, kosong, dan gagal. Catatan praktik di Panduan aplikasi membahas kartu, referensi lokal, dan anggaran permintaan. Kunci dan kredit memuat penyiapan akun beserta harga. Tinjau dan uji implementasi Anda sendiri; contoh-contoh ini tidak membuktikan fungsi aktif atau saran jalur terkini.