Documentacao da API

Referencia completa dos endpoints PharmaDB

Visao geral

A PharmaDB e uma API REST que retorna dados em JSON. Todas as informacoes estao em portugues brasileiro, incluindo nomes DCB, descricoes de interacoes e textos de bulas. Nao e necessario instalar SDK — basta fazer requisicoes HTTP com qualquer linguagem ou ferramenta.

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

Autenticacao

Todos os endpoints da API requerem autenticacao 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 requisicoes

Obter JWT

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

Requisicao
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 requisicoes

Inclua o token no header Authorization:

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

Consultar sua key

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

Requisicao
curl -H "Authorization: Bearer eyJhbGciOi..." \
  https://api.pharmadb.com.br/auth/me
Resposta
{
  "key_prefix": "pdb_a1b2",
  "tier": "pro",
  "daily_limit": 10000,
  "email": "[email protected]",
  "label": "App Mobile"
}

Tiers e campos clinicos

A diferenca entre planos e o volume de requisicoes — todos os campos clinicos sao iguais. Todos os tiers (incluindo Free) recebem: efeito_clinico, mecanismo, manejo_clinico, descricao_estendida_pt e referencias.

TierReq/diaCampos
Free100Todos os campos clinicos
Pro10.000Todos os campos clinicos
EnterpriseIlimitadoTodos os campos clinicos + suporte dedicado

Endpoints

MetodoRotaDescricao
POST/auth/tokenTrocar API key por JWT
GET/auth/meInfo da key autenticada
GET/v1/produtos/busca?q=Busca produtos por nome (filtros: tarja, controlado, etc.)
GET/v1/produtos/{id}Detalhes de um produto
GET/v1/produtos/ean/{ean}Produto por codigo de barras (EAN-13)
POST/v1/produtos/batchLookup massivo: ate 100 IDs ou EANs por chamada
GET/v1/produtos/{id}/receitaTipo de receita exigido (A/B/C, MIP) — Portaria 344/98
GET/v1/produtos/{id}/genericosGenericos e similares intercambiaveis + economia %
GET/v1/produtos/{id}/historico-comercializacaoHistorico de descontinuacao e restauracao comercial
GET/v1/interacoes/produto/{id}Interacoes de um produto
GET/v1/interacoes/pa/{id}Interacoes de um principio ativo
GET/v1/interacoes/ean/{ean}Interacoes por codigo de barras
GET/v1/interacoes/cruzadas?produto_a=&produto_b=Cruzamento entre 2 produtos
POST/v1/interacoes/batchInteracoes cruzadas de N produtos (max 20)
GET/v1/interacoes/{id}Detalhes de uma interacao
GET/v1/bulas/busca?q=Buscar bulas por nome do produto
GET/v1/bulas/{id}Bula completa
GET/v1/bulas/{id}/interacoesSecao de interacoes da bula
GET/v1/bulas/produto/{id}Bulas de um produto
GET/v1/principios-ativos/busca?q=Busca PAs (filtros: tipo_entidade, codigo_atc, etc.)
GET/v1/principios-ativos/{id}Detalhes de um principio ativo
GET/v1/usageSeu consumo atual + breakdown por endpoint

Paginacao

Endpoints de listagem suportam paginacao via query parameters. O campo total retorna o numero total de registros para calcular o numero de paginas.

ParametroTipoDefaultDescricao
pageint1Pagina atual (minimo 1)
per_pageint20Itens por pagina (max 100, ou 200 para interacoes)
Exemplo com paginacao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=dipirona&page=2&per_page=10"

Filtros de busca

Os endpoints de busca aceitam filtros opcionais via query params. Combine livremente — todos sao AND. Sem filtros, o comportamento e o mesmo de antes.

/v1/produtos/busca — filtros disponiveis

ParametroTipoExemplo
tarjastringPreta, Vermelha, sem_tarja
laboratoriostringEMS (match parcial)
categoria_regulatoriastringgenerico, similar, novo, fitoterapico
controladobooltrue / false
comercializadobooltrue / false
classe_terapeuticastringanalgesico (match parcial)
has_interactionsbooltrue — apenas produtos com PA em interacoes
Exemplos
# Lista comercializados, controlados, Tarja Preta:
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=alprazolam\
&tarja=Preta&controlado=true&comercializado=true"

# Filtra por classe terapeutica (match parcial):
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=dipirona\
&classe_terapeutica=analgesico"

# Filtra por laboratorio:
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=ibuprofeno&laboratorio=EMS"

# Apenas produtos cujos PAs tem interacao cadastrada:
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=omeprazol&has_interactions=true"

/v1/principios-ativos/busca — filtros disponiveis

ParametroTipoExemplo
tipo_entidadestringfarmaco, fitoterapico, biologico
categoria_dcbstringIFA, EXC (excipiente)
codigo_atcstringN02 (prefix match — Analgesicos)
has_interactionsbooltrue — apenas PAs com interacoes cadastradas
Exemplos
# Filtra por tipo de entidade:
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/principios-ativos/busca?q=cafeina&tipo_entidade=farmaco"

# Prefix match em codigo ATC (N02 = Analgesicos):
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/principios-ativos/busca?q=dipirona&codigo_atc=N02"

# Apenas PAs com interacoes:
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/principios-ativos/busca?q=para&has_interactions=true"

Produtos

Busca por nome

GET /v1/produtos/busca

Busca produtos por nome comercial. Retorna resumo com laboratorio, tarja e lista de principios ativos. Parametro q obrigatorio (min 3 caracteres).

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/produtos/busca?q=dorflex&page=1&per_page=20"
Resposta
1{
2  "total": 5,
3  "page": 1,
4  "per_page": 20,
5  "items": [
6    {
7      "id": 1284,
8      "nome": "DORFLEX",
9      "registro_anvisa": "1130003780014",
10      "categoria": "medicamento",
11      "categoria_regulatoria": "Similar",
12      "tarja": "sem_tarja",
13      "laboratorio": "SANOFI MEDLEY FARMACEUTICA LTDA",
14      "principios_ativos": ["dipirona", "citrato de orfenadrina", "cafeina"]
15    }
16  ]
17}

Detalhes de um produto

GET /v1/produtos/{id}

Retorna dados completos: composicao com concentracoes, apresentacoes com EAN e preco (PMC em centavos), classe terapeutica e status de comercializacao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/1284
Resposta
1{
2  "id": 1284,
3  "nome": "DORFLEX",
4  "registro_anvisa": "1130003780014",
5  "categoria": "medicamento",
6  "categoria_regulatoria": "Similar",
7  "tarja": "sem_tarja",
8  "laboratorio": "SANOFI MEDLEY FARMACEUTICA LTDA",
9  "principios_ativos": ["dipirona", "citrato de orfenadrina", "cafeina"],
10  "classe_terapeutica": "ANALGESICOS NAO NARCOTICOS",
11  "controlado": false,
12  "comercializado": true,
13  "composicao": [
14    {
15      "pa_id": 1, "nome_dcb": "dipirona",
16      "concentracao": "300 MG",
17      "concentracao_valor": 300.0,
18      "concentracao_unidade": "mg",
19      "ordem": 0
20    },
21    {
22      "pa_id": 42, "nome_dcb": "citrato de orfenadrina",
23      "concentracao": "35 MG",
24      "concentracao_valor": 35.0,
25      "concentracao_unidade": "mg",
26      "ordem": 1
27    },
28    {
29      "pa_id": 89, "nome_dcb": "cafeina",
30      "concentracao": "50 MG",
31      "concentracao_valor": 50.0,
32      "concentracao_unidade": "mg",
33      "ordem": 2
34    }
35  ],
36  "apresentacoes": [
37    { "id": 501, "descricao": "Comprimido - 10 unid.", "ean_1": "7891058002008", "pmc_0": 842 },
38    { "id": 502, "descricao": "Comprimido - 36 unid.", "ean_1": "7891058002015", "pmc_0": 2490 }
39  ]
40}

Produto por EAN (codigo de barras)

GET /v1/produtos/ean/{ean}

Busca um produto pelo codigo de barras EAN-13 (13 digitos). Retorna os mesmos campos de /v1/produtos/{id}. Ideal para apps que escaneiam codigos de barras.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/ean/7891058002008

Batch — ate 100 produtos por chamada

POST /v1/produtos/batch

Lookup massivo de produtos por produto_ids ou eans (ate 100 itens, nao ambos). Conta como 1 unica requisicao no seu rate limit. Retorna os mesmos campos de /v1/produtos/{id} para cada produto encontrado, mais um array nao_encontrados com os IDs/EANs que nao retornaram nada — util pra rastrear gaps no seu catalogo.

Requisicao
# Por IDs (ate 100):
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"produto_ids": [1284, 5678, 9012]}' \
  https://api.pharmadb.com.br/v1/produtos/batch

# Por EANs (ate 100):
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"eans": ["7891058002008", "7896004711515"]}' \
  https://api.pharmadb.com.br/v1/produtos/batch
Resposta
1{
2  "produtos": [
3    {
4      "id": 1284,
5      "nome": "DORFLEX",
6      "registro_anvisa": "1130003780014",
7      "tarja": "sem_tarja",
8      "controlado": false,
9      "comercializado": true,
10      "composicao": [
11        { "pa_id": 1, "nome_dcb": "dipirona",
12          "concentracao_valor": 300.0, "concentracao_unidade": "mg", "ordem": 0 }
13      ],
14      "apresentacoes": [...]
15    },
16    {
17      "id": 5678,
18      "nome": "MAREVAN",
19      "composicao": [
20        { "pa_id": 9100, "nome_dcb": "varfarina",
21          "concentracao_valor": 5.0, "concentracao_unidade": "mg", "ordem": 0 }
22      ],
23      ...
24    }
25  ],
26  "nao_encontrados": ["7891234567890"],
27  "total": 2
28}

Tipo de receita exigido

GET /v1/produtos/{id}/receita

Classifica o regime de dispensacao do produto conforme a Portaria SVS/MS 344/98 (controle especial), RDC 471/2021 (receita branca comum) e RDC 96/2008 (MIP). Retorna o tipo (A1, A2, A3, B1, B2, C1, C2, comum, sem_receita), cor da receita, se exige retencao, numero de vias, validade em dias e a base legal. Util para farmacias digitais e prescricao eletronica informarem o regime antes da compra ou da prescricao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/9012/receita
Resposta
1{
2  "produto_id": 9012,
3  "produto_nome": "RIVOTRIL",
4  "tarja": "preta",
5  "classe_terapeutica": "N5B1 - HIPNOTICOS E SEDATIVOS",
6  "tipo": "B1",
7  "cor_receita": "azul",
8  "requer_receita": true,
9  "retencao": true,
10  "vias": 2,
11  "validade_dias": 30,
12  "lista_controle": "B1 (psicotropicos)",
13  "base_legal": "Portaria SVS/MS 344/98",
14  "observacao": "Notificacao de Receita 'B' (azul). Retencao obrigatoria."
15}

Genericos e similares intercambiaveis

GET /v1/produtos/{id}/genericos

Lista genericos e similares intercambiaveis a partir de um produto de referencia, pelo criterio da RDC 31/2010: mesma forma farmaceutica + mesma composicao quali-quantitativa + comercializado. Cada item traz o preco (PMC) e a economia_pct vs a referencia — ideal para e-commerce de medicamento mostrar "esta versao generica custa 79% menos".

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/1284/genericos
Resposta
1{
2  "produto_id": 1284,
3  "produto_nome": "TYLENOL",
4  "categoria_regulatoria": "novo",
5  "forma_farmaceutica": "comprimido_revestido",
6  "composicao_resumo": ["paracetamol 750 mg"],
7  "pmc_referencia_centavos": 1850,
8  "total_genericos": 7,
9  "total_similares": 4,
10  "genericos": [
11    {
12      "id": 8821,
13      "nome": "PARACETAMOL",
14      "laboratorio": "EMS S/A",
15      "categoria_regulatoria": "generico",
16      "apresentacao_descricao": "750 MG COM REV CT BL AL PLAS INC X 20",
17      "ean_1": "7891234560011",
18      "pmc_centavos": 380,
19      "economia_centavos": 1470,
20      "economia_pct": 79.46
21    }
22  ],
23  "similares_intercambiaveis": [ "..." ]
24}

Historico de comercializacao

GET /v1/produtos/{id}/historico-comercializacao

Linha do tempo de descontinuacao e restauracao comercial do produto. Diferente do campo estatico comercializado, retorna cada evento datado (saiu do mercado, registro cancelado/caduco, voltou a ser comercializado), com a fonte da deteccao. Util para auditoria regulatoria e para decidir manter ou nao um item no catalogo.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/5742/historico-comercializacao
Resposta
1{
2  "produto_id": 5742,
3  "produto_nome": "PARACETAMOL + CARISOPRODOL + DICLOFENACO",
4  "atualmente_comercializado": false,
5  "situacao_registro": "ativo",
6  "total_eventos": 2,
7  "primeira_deteccao_em": "2026-06-09",
8  "ultima_deteccao_em": "2026-09-14",
9  "eventos": [
10    {
11      "detectado_em": "2026-09-14",
12      "motivo": "comercializado_false",
13      "fonte": "crawler_anvisa",
14      "detalhes": { "comercializado": false },
15      "restaurado_em": null
16    },
17    {
18      "detectado_em": "2026-06-09",
19      "motivo": "baseline",
20      "fonte": "baseline",
21      "detalhes": { "comercializado": false, "situacao_registro": "ativo" },
22      "restaurado_em": null
23    }
24  ]
25}

Interacoes

Todas as interacoes incluem os campos clinicos completos. O campo gravidade pode ser: grave, moderada ou leve. Use o parametro gravidade para filtrar por nivel.

Por produto

GET /v1/interacoes/produto/{id}

Retorna todas as interacoes de todos os principios ativos de um produto, com contagem por gravidade. Suporta filtro opcional ?gravidade=grave e paginacao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/interacoes/produto/1284?gravidade=grave&page=1&per_page=50"
Resposta
1{
2  "produto": {
3    "id": 1284,
4    "nome": "DORFLEX",
5    "principios_ativos": ["dipirona", "citrato de orfenadrina", "cafeina"]
6  },
7  "principios_ativos": [
8    { "id": 1, "nome_dcb": "dipirona" },
9    { "id": 42, "nome_dcb": "citrato de orfenadrina" },
10    { "id": 89, "nome_dcb": "cafeina" }
11  ],
12  "total_interacoes": 42,
13  "interacoes_graves": 42,
14  "interacoes_moderadas": 318,
15  "interacoes_leves": 487,
16  "page": 1,
17  "per_page": 50,
18  "interacoes": [
19    {
20      "id": 1042,
21      "pa_a": { "id": 1, "nome_dcb": "dipirona" },
22      "pa_b": { "id": 5, "nome_dcb": "varfarina" },
23      "gravidade": "grave",
24      "tipo_interacao": "farmacodinamica",
25      "efeito_clinico": "Aumento do risco de sangramento.",
26      "mecanismo": "Dipirona inibe a agregacao plaquetaria e potencializa o efeito anticoagulante.",
27      "manejo_clinico": "Evitar uso concomitante ou monitorar INR frequentemente.",
28      "descricao_estendida_pt": "A dipirona pode aumentar significativamente o risco de sangramento...",
29      "referencias": [
30        {
31          "url": "https://pubmed.ncbi.nlm.nih.gov/19187002",
32          "text": "Metamizole (dipyrone)-associated adverse effects on platelet aggregation..."
33        }
34      ]
35    }
36  ]
37}

Por principio ativo

GET /v1/interacoes/pa/{id}

Interacoes de um principio ativo especifico. Suporta filtro ?gravidade= e paginacao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/interacoes/pa/1?page=1&per_page=50"
Resposta
1{
2  "principio_ativo": { "id": 1, "nome_dcb": "dipirona" },
3  "total": 312,
4  "page": 1,
5  "per_page": 50,
6  "interacoes": [
7    {
8      "id": 1042,
9      "pa_a": { "id": 1, "nome_dcb": "dipirona" },
10      "pa_b": { "id": 5, "nome_dcb": "varfarina" },
11      "gravidade": "grave",
12      "efeito_clinico": "Aumento do risco de sangramento.",
13      "mecanismo": "Dipirona inibe a agregacao plaquetaria.",
14      "manejo_clinico": "Monitorar INR frequentemente.",
15      "descricao_estendida_pt": "...",
16      "referencias": []
17    }
18  ]
19}

Por EAN

GET /v1/interacoes/ean/{ean}

Mesmo que /v1/interacoes/produto/{id}, mas via codigo de barras EAN-13.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/interacoes/ean/7891058002008"

Cruzamento entre 2 produtos

GET /v1/interacoes/cruzadas?produto_a=&produto_b=

Verifica interacoes entre os principios ativos de dois produtos especificos. Util para verificar se dois medicamentos podem ser tomados juntos.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/interacoes/cruzadas?produto_a=1284&produto_b=5678"
Resposta
1{
2  "produto_a": { "id": 1284, "nome": "DORFLEX", "principios_ativos": ["dipirona", "citrato de orfenadrina", "cafeina"] },
3  "produto_b": { "id": 5678, "nome": "MAREVAN", "principios_ativos": ["varfarina sodica"] },
4  "pas_a": [{ "id": 1, "nome_dcb": "dipirona" }, { "id": 42, "nome_dcb": "citrato de orfenadrina" }],
5  "pas_b": [{ "id": 5, "nome_dcb": "varfarina sodica" }],
6  "total": 2,
7  "page": 1,
8  "per_page": 50,
9  "interacoes": [
10    {
11      "id": 1042,
12      "pa_a": { "id": 1, "nome_dcb": "dipirona" },
13      "pa_b": { "id": 5, "nome_dcb": "varfarina sodica" },
14      "gravidade": "grave",
15      "efeito_clinico": "Aumento do risco de sangramento.",
16      "mecanismo": "Dipirona inibe a agregacao plaquetaria.",
17      "manejo_clinico": "Monitorar INR frequentemente.",
18      "descricao_estendida_pt": "...",
19      "referencias": []
20    }
21  ]
22}

Batch — N produtos de uma vez

POST /v1/interacoes/batch

Verifica todas as interacoes cruzadas entre ate 20 produtos em uma unica requisicao. Aceita produto_ids ou eans (nao ambos). Retorna apenas interacoes entre PAs de produtos diferentes (ignora interacoes intra-produto).

Requisicao com IDs
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"produto_ids": [1284, 5678, 9012]}' \
  https://api.pharmadb.com.br/v1/interacoes/batch
Requisicao com EANs
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"eans": ["7891058002008", "7896004711515"]}' \
  https://api.pharmadb.com.br/v1/interacoes/batch
Resposta
1{
2  "produtos": [
3    { "id": 1284, "nome": "DORFLEX", "principios_ativos": ["dipirona", "citrato de orfenadrina"] },
4    { "id": 5678, "nome": "MAREVAN", "principios_ativos": ["varfarina sodica"] },
5    { "id": 9012, "nome": "RIVOTRIL", "principios_ativos": ["clonazepam"] }
6  ],
7  "total_interacoes": 5,
8  "interacoes_graves": 2,
9  "interacoes_moderadas": 2,
10  "interacoes_leves": 1,
11  "interacoes": [
12    {
13      "id": 1042,
14      "pa_a": { "id": 1, "nome_dcb": "dipirona" },
15      "pa_b": { "id": 5, "nome_dcb": "varfarina sodica" },
16      "gravidade": "grave",
17      "efeito_clinico": "Aumento do risco de sangramento.",
18      "mecanismo": "Dipirona inibe a agregacao plaquetaria.",
19      "manejo_clinico": "Monitorar INR frequentemente.",
20      "descricao_estendida_pt": "...",
21      "referencias": []
22    }
23  ]
24}

Detalhe de uma interacao

GET /v1/interacoes/{id}

Retorna todos os campos de uma interacao especifica, incluindo referencias bibliograficas.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/interacoes/1042
Resposta
1{
2  "id": 1042,
3  "pa_a": { "id": 1, "nome_dcb": "dipirona" },
4  "pa_b": { "id": 5, "nome_dcb": "varfarina" },
5  "gravidade": "grave",
6  "tipo_interacao": "farmacodinamica",
7  "efeito_clinico": "Aumento do risco de sangramento.",
8  "mecanismo": "Dipirona inibe a agregacao plaquetaria e potencializa o efeito anticoagulante.",
9  "manejo_clinico": "Evitar uso concomitante ou monitorar INR frequentemente.",
10  "descricao_estendida_pt": "A dipirona pode aumentar significativamente o risco de sangramento...",
11  "referencias": [
12    {
13      "url": "https://pubmed.ncbi.nlm.nih.gov/19187002",
14      "text": "Metamizole (dipyrone)-associated adverse effects on platelet aggregation..."
15    }
16  ]
17}

Campos de uma interacao

CampoTipoDescricao
idintID unico da interacao
pa_a / pa_bobjectPrincipios ativos envolvidos (id + nome_dcb)
gravidadestringgrave, moderada ou leve
tipo_interacaostring?Tipo (farmacodinamica, farmacocinetica, etc.)
efeito_clinicostring?Efeito clinico da interacao
mecanismostring?Mecanismo farmacologico
manejo_clinicostring?Recomendacao de manejo para o profissional
descricao_estendida_ptstring?Descricao detalhada em portugues
referenciasarrayLista de {url, text} com referencias bibliograficas

Bulas

Textos de bulas extraidos do Bulario Eletronico da ANVISA. Incluem indicacoes, contraindicacoes, posologia, interacoes e reacoes adversas.

Busca por nome

GET /v1/bulas/busca?q=

Busca bulas pelo nome do produto. Retorna resumo indicando quais secoes estao disponiveis. Parametro q obrigatorio (min 3 caracteres).

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/bulas/busca?q=dorflex&page=1&per_page=20"
Resposta
1{
2  "total": 2,
3  "page": 1,
4  "per_page": 20,
5  "items": [
6    {
7      "id": 101,
8      "tipo": "paciente",
9      "produto_id": 1284,
10      "produto_nome": "DORFLEX",
11      "tem_indicacoes": true,
12      "tem_interacoes": true,
13      "extraido": true
14    }
15  ]
16}

Bula completa

GET /v1/bulas/{id}

Retorna a bula completa com todas as secoes de texto extraidas.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/bulas/101
Resposta
1{
2  "id": 101,
3  "tipo": "paciente",
4  "produto": {
5    "id": 1284,
6    "nome": "DORFLEX",
7    "registro_anvisa": "1130003780014",
8    "laboratorio": "SANOFI MEDLEY FARMACEUTICA LTDA",
9    "principios_ativos": ["dipirona", "citrato de orfenadrina", "cafeina"]
10  },
11  "texto_indicacoes": "Dores musculares, cefaleia tensional...",
12  "texto_contraindicacoes": "Hipersensibilidade aos componentes da formula...",
13  "texto_interacoes": "Pode interagir com anticoagulantes orais...",
14  "texto_posologia": "Adultos: 1 a 2 comprimidos, 3 a 4 vezes ao dia.",
15  "texto_reacoes_adversas": "Reacoes alergicas, nauseas, sonolencia...",
16  "extraido_em": "2026-02-20T14:30:00"
17}

Secao de interacoes

GET /v1/bulas/{id}/interacoes

Retorna apenas a secao de interacoes medicamentosas da bula — util para cruzar com dados estruturados.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/bulas/101/interacoes
Resposta
{
  "produto_nome": "DORFLEX",
  "texto": "Pode interagir com anticoagulantes orais, aumentando o risco de sangramento..."
}

Bulas de um produto

GET /v1/bulas/produto/{produto_id}

Lista todas as bulas de um produto (paciente e profissional). Suporta paginacao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/bulas/produto/1284?page=1&per_page=20"

Principios Ativos

Busca por nome

GET /v1/principios-ativos/busca?q=

Busca principios ativos pela nomenclatura DCB (Denominacao Comum Brasileira). Parametro q obrigatorio (min 3 caracteres). Suporta paginacao.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/principios-ativos/busca?q=dipirona"
Resposta
1{
2  "total": 3,
3  "page": 1,
4  "per_page": 20,
5  "items": [
6    { "id": 1, "nome_dcb": "dipirona" },
7    { "id": 2, "nome_dcb": "dipirona sodica" }
8  ]
9}

Detalhes de um principio ativo

GET /v1/principios-ativos/{id}

Retorna detalhes completos: nome DCB, nome INN (internacional), codigo ATC, categoria, descricao e total de interacoes conhecidas.

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/principios-ativos/1
Resposta
1{
2  "id": 1,
3  "nome_dcb": "dipirona",
4  "categoria_dcb": "substancia quimica",
5  "tipo_entidade": "SmallMoleculeDrug",
6  "inn_nome": "metamizole",
7  "codigo_atc": "N02BB02",
8  "descricao": "Analgesico e antipiretico do grupo das pirazolonas...",
9  "total_interacoes": 312
10}

Uso da API

GET /v1/usage

Retorna o consumo atual da sua API key — uso do dia, do mes e breakdown por endpoint nos ultimos N dias. Use no seu dashboard para acompanhar consumo sem precisar abrir ticket. Aceita query param opcional ?days=7 (default 7, max 90).

Requisicao
curl -H "Authorization: Bearer $TOKEN" \
  "https://api.pharmadb.com.br/v1/usage?days=7"
Resposta
1{
2  "api_key": { "id": 169, "tier": "pro" },
3  "daily": {
4    "used": 432,
5    "limit": 2000,
6    "remaining": 1568,
7    "reset_at": "2026-05-29T03:00:00+00:00"
8  },
9  "monthly": {
10    "used": 8721,
11    "limit": 60000,
12    "remaining": 51279,
13    "reset_at": "2026-06-01T00:00:00+00:00",
14    "period_start": "2026-05-01"
15  },
16  "by_endpoint": [
17    { "endpoint": "/v1/produtos/{id}", "method": "GET", "count": 5421, "last_called_at": "..." },
18    { "endpoint": "/v1/interacoes/cruzadas", "method": "GET", "count": 1023, "last_called_at": "..." },
19    { "endpoint": "/v1/produtos/batch", "method": "POST", "count": 87, "last_called_at": "..." }
20  ],
21  "_meta": {
22    "period_days": 7,
23    "period_start": "2026-05-21",
24    "period_end": "2026-05-28"
25  }
26}

Headers HTTP & Cache

Toda resposta da API inclui headers padronizados para rate limit, performance e cache HTTP. Aproveita-los reduz banda e custo.

Headers retornados

HeaderDescricao
X-RateLimit-Limit-DayLimite diario do seu plano
X-RateLimit-Remaining-DayRequests restantes ate o reset diario
X-RateLimit-Reset-DayUnix timestamp do proximo reset (00:00 UTC)
X-RateLimit-Limit-MonthLimite mensal do seu plano
X-RateLimit-Remaining-MonthRequests restantes ate o reset mensal
ETagHash do conteudo. Envie em If-None-Match pra economizar banda
Cache-ControlPolitica de cache. Default GET /v1: private, max-age=300, must-revalidate
Server-TimingBreakdown: total/sql/app em ms. Util pra debug de latencia
Exemplo de response headers
curl -i -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/1284

HTTP/2 200
content-type: application/json
etag: "a3f5c8d2e1b9f7c4..."
cache-control: private, max-age=300, must-revalidate
server-timing: total;dur=423.1, sql;dur=185.4;desc="3q", app;dur=237.7
x-ratelimit-limit-day: 2000
x-ratelimit-remaining-day: 1567
x-ratelimit-reset-day: 1779926400
x-ratelimit-limit-month: 60000
x-ratelimit-remaining-month: 51278

Cache via ETag (economiza banda)

Endpoints GET de detalhe (/v1/produtos/{id}, /v1/principios-ativos/{id}, /v1/interacoes/{id}) retornam um ETag. Guarde-o e envie em If-None-Match na proxima chamada. Se o conteudo nao mudou, a API retorna 304 Not Modified sem body — perfeito para apps que fazem polling ou recarregam paginas.

Cliente bem-comportado
# Primeira requisicao — guarda o ETag
curl -i -H "Authorization: Bearer $TOKEN" \
  https://api.pharmadb.com.br/v1/produtos/1284
# < etag: "a3f5c8d2..."

# Segunda requisicao com If-None-Match
curl -i -H "Authorization: Bearer $TOKEN" \
  -H 'If-None-Match: "a3f5c8d2..."' \
  https://api.pharmadb.com.br/v1/produtos/1284
# < HTTP/2 304 Not Modified  (sem body — economiza banda)

Erros

A API usa codigos HTTP padrao. Respostas de erro incluem um campo detail com a descricao do problema.

Exemplo de erro
{
  "detail": "Produto nao encontrado"
}
CodigoDescricao
200OK — Requisicao bem-sucedida
304Not Modified — Conteudo nao mudou desde o ETag enviado (sem body, economiza banda)
400Bad Request — Parametros invalidos
401Unauthorized — Token ausente, invalido ou expirado
402Payment Required — Pagamento pendente (past_due/unpaid). Atualize metodo no dashboard
403Forbidden — Email nao verificado, plano insuficiente ou API key revogada
404Not Found — Recurso nao encontrado
422Unprocessable Entity — Validacao falhou (ex: EAN invalido). Response: {errors: [{field, code, message}]}
429Too Many Requests — Limite diario ou mensal excedido (veja X-RateLimit-Reset-*)
500Server Error — Erro interno do servidor

Limites

Cada plano possui um limite de requisicoes diario. Ao atingir o limite, a API retorna 429. O contador reseta a meia-noite UTC.

PlanoLimiteRate limit
Starter250 req/dia20 req/min
Pro2.000 req/dia50 req/min
Pro+10.000 req/dia100 req/min
EnterpriseIlimitadoSob consulta

Precisa de mais? Veja os planos disponiveis.