# API instagrep — dados de Instagram

Lê dados públicos de perfis, posts e destaques do Instagram. Respostas em JSON.

## Autenticação
Envie o header em todas as rotas, exceto /health e /docs:
    X-API-Key: <SEU_TOKEN>
Alternativa: Authorization: Bearer <SEU_TOKEN>. Sem token -> 401.

## Endpoints
- GET /health                 -> { ok, sessao_valida }  (sem token)
- GET /docs                   -> esta documentação       (sem token)
- GET /perfil/:username       -> dados do perfil   (?fresh=1 ignora cache, ?shot=1 screenshot base64)
- GET /post/:shortcode        -> post/reel (aceita shortcode cru ou URL colada) (?fresh=1)
- GET /ultimo-post/:username  -> data do ultimo post (mais recente; considera fixados) (?fresh=1)
- GET /destaques/:username    -> destaques (highlights)

:username = letras, numeros, "." e "_" (ate 30 chars).

## Midia (campos novos, aditivos)
Em /perfil/:username, na raiz da resposta:
  - foto_perfil (string|null): URL da foto de perfil no CDN (maior resolucao disponivel)
Em /perfil/:username cada item de ultimos_posts agora traz:
  - imagem_url (string|null): thumbnail/capa do post
  - tipo (string): "imagem" | "video/reel" | "carrossel"
  - shortcode (string): casa com /post/:shortcode
Em /post/:shortcode:
  - imagem_url (string|null): capa do post
  - video_url (string|null): presente apenas quando o post e video/reel e a URL estiver disponivel
ATENCAO: as URLs de midia sao do CDN do Instagram e EXPIRAM em poucas horas.
Quem consome deve BAIXAR a imagem/video e guardar no proprio storage — nao armazene a URL.
Se a midia nao for encontrada, imagem_url vem null (a resposta NAO falha).

## Erros
400 invalido | 401 unauthorized (token) ou session_expired (sessao IG expirou) | 404 nao encontrado | 502 scrape_failed

## Regras de uso
- Nao faca requisicoes em paralelo (sessao real do IG; risco de bloqueio). Chame em serie.
- Cache de ~5 min por perfil/post; use ?fresh=1 so quando precisar de dado novo.
- Coletas novas usam navegador headless: use timeout de ~60s.
- O token e secreto; nao exponha em respostas ao usuario final.
