ルートと認証
ベースURLはhttps://api.redditfetch.comです。GET /v1/searchは投稿とコメントを検索し、/v1/postsは投稿、/v1/commentsはコメントを取得します。GET /v1/item?id=...では一件の識別子を指定します。idはitem専用で、postsやcommentsのフィルターではありません。GET /v1/subreddits?prefix=...はコミュニティ名の先頭部分で検索します。コミュニティ集計の件数が全体に対して正確である保証はありません。
取得用の認証はAuthorization: Bearer YOUR_API_KEYとX-API-Key: YOUR_API_KEYの両方に対応します。一方を選び、実際の値をサーバーの秘密設定から送ってください。アカウントパネルのSecure HttpOnlyセッションCookieは別用途で、APIキーヘッダーの代わりにはなりません。アカウント、キー、残高はこのドメイン専用であり、別ブランドのキーでは同じアカウントを利用できません。
GET /v1/statusは公開されており、クレジットを消費しません。固定のサービス範囲の説明とHTTPアプリケーションの応答を示します。アーカイブの接続先、クエリの動作、記録の有無、残高は検査しません。statusが成功しても、次の取得の成功を予測する根拠にはできません。データ要求の応答は個別に処理してください。
フィルターとページ処理
検索、投稿、コメントではq、subreddit、author、kind、from、to、min_score、limit、pageを使えます。kindはpostまたはcommentです。日付はUTC基準のYYYY-MM-DD形式で、toの日付を含みます。min_scoreは最低スコアの条件であり、並べ替え指定ではありません。parent_idとlink_idはクエリフィルターではなく、これらを付けて会話全体を要求する機能はありません。
各リクエストは厳格な制限内に収まる必要があります。例えば、単一リクエストで取得できるレコードの最大数は100件まで、クエリごとのページ数は100ページ以内です。また、min_scoreパラメータはスコア順のソートではなく、単なるフィルタリングとして機能することに注意してください。
limitは1~100、pageは1~100です。ページの反復や期間の分割は、全件取得や重複のない収集を保証しません。合計はページ数ではなく記録数です。eqは正確な合計、gteは下限、unknownやnullは信頼できる合計がないことを示します。正確な合計があっても、クライアントがすべて保存した証明にはなりません。自分が保存した条件とページを記録してください。
APIからのレスポンスは、サーバー側でスレッド木として組み立てられた複雑なデータではなく、フラットなレコードです。もし parent_id や link_id のフィールドが存在する場合は、クライアント側でローカルにグループ化できます。しかし、完全に整理された会話履歴や祖先関係が保証されるわけではないため、クライアント側の実装次第で表示が変化します。 読む、分類する、数えるだけならツリーの構築は不要です。関係の整理は任意で、受信していない親やコメントを復元するものではありません。
HTTPエラーと費用
HTTP 400では条件の形式や値を確認します。HTTP 401はキーの不足または無効、HTTP 402は残高不足、HTTP 429は送信頻度の制限を示します。Node.jsではこれらのHTTP応答とネットワーク上の失敗によるpromiseの拒否を区別してください。response.okとresponse.statusを確認して処理を分けます。条件やキーは修正し、頻度の制限では新しい送信を待ちます。
成功した取得は空でも一クレジットです。不正な要求は引き落とされず、上流障害では予約したクレジットが戻ります。ただし、クライアントの接続切断はサーバーでの有料の成功を隠す場合があります。成功した再試行は追加費用です。秘密のヘッダーを記録せずに状態や自分の処理識別子を追える設計にすると、再送判断を検討できます。通信エラーの表示だけで無料だったと判断しないでください。