API lodi-t

Acesso programático ao motor farmacocinético (simulação, métricas, Monte Carlo e recomendação de intervalo). Requer assinatura ativa e chave criada em /conta.

Autenticação

Envie sua chave no cabeçalho:

Authorization: Bearer lodi_xxxxxxxxxxxx

Limite: 60 requisições por minuto, por chave. Respostas: 200 ok, 401 chave inválida, 402 sem assinatura, 429 limite, 400 erro de entrada.

Endpoints

GET /api/public/v1/health

Retorna

status do serviço (não requer chave).

POST /api/public/v1/simulate

Body

{
  "doses": [{ "diaDose": 0, "doseMg": 1000 }, { "diaDose": 42, "doseMg": 1000 }],
  "params": { ... } | undefined,
  "config": { "passoDias": 0.5, "horizonteDias": 730 } | undefined
}

Retorna

{ perfil: PontoCurva[], metricas: MetricasPK, metricasSS }

POST /api/public/v1/montecarlo

Body

{
  "doses": [...],
  "nSimulacoes": 200,
  "config": { ... } | undefined
}

Retorna

ResultadoMonteCarlo com percentis (p5/p25/mediana/p75/p95) e métricas populacionais.

POST /api/public/v1/recommend-interval

Body

{
  "doseMg": 1000,
  "intervaloDias": 84,
  "cmaxObsNgdl": 900,
  "cminObsNgdl": 350,
  "cavgAlvoNgdl": 600
}

Retorna

RecomendacaoIntervalo (intervalo ótimo entre 6 e 16 sem, justificativa, sensibilidade individual).

Exemplo (curl)

curl -X POST https://lodi-undet.lovable.app/api/public/v1/simulate \
  -H "Authorization: Bearer lodi_XXXXX" \
  -H "Content-Type: application/json" \
  -d '{"doses":[{"diaDose":0,"doseMg":1000},{"diaDose":42,"doseMg":1000}]}'