A historical archive with its own authentication
Reddit API Proxy offers read-only access to an independent historical Reddit archive. It is not an official Reddit service, is not affiliated with Reddit and is not a transparent proxy for arbitrary Reddit requests. It does not bypass restrictions, relay Reddit OAuth sessions or provide live feeds, posting, voting or private messages. A familiar header name does not make an existing Reddit client compatible with the archive contract.
Protected retrieval accepts X-API-Key: <key> and Authorization: Bearer <key> as alternatives. Either carries a key issued for redditapiproxy.com; Bearer does not mean a Reddit OAuth token can be reused. Keep the secret in protected server configuration and exclude it from public code, URLs and logs. The account panel's Secure HttpOnly session cookie is separate from retrieval authentication.
Check the host, GET path, supported query parameters and chosen key header in your own client before adding retries. A missing or invalid key produces 401; changing page size will not repair it. An empty successful data array is different from a rejected credential. Neither a valid key nor a successful request establishes complete archive coverage, fixed coverage dates, immutable results or permanent access to a particular record.
Compare two header formats on one bounded request
The example is GET https://api.redditapiproxy.com/v1/comments?subreddit=devops&limit=3. subreddit=devops restricts the community and limit=3 asks for at most three comment records. It does not promise three matches or a complete conversation. With a placeholder only, one request form is curl --request GET --header "X-API-Key: YOUR_API_KEY" "https://api.redditapiproxy.com/v1/comments?subreddit=devops&limit=3".
The alternative is curl --request GET --header "Authorization: Bearer YOUR_API_KEY" "https://api.redditapiproxy.com/v1/comments?subreddit=devops&limit=3". Replace the placeholder privately on your server. These are two separate request examples, not a requirement to send both headers. If you execute both and both succeed, they consume two credits. Matching arguments do not guarantee identical returned records or order between the calls.
Synthetic response excerpt for demonstration only: {"data":[],"pagination":{"page":1,"limit":3,"total":0,"relation":"eq"},"credits":{"cost":1,"balance":99}}. No real request produced it and the balance is fictional. Save a received response before validating data and transforming fields. A successful empty result costs one credit; missing devops records do not prove the community has no historical content elsewhere.
Separate the error, the response and the charge
HTTP 400 means invalid parameters, 401 a missing or invalid key, 402 insufficient credits and 429 a frequency limit. Correct the cause before repeating. Invalid requests do not debit; upstream failures refund reservations. A client timeout or connection loss may happen after a charged success, and another successful attempt costs another credit. A failure in your own transformation or storage does not refund a remote success.
Content responses contain flat records, not server-assembled trees. Present parent_id and link_id may support local grouping without complete ancestry. _doc is internal order, not chronology, relevance or score. min_score filters without sorting. A content request returns at most 100 records and page ranges from 1 to 100 across separate requests. Iteration and local deduplication do not prove exhaustive coverage or unique results.
Signup uses email and a password of 12–72 UTF-8 bytes, showing the key once immediately before any payment. Conditional 100 trial credits depend on network-wide anti-abuse eligibility. Each successful retrieval costs one credit: $1 per 1000 requests, with a $50 minimum paid top-up for 50000 credits. Paid credits do not expire and there are no subscriptions. Read documentation, pricing, the key page and the retry guide before funding tests; public /v1/status is free but only confirms an HTTP response with static scope information.