対応するヘッダーとルート
ベースURLはhttps://api.redditapiproxy.comです。保護された取得はAuthorization: Bearer YOUR_API_KEYまたはX-API-Key: YOUR_API_KEYで認証します。両方とも対応し、一方を選べます。Bearerの値はこのアーカイブのキーでありReddit OAuthトークンではありません。本物はサーバーに保管してください。アカウントパネルのSecure HttpOnlyセッションCookieは取得ヘッダーの代用ではなく、キーと残高はこのドメイン専用です。
GET /v1/searchは投稿とコメントを検索し、/v1/postsは投稿、/v1/commentsはコメントを取得します。GET /v1/item?id=...は識別子を知っている一件の取得です。idはitem専用で、postsやcommentsのフィルターではありません。GET /v1/subreddits?prefix=...はコミュニティ名の先頭部分で検索し、limitで要求件数を制限できます。完全な在庫や全体に対する正確な件数は保証されません。
GET /v1/statusは公開でキー不要、無料です。固定のサービス範囲とHTTPアプリケーションの応答を示します。アーカイブ、検索、記録の存在、キー、残高は検査しません。statusの成功だけで保護された取得が動くとは判断しないでください。統合先でこれらの情報を別に示し、実際のデータ要求のHTTP状態を個別に調べる必要があります。
条件と上限のあるページ
検索、投稿、コメントにはq、subreddit、author、kind、from、to、min_score、limit、pageが使えます。kindはpostまたはcommentです。日付はUTC基準のYYYY-MM-DD形式でtoの日を含みます。min_scoreは最低スコアの条件で並べ替えではありません。parent_idとlink_idは検索フィルターではありません。他のルートでもすべて同じ条件が使えるとは考えないでください。
limitは1~100、pageは1~100です。一要求最大100件、一クエリ最大100ページで、各ページは別の要求です。結果はアーカイブ文書順で日時、関連度、スコア順ではありません。期間分割やページ反復は全件取得、同じ結果、重複のなさを証明しません。どの条件とページを保存したか自分の処理記録で追ってください。
合計のeqは正確な件数、gteは下限、unknownやnullは信頼できる合計がない状態です。合計はページ数ではなく、正確でも全件保存の証明にはなりません。APIからのレスポンスはフラットなレコードとして返されます。スレッドツリーや親/リンクの階層構造は自動的に構築されません。クライアント側で必要に応じて、返された親フィールドとリンクフィールドをグループ化することが推奨されます。これは完全な会話履歴を保証するものではないため、注意が必要です。 読む、数えるためのツリー構築は不要であり、関係の整理は目的に応じた任意の処理です。受信していない親やコメントを復元するものではありません。
失敗と費用の区別
APIリクエストでは、適切なHTTPステータスコードを使用してエラーが発生した理由を示す必要があります。400はリクエスト形式の欠陥を示し、データが正しく構造化されていない場合や、必須パラメータが不足している場合に返されます。これはクライアント側の設定ミスである可能性が高いため、リクエストの形式を確認することが重要です。
HTTP 401はキーの不足または無効、HTTP 402は残高不足、HTTP 429は送信頻度の制限です。429は接続のタイムアウトではありません。条件やキーを修正し、頻度の制限では送信を待ちます。クライアントの接続切断とサーバーからのHTTPエラーを同一視しないでください。応答を受け取れたかどうかで、必要な対応や再試行の判断が変わる場合があります。
成功した取得は空でも一クレジットです。不正な要求は引き落とされず、上流障害では予約分が戻ります。応答を受け取れなくてもサーバーで有料の成功が成立している場合があります。成功した再試行は追加費用です。見えた失敗の数だけで無料だったと判断せず、保存状況と自分の作業識別子を確認してください。秘密ヘッダーは記録しないでください。