Primeira requisição
Envie a requisição do seu servidor e mantenha sua chave API privada.
: "${REDDITAPP_API_KEY:?Set REDDITAPP_API_KEY on your server}"
curl --get --fail-with-body 'https://api.redditapp.com/v1/search' \
-H "Authorization: Bearer ${REDDITAPP_API_KEY}" \
--data-urlencode 'q=offline maps' \
--data-urlencode 'subreddit=hiking' \
--data-urlencode 'limit=3'Referência da API
↔ Role a tabela na horizontal
Rotas da API
| Método | Rota | Parâmetros |
|---|---|---|
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, limit |
GET | /v1/status | — |
Notas adicionais
GET | /v1/search · /v1/posts · /v1/comments · /v1/item · /v1/subreddits · /v1/status |
|---|---|
q · subreddit · author · kind | kind: post | comment |
from · to | YYYY-MM-DD |
min_score | score ≥ min_score |
limit · page | 1…100 · 1…100 |
/v1/item | id |
/v1/subreddits | prefix · limit |
_doc | ≠ date · ≠ relevance · ≠ score |
pagination.relation | eq · gte · unknown |
pagination | has_more · window_exhausted · truncated |
1 credit | $0.001 |
$1 | 1000 credits |
$50 | 50000 credits |
400 · 401 · 402 · 429 · 502 | HTTP |
Coloque seu backend entre o aplicativo e o arquivo
Na funcionalidade ilustrativa de trilhas, o cliente móvel ou web envia offline maps ao seu backend. Ele valida a solicitação, aplica os limites do aplicativo e chama o arquivo com uma chave salva. Retorne apenas os campos necessários à tela de leitura. O exemplo é um ponto de partida de design, não uma afirmação de que esta conta de domínio tenha retornado registros de hiking.
Use GET https://api.redditapp.com/v1/search?q=offline%20maps&subreddit=hiking&limit=3&page=1. Envie pelo backend X-API-Key: YOUR_SAVED_KEY ou Authorization: Bearer YOUR_SAVED_KEY como cabeçalho. Mantenha credenciais fora de URLs, pacotes do cliente e registros públicos. O cookie de sessão da página da conta não substitui a autenticação de recuperação.
Escolha filtros realmente aceitos
A busca aceita q, subreddit, author, kind, from, to, min_score, limit e page. q aplica correspondência AND em título e texto; não promete frase exata nem busca semântica. kind aceita post ou comment. Subreddit e author filtram por correspondência exata do campo. min_score filtra registros; não os ordena.
Use from e to como datas YYYY-MM-DD em UTC. A data to inclui aquele dia UTC inteiro. Por exemplo, from=2025-01-01 e to=2025-12-31 definem um intervalo sem solicitar ordenação cronológica. Não envie datas com hora ISO, DSL arbitrária, parâmetro sort ou filtros parent_id/link_id. Parâmetros não aceitos são rejeitados.
Escolha o endpoint para a tarefa
GET /v1/posts e GET /v1/comments restringem o tipo e aceitam os filtros de busca; não exigem id. GET /v1/item?id=RECORD_ID procura um registro disponível por id. GET /v1/subreddits?prefix=hik&limit=3 retorna uma agregação limitada de subreddits; as contagens não garantem exatidão global.
GET /v1/status é público e não consome créditos. Retorna uma declaração estática sobre o arquivo histórico e mostra que o manipulador HTTP responde. Não consulta o backend de busca, determina a cobertura nem mede a saúde do arquivo. Nenhum desses endpoints permite publicar, votar, enviar mensagens, guardar favoritos da conta ou obter uma árvore completa de conversa.
Leia os campos de paginação antes de adicionar Mostrar mais
As respostas de recuperação contêm data, pagination e credits. Os registros de data são objetos planos da fonte consultada; título, autor, data ou permalink podem estar ausentes. O arquivo usa a ordem _doc, não a cronológica nem a de relevância ou pontuação. Uma ordenação local reorganiza o subconjunto recebido, mas não o torna o mais recente ou mais bem classificado de todo o arquivo.
Mantenha os mesmos filtros e limit ao incrementar pagination.page. pagination.has_more usa um registro adicional de verificação quando disponível. Se for false, não ofereça uma próxima solicitação automática. pagination.window_exhausted identifica a condição de limite da última página; alcançá-la não prova que todo o material correspondente foi recuperado.
Os limites são 1–100 registros e páginas 1–100. Leia pagination.total junto com pagination.relation: eq indica exatidão conforme a semântica de contagem daquela resposta; gte, limite inferior; unknown, ausência de total confiável, que pode ser null. Uma página vazia depois da primeira não prova um total. Uma página 100 cheia com limit 100 não tem espaço para a verificação adicional e representa um limite inferior; has_more é false no limite de páginas. Na agregação de subreddits, total é desconhecido e pagination.truncated sinaliza grupos omitidos.
Trate cobranças e falhas explicitamente
Uma recuperação bem-sucedida custa um crédito, inclusive com data vazio. Valide a entrada antes do envio e não busque páginas apenas para animar um indicador. HTTP 400 indica entrada inválida; 401, chave ausente ou inválida; 402, créditos insuficientes; 429, limite de solicitações. Essas rejeições não reservam crédito de recuperação.
Uma falha na fonte consultada é informada como HTTP 502 e libera o crédito reservado, ou informa devolução pendente de conciliação. Se a resposta se perde no caminho para o aplicativo, o resultado é incerto: não suponha que foi gratuito. Preserve a consulta, respeite Retry-After e deixe a pessoa escolher uma nova tentativa quando apropriado. Credenciais e saldo pertencem ao operador, não a quem caminha.
Transforme a resposta em uma tela de leitura fiel
Escape o texto dos registros antes de exibi-lo. Preserve identidade e link de origem quando disponíveis, marque datas ausentes como desconhecidas e distinga criação do registro do momento da consulta. Identificadores de registros-pai e de ligação podem permitir agrupamento local quando presentes, mas não fornecem ancestrais ausentes.
Estados da interface detalha as mensagens propostas de carregamento, vazio e falha. As Notas práticas do Percurso do aplicativo tratam de cartões, referências locais e orçamento de solicitações. Chave e créditos contém a configuração e os preços. Revise e teste sua implementação; estes exemplos não demonstram funcionamento ao vivo nem orientação atual sobre trilhas.