Para desenvolvedores

80.000 questões, do ENEM 2025 aos vestibulares. Uma chamada.

Chega de scraping de PDF e digitação manual. Enunciado, alternativas, gabarito e matéria em toda questão — do ENEM 2025 ao acervo histórico —, em JSON servido de São Paulo em 98 ms na mediana.

questões no acervo
80.000+
latência p50, medida
98 ms
cold starts, em São Paulo
Zero
curl "https://api.enemhub.com.br/v1/enem/questions?year=2025" \
  -H "X-API-Key: ehub_enem_aZ3fK9pQ..."
# resposta (valores ilustrativos)
{
  "data": [{
    "year": 2025,
    "difficulty": "medium",
    "statement": "Uma progressao aritmetica...",
    "subject": { "name": "Matematica" },
    "alternatives": [...]
  }],
  "meta": { "page": 1, "total": 177 }
}

A infraestrutura por trás da API

  • Fastify
  • TypeScript
  • Node.js
  • Neon
  • Drizzle
  • Upstash
  • Zod
  • Stripe
  • Clerk
  • OpenAPI
  • Fly.io

Tempo de resposta

A resposta sai em 98 ms.

Metade das buscas responde em 98 ms e 95% em menos de 149 ms — rápido o bastante para a tela montar a questão sem estado de carregamento. A API roda em São Paulo, com as questões no banco ao lado e o mais pedido já em cache.

98ms
p50
149ms
p95
212ms
p99
160 chamadas medidas em 16/08/2026

Onde a API roda

São Paulo
Servidores no Brasil, ligados o tempo todo. A primeira chamada do dia responde no mesmo tempo que a milésima.

Onde as questões ficam

Postgres, na mesma cidade
O banco fica na mesma cidade dos servidores, a um salto de rede da API. Medida sozinha, a consulta leva cerca de 47 ms.

O que já vem pronto

Cache em Redis
Listagens ficam guardadas por 1 h, cada questão por 6 h, os catálogos por 24 h. Quando a resposta já existe, ela sai sem passar pelo banco.

Referência da API

Cinco rotas, o mesmo formato de resposta.

Enunciado, alternativas, gabarito, matéria, área, exame e ano — estruturado campo a campo, igual em qualquer uma das rotas abaixo. Nada para tratar ou remontar do seu lado.

GET /v1/enem/questions/:idexemplo
year
2023
difficulty
Média
subject.name
Matemática
exam.institution
INEP
statement

Uma progressão aritmética tem primeiro termo 7 e razão 4. A soma dos 20 primeiros termos dessa progressão é:

alternatives[]
  • A900isCorrect: true
  • B780
  • C920
  • D840
  • E1.000

Todas as rotas

Agrupadas por produto: a chave que você gera vale para as rotas do produto dela.

ENEM

  • GET /v1/enem/questionsListar questões do ENEM
  • GET /v1/enem/questions/:idBuscar uma questão

ENEM + Vestibulares

  • GET /v1/vestibulares/examsListar exames disponíveis
  • GET /v1/vestibulares/questionsListar questões de todos os exames
  • GET /v1/vestibulares/questions/:idBuscar uma questão

As listagens aceitam estes filtros, combináveis:

  • year
  • subjectId
  • difficulty
  • page
  • limit

Perguntas frequentes

O que costuma perguntar antes de criar a chave.

O acervo tem o ENEM 2025?

Tem. As questões do ENEM vão de 2005 a 2025, e os vestibulares seguem o mesmo ritmo de atualização. Toda questão do acervo vem com ano, matéria, dificuldade e gabarito preenchidos — não existe registro pela metade.

Como autentico as chamadas?

Toda rota de /v1 espera o cabeçalho X-API-Key com a chave gerada no console (Bearer funciona como alternativa). Sem uma chave válida, a resposta é 401.

Uma chave dá acesso aos dois produtos?

Não. Uma chave do ENEM não abre as rotas de ENEM + Vestibulares, e vice-versa: o escopo é por produto, não por conta.

O que acontece quando eu passo do limite do plano?

Nada que custe cota: a resposta vem com status 429 e o cabeçalho Retry-After, e a requisição recusada não consome a cota do mês. Cada plano define um teto por minuto e um teto mensal, só isso muda entre eles.

A documentação é pública?

Sim. A referência interativa de cada produto não exige chave, então dá para conferir o formato exato das respostas antes de criar conta. Ver documentação.

Como funciona o cancelamento?

Sem fidelidade e sem precisar falar com ninguém: cancela quando quiser, pelo console. O acesso continua até o fim do período já pago, sem reembolso proporcional pelo tempo não usado.

Como funciona a cobrança da assinatura?

Recorrente mensal, via Stripe. Você escolhe o plano no console e completa o checkout por lá; a assinatura fica ativa assim que o Stripe confirma o pagamento, e o teto de requisições passa a valer o do plano contratado.

Preciso de um volume maior que os planos listados?

Fale com o time de vendas sobre um plano sob consulta. Falar com vendas.

Existe um plano gratuito?

A conta é gratuita e a documentação é pública: dá para conferir o formato exato das respostas antes de decidir. As chamadas à API entram com o plano, cobrado por volume de requisições.

Não achou a sua? Veja os planos ou abra a documentação.

Mais de 80.000 questões, prontas para a primeira chamada.

Crie a conta, pegue sua chave e faça a primeira requisição em segundos, sem esperar aprovação de ninguém.