Documentação da API

Referência completa dos endpoints PharmaDB

Visão geral

A PharmaDB é uma API REST que retorna dados em JSON. Todas as informações estão em português brasileiro, incluindo nomes DCB, descrições de interações e textos de bulas. Não é necessário instalar SDK — basta fazer requisições HTTP com qualquer linguagem ou ferramenta.

Base URL
https://api.pharmadb.com.br

Autenticação

Todos os endpoints da API requerem autenticação via JWT (JSON Web Token). O fluxo funciona em dois passos:

  1. 1Obtenha uma API key (formato pdb_xxxxxxxx...) ao criar sua conta
  2. 2Troque a API key por um JWT via POST /auth/token
  3. 3Use o JWT no header Authorization: Bearer <token> em todas as requisições

Obter JWT

Envie sua API key no header x-api-key ou no body como {"api_key": "pdb_..."}:

Requisição
curl -X POST https://api.pharmadb.com.br/auth/token \
  -H "x-api-key: pdb_a1b2c3d4e5f6..."
Resposta
{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "bearer",
  "expires_in": 3600,
  "tier": "pro"
}

O token expira em 60 minutos. Ao expirar, gere um novo com a mesma API key.

Usar JWT nas requisições

Inclua o token no header Authorization:

Exemplo de requisição autenticada
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  https://api.pharmadb.com.br/produtos/busca?q=dorflex

Consultar sua key

Use GET /auth/me para verificar tier, limites e dados da sua API key:

Requisição
curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://api.pharmadb.com.br/auth/me
Resposta
{
  "key_prefix": "pdb_a1b2",
  "tier": "pro",
  "daily_limit": 10000,
  "email": "dev@empresa.com.br",
  "label": "App Mobile"
}

Tiers e campos premium

O tier da sua API key define quais campos são retornados e o limite diário de requisições. No tier Free, campos premium retornam null junto com um array premium_fields indicando quais campos estão indisponíveis.

TierReq/diaCampos de interação
Free100efeito_clinico, gravidade
Pro10.000Todos (+ mecanismo, manejo_clinico, descricao_estendida_pt)
EnterpriseIlimitadoTodos os campos

Endpoints

MétodoRotaDescrição
POST/auth/tokenTrocar API key por JWT
GET/auth/meInfo da key autenticada
GET/produtos/busca?q=Busca produtos por nome
GET/produtos/{id}Detalhes de um produto
GET/produtos/ean/{ean}Produto por código de barras
GET/interacoes/produto/{id}Interações de um produto
GET/interacoes/cruzadas?a=&b=Cruzamento entre produtos
GET/interacoes/pa/{id}Interações de um PA
GET/interacoes/{id}Detalhes de uma interação
GET/bulas/{id}Bula completa
GET/bulas/busca?q=Buscar bulas por nome
GET/principios-ativos/busca?q=Busca princípios ativos
GET/principios-ativos/{id}Detalhes de um PA

Produtos

Busca produtos por nome comercial. Retorna composição, tarja e apresentações com preço.

Requisição
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/produtos/busca?q=dorflex
Resposta
1{
2  "total": 5,
3  "items": [
4    {
5      "id": 1284,
6      "nome": "DORFLEX",
7      "laboratorio": "SANOFI MEDLEY",
8      "tarja": "sem_tarja",
9      "composicao": [
10        {
11          "nome_dcb": "dipirona",
12          "concentracao": "300mg"
13        },
14        {
15          "nome_dcb": "citrato de orfenadrina",
16          "concentracao": "35mg"
17        },
18        {
19          "nome_dcb": "cafeína",
20          "concentracao": "50mg"
21        }
22      ],
23      "apresentacoes": [
24        {
25          "descricao": "Comprimido - 10 unid.",
26          "pmc_0": 8.42
27        }
28      ]
29    }
30  ]
31}

Interações

Retorna todas as interações medicamentosas de um produto. O campo gravidade pode ser: grave, moderada ou leve.

Requisição
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/interacoes/produto/1284
Resposta
1{
2  "produto": {
3    "nome": "DORFLEX"
4  },
5  "total_interacoes": 847,
6  "interacoes": [
7    {
8      "nome_outro": "varfarina",
9      "gravidade": "grave",
10      "efeito_clinico": "Aumento do risco de sangramento."
11    },
12    {
13      "nome_outro": "ácido acetilsalicílico",
14      "gravidade": "moderada",
15      "efeito_clinico": "Potencialização de efeitos adversos gastrointestinais."
16    }
17  ]
18}

Bulas

Retorna a bula completa de um produto com campos de texto extraídos: indicações, posologia, contraindicações, reações adversas e outros.

Requisição
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/bulas/1
Resposta
1{
2  "produto": {
3    "nome": "DORFLEX"
4  },
5  "tipo": "paciente",
6  "texto_indicacoes": "Dores musculares, cefaleia tensional...",
7  "texto_posologia": "Adultos: 1 a 2 comprimidos, 3 a 4 vezes ao dia.",
8  "texto_contraindicacoes": "Hipersensibilidade aos componentes da fórmula...",
9  "texto_reacoes_adversas": "Reações alérgicas, náuseas, sonolência...",
10  "extraido_em": "2026-02-20T14:30Z"
11}

Princípios Ativos

Busca princípios ativos pela nomenclatura DCB (Denominação Comum Brasileira).

Requisição
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/principios-ativos/busca?q=dipirona
Resposta
1{
2  "total": 3,
3  "items": [
4    {
5      "id": 1042,
6      "nome_dcb": "dipirona",
7      "total_interacoes": 312,
8      "total_produtos": 87
9    },
10    {
11      "id": 1043,
12      "nome_dcb": "dipirona sódica",
13      "total_interacoes": 98,
14      "total_produtos": 34
15    }
16  ]
17}

Erros

A API usa códigos HTTP padrão. Respostas de erro incluem um campo detail com a descrição do problema.

Exemplo de erro
{
  "detail": "Produto não encontrado"
}
CódigoDescrição
200OK — Requisição bem-sucedida
400Bad Request — Parâmetros inválidos
401Unauthorized — Token ausente, inválido ou expirado
403Forbidden — Tier insuficiente ou API key revogada
404Not Found — Recurso não encontrado
422Unprocessable Entity — Validação falhou
429Too Many Requests — Limite diário excedido (reset à meia-noite UTC)
500Server Error — Erro interno do servidor

Limites

Cada plano possui um limite de requisições diário. Ao atingir o limite, a API retorna 429.

PlanoLimiteRate limit
Free100 req/dia10 req/min
Pro10.000 req/dia100 req/min
EnterpriseIlimitadoSob consulta

Precisa de mais? Veja os planos disponíveis.