Header compatibility and HTTP outcomes
Use GET under https://api.redditapiproxy.com for protected archive reads. Both X-API-Key: <key> and Authorization: Bearer <key> are supported alternatives. The credential belongs to this archive domain, not Reddit OAuth. Keep it on your server and inspect request construction without exposing its value. The account panel uses a separate Secure HttpOnly session cookie; signing into that panel does not authenticate your application's GET request.
HTTP 400 means invalid or unsupported parameters. Check the actual route and query string rather than sending a JSON request body. HTTP 401 means a missing or invalid key, including an old key invalidated by regeneration. Verify the domain and header before changing credentials. HTTP 402 means insufficient credits. HTTP 429 means a frequency limit; use delayed, bounded attempts rather than an immediate loop.
/v1/status is public, keyless and uncharged. It returns a static disclosure of the historical service and confirms that the HTTP application responds. It does not test the search backend, archive records, account balance or key validity. A successful status response cannot explain a protected request's failure or prove readiness for a workload. Observe the actual retrieval outcome separately.
Routes, filters and returned records
/v1/search searches posts and comments. /v1/posts constrains results to posts and /v1/comments to comments. These routes accept q, subreddit, author, kind, from, to, min_score, limit and page, not id. kind accepts post or comment; omit it to allow both through search. q performs text search rather than arbitrary query DSL, sentiment classification or custom server-side analytics.
/v1/item?id=... requires id only and looks for one archived record, which may be absent. It does not retrieve replies or ancestors automatically. /v1/subreddits accepts prefix and limit only for community-name discovery, with no page traversal. Counts are not guaranteed globally exact. A prefix is not a content-route filter, and the catalogue's unknown total is not an exact inventory of all Reddit communities.
from and to use YYYY-MM-DD in UTC and filter created_utc rather than ingestion time; the complete final to day is included. min_score is a numeric score threshold, without sorting or quality assessment. The API returns flat content records rather than server-assembled thread trees, meaning parent and link fields may appear but are not mandatory. Clients can group present parent_id and link_id locally; there are no query filters for them and no complete conversation guarantee.
Page limits and request accounting
Content searches allow limit and page from 1 to 100, with one page per request. Retrieval uses _doc, an internal document order unrelated to insertion time, chronology, relevance or score ranking. Local sorting only reorganizes the received sample. Smaller date windows or deduplication do not prove completeness or uniqueness, and repeated queries do not have guaranteed unchanged results. The archive does not guarantee a fixed schema or permanent record availability.
Responses contain data, pagination and credits. Read pagination.total with relation: eq means an exact query total, gte a lower bound and unknown no reliable total, possibly null. A precise count does not prove all matches were downloaded or that the archive contains all history. Keep returned has_more and window_exhausted indicators to describe boundaries; they are not cursors for unlimited export.
Every successful retrieval costs one credit, including empty results and successful repeats. Invalid requests do not debit; upstream failures refund the reserved credit. A client disconnect may follow a billed success, so a missing response leaves the outcome uncertain. Your own parser or database failure does not establish an upstream failure. Preserve received responses before advancing local progress and budget successful retries separately.