조회 경로와 인증
조회 호스트는 https://api.redditstreamapi.com 입니다. GET /v1/search는 검색, /v1/posts는 게시물, /v1/comments는 댓글 목록에 사용합니다. /v1/item?id=...는 식별자를 아는 항목, /v1/subreddits?prefix=...는 이름 접두어로 커뮤니티를 찾는 경로입니다. /v1/status는 정적인 서비스 범위를 공개합니다. 이 서비스는 독립적인 과거 아카이브이며 공식 Reddit 연동이나 SSE, WebSocket 연결이 아닙니다. OAuth, 쓰기, 투표, 메시지와 실시간 알림도 없습니다. 정기적인 호출만으로 기록 갱신 주기를 알 수는 없습니다.
Authorization: Bearer YOUR_API_KEY와 X-API-Key: YOUR_API_KEY는 모두 지원됩니다. 이 도메인의 아카이브 키를 사용하고 Reddit OAuth 토큰을 넣지 마세요. 실제 값은 서버 실행 환경에서 설정하고 공개 코드와 오류 로그에는 남기지 않습니다. 계정의 Secure HttpOnly 세션 쿠키는 조회 헤더와 별도입니다. 키와 잔액은 다른 브랜드와 공유되지 않습니다. 작업 조건과 진행 기록에도 비밀 값이 들어가지 않도록 구성하세요. 브라우저에 로그인했다는 사실이 배치 프로세스의 조회 인증까지 올바르다는 증거는 아닙니다.
GET https://api.redditstreamapi.com/v1/posts?subreddit=datasets&limit=3&page=2 는 두 번째 페이지를 최대 세 건으로 요청합니다. 결과의 존재나 다음 시간대로의 진행을 보여 주는 예제가 아닙니다. 페이지 번호는 실시간 이벤트 커서도 아닙니다. HTTP 성공과 로컬 저장 성공을 별도로 처리하고 다시 시작하기 전에 손에 남은 결과를 확인하세요. 자체 체크포인트가 고정 스냅샷, 누락 없는 재개나 전량 수집에 관한 서버 보장을 만드는 것은 아닙니다. 요청 형식과 실제 결과를 구분해서 작업 기록을 남겨야 합니다.
필터, 순서와 총계
검색, 게시물과 댓글의 필터는 q, subreddit, author, kind, from, to, min_score, limit, page입니다. kind는 post 또는 comment를 사용합니다. 날짜는 UTC의 YYYY-MM-DD이며 to는 지정일 전체를 포함합니다. min_score는 최소 점수 조건으로 정렬하지 않습니다. id는 /v1/item 전용이며 게시물이나 댓글 목록의 식별자 필터가 아닙니다. parent_id와 link_id도 응답에 있을 수 있는 관계 필드일 뿐 조회 매개변수는 아닙니다. 작업을 나누더라도 지원하지 않는 연산자나 번역한 매개변수 이름을 추가해서는 안 됩니다.
한 요청은 최대 100개 레코드, 한 쿼리는 최대 100페이지이며 페이지마다 별도 호출입니다. 순서는 시간, 관련도나 점수 기준이 아닌 아카이브 문서 순서입니다. 총계의 eq는 정확한 레코드 수, gte는 하한, unknown 또는 null은 신뢰할 총계를 알 수 없는 상태입니다. 총계는 페이지 수가 아닙니다. eq까지 모두 추정치라고 처리하면 안 되지만 정확한 수가 클라이언트의 전량 수신이나 저장을 증명하지도 않습니다. 실제로 저장한 결과와 응답의 총계를 따로 다루세요.
API 응답은 서버의 스레드 구조가 아닌 평면적인 레코드 형식을 가집니다. 반환된 레코드에 부모 또는 링크 ID 필드가 포함되어 있다면 클라이언트는 이를 활용해 데이터를 조합할 수 있습니다. 이때 반환된 필드의 완전성을 보장하지는 않으며, 아카이브의 완전한 계보 구조를 드러내진 않습니다. 단순한 평면적 구조로 인해 유연한 처리가 가능해집니다. 관계 분석이 필요한 경우에만 선택적으로 묶으면 되고 일반적인 읽기나 집계에는 트리가 필요하지 않습니다. 누락된 부모는 복원되지 않습니다. 날짜 분할, 페이지 반복과 중복 제거도 전체 범위나 수집의 유일성을 증명하지 않습니다. 커뮤니티 집계는 전역의 정확한 건수로 보장되지 않으며 접두어 검색도 완전한 알파벳순 목록은 아닙니다. 받은 범위를 조건과 함께 설명하세요.
과금과 오류의 구분
성공한 조회는 빈 결과도 한 크레딧을 사용하고 성공 요청 1,000건은 $1입니다. 유효하지 않은 요청은 차감되지 않고 상위 시스템 실패의 예약분은 반환됩니다. 클라이언트의 시간 초과가 서버 실패를 증명하지는 않습니다. 성공 후 응답이 유실되었다면 성공한 재시도에도 비용이 듭니다. 읽기 전용이라도 동일 응답이나 무료 반복은 보장되지 않습니다. 재시도 전 로컬 결과를 확인하고 시도 횟수와 예산을 제한하세요. 응답 성공과 뒤따르는 저장 작업의 결과도 나누어 기록해야 합니다.
400이면 지원하지 않는 매개변수, 값과 날짜 형식을 수정하세요. 401이면 키 누락과 무효화를 확인하고 다른 도메인 값이나 재생성 전의 설정을 점검합니다. 402는 잔액 부족, 429는 빈도 제한입니다. 모든 코드를 즉시 같은 방식으로 재시도하지 마세요. 대기와 빈도 감소를 적용할 때도 중단 조건을 두고 다른 계정으로 제한을 피하지 않습니다. 비밀 헤더를 제외한 로그로 어느 작업 단계가 멈췄는지 확인하세요. 키 변경이 필요한 경우에는 사용하는 프로세스의 설정도 함께 점검해야 합니다.
/v1/status는 키가 필요 없고 과금되지 않지만 정적인 범위와 HTTP 응답만 알려 줍니다. 검색 엔진, 특정 기록, 키와 잔액은 검사하지 않습니다. 쿼리 실행이나 저장 성공을 대신하지 않으므로 조회, 로컬 저장과 후속 처리를 다른 단계로 추적하세요. 계정 정보의 보관도 아카이브 기록의 영구 보존을 뜻하지 않습니다. 결과의 불변성, 완전성, 일정한 성능이나 지속적인 가용성에 새로운 보장을 덧붙이면 안 됩니다. 작업 완료 여부는 자신이 실제로 받은 결과와 처리 상태를 기준으로 설명해야 합니다.
API 엔드포인트
| 메서드 | 엔드포인트 | 매개변수 |
|---|---|---|
GET | /v1/search | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/posts | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/comments | q, subreddit, author, kind, from, to, min_score, limit, page |
GET | /v1/item | id |
GET | /v1/subreddits | prefix |
GET | /v1/status | — |
쿼리 매개변수
| 매개변수 | 값 / 유형 / 범위 |
|---|---|
q | text |
subreddit | keyword |
author | keyword |
kind | post | comment |
from | ISO date |
to | ISO date |
min_score | integer |
limit | 1–100 |
page | 1–100 |
id | item ID |
prefix | subreddit prefix |
curl -H "Authorization: Bearer YOUR_API_KEY" 'https://api.redditstreamapi.com/v1/search?q=research&limit=10'
import json, urllib.request
request = urllib.request.Request('https://api.redditstreamapi.com/v1/search?q=research&limit=10', headers={"Authorization": "Bearer YOUR_API_KEY"})
with urllib.request.urlopen(request) as response:
print(json.load(response))
fetch("https://api.redditstreamapi.com/v1/search?q=research&limit=10", {headers: {Authorization: "Bearer YOUR_API_KEY"}})
.then(response => response.json()).then(console.log);