DR.INFO API Documentation - Medical AI Integration Guide

Primeiros Passos

Pré-requisitos: Você precisará de uma chave de API para começar. Entre em contato com nossa equipe em drinfo.ai/contact para solicitar acesso.

Início Rápido

01
Instale o SDKDisponível para Python e JavaScript
02
Configure sua chave de APIDefina os cabeçalhos de autenticação
03
Faça sua primeira requisiçãoComece a consultar informações médicas
04
Processe as respostasTrate respostas em streaming ou padrão

Instalação

installation.sh
# Python
pip install drinfo

# JavaScript/Node.js
npm install drinfo-sdk

Autenticação

A API do DR. INFO utiliza autenticação por token Bearer. Inclua sua chave de API no cabeçalho Authorization de cada requisição.

Cabeçalho de Autenticação

Authorization: Bearer YOUR_API_KEY

Exemplo de Requisição

auth_example.py
import requests

headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

response = requests.post(
    "https://api.drinfo.ai/v1/chat",
    headers=headers,
    json={"message": "What is hypertension?"}
)

Aviso de Segurança: Nunca exponha sua chave de API em código do lado do cliente ou em repositórios públicos. Utilize variáveis de ambiente ou sistemas seguros de gerenciamento de chaves.

Endpoints da API

POST/api/chat

Envie uma mensagem de chat e receba uma resposta padrão com informações médicas baseadas em inteligência artificial.

Corpo da Requisição:

{
  "message": "string",
  "conversationId": "string (optional)",
  "model": "string (optional)",
  "temperature": 0.7,
  "maxTokens": 1000
}

Resposta:

{
  "response": "string",
  "citations": [
    {
      "source": "string",
      "url": "string",
      "relevance": "number"
    }
  ],
  "conversationId": "string",
  "model": "string"
}
POST/api/chat/stream

Envie uma mensagem de chat e receba uma resposta em streaming para interação em tempo real.

Corpo da Requisição:

{
  "message": "string",
  "conversationId": "string (optional)",
  "model": "string (optional)",
  "temperature": 0.7
}

Resposta:

Stream de Server-Sent Events (SSE) com fragmentos:

data: {"content": "string", "type": "text"}
data: {"source": "string", "url": "string", "type": "citation"}
data: {"type": "end"}
POST/api/generate-key

Gere novas chaves de API com permissões personalizadas e datas de expiração.

Corpo da Requisição:

{
  "name": "string",
  "permissions": ["read", "write"],
  "expiresAt": "2024-12-31T23:59:59Z (optional)"
}

Resposta:

{
  "apiKey": "string",
  "keyId": "string",
  "name": "string",
  "createdAt": "2024-01-01T00:00:00Z"
}
GET/api/conversations/:conversationId

Recupere o histórico e o contexto de uma conversa específica.

Resposta:

{
  "conversationId": "string",
  "messages": [
    {
      "role": "user" | "assistant",
      "content": "string",
      "timestamp": "2024-01-01T00:00:00Z"
    }
  ],
  "createdAt": "2024-01-01T00:00:00Z",
  "updatedAt": "2024-01-01T00:00:00Z"
}

Exemplos de Código

Exemplo em Python

example.py
import requests
import json

API_KEY = "your-api-key-here"
BASE_URL = "https://api.drinfo.ai/v1"

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# Standard request
response = requests.post(
    f"{BASE_URL}/chat",
    headers=headers,
    json={
        "message": "What are the symptoms of diabetes?",
        "conversationId": "conv_123"
    }
)

result = response.json()
print(result['response'])
print("Citations:", result['citations'])

Exemplo em JavaScript

example.js
const API_KEY = 'your-api-key-here';
const BASE_URL = 'https://api.drinfo.ai/v1';

// Standard request
async function askQuestion(message) {
  const response = await fetch(`${BASE_URL}/chat`, {
    method: 'POST',
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      message: message,
      conversationId: 'conv_123'
    })
  });

  const data = await response.json();
  console.log(data.response);
}

askQuestion('What is hypertension?');

Integração com React

Integre a API do DR. INFO de forma simples nas suas aplicações React com estes exemplos e boas práticas.

Hook React Básico

useDrInfoChat.js
import { useState } from 'react';

const useDrInfoChat = () => {
  const [response, setResponse] = useState('');
  const [loading, setLoading] = useState(false);
  const [error, setError] = useState(null);

  const sendMessage = async (message, conversationId) => {
    setLoading(true);
    setError(null);

    try {
      const res = await fetch('/api/chat', {
        method: 'POST',
        headers: {
          'Authorization': `Bearer ${process.env.NEXT_PUBLIC_API_KEY}`,
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({ message, conversationId })
      });

      if (!res.ok) throw new Error('API request failed');

      const data = await res.json();
      setResponse(data.response);
      return data;
    } catch (err) {
      setError(err.message);
      throw err;
    } finally {
      setLoading(false);
    }
  };

  return { response, loading, error, sendMessage };
};

export default useDrInfoChat;

Exemplo de Componente de Chat

ChatInterface.jsx
import { useState } from 'react';
import useDrInfoChat from './hooks/useDrInfoChat';

export default function ChatInterface() {
  const [input, setInput] = useState('');
  const [conversationId] = useState('conv_' + Date.now());
  const { response, loading, error, sendMessage } = useDrInfoChat();

  const handleSubmit = async (e) => {
    e.preventDefault();
    if (!input.trim()) return;

    try {
      await sendMessage(input, conversationId);
      setInput('');
    } catch (err) {
      console.error('Failed to send message:', err);
    }
  };

  return (
    <div className="chat-container">
      <div className="messages">
        {response && (
          <div className="message assistant">
            {response}
          </div>
        )}
      </div>

      <form onSubmit={handleSubmit}>
        <input
          type="text"
          value={input}
          onChange={(e) => setInput(e.target.value)}
          placeholder="Ask a medical question..."
          disabled={loading}
        />
        <button type="submit" disabled={loading}>
          {loading ? 'Sending...' : 'Send'}
        </button>
      </form>

      {error && <div className="error">{error}</div>}
    </div>
  );
}

Tratamento de Erros

A API utiliza códigos de status HTTP padrão e retorna mensagens de erro detalhadas em formato JSON.

Códigos de Status

200
OKRequisição bem-sucedida
400
Bad RequestParâmetros de requisição inválidos
401
UnauthorizedChave de API inválida ou ausente
429
Too Many RequestsLimite de requisições excedido
500
Internal Server ErrorErro no servidor

Formato de Resposta de Erro

{
  "error": {
    "code": "string",
    "message": "string",
    "details": "string (optional)"
  }
}

Exemplo de Tratamento de Erros

error_handling.py
try:
    response = requests.post(
        f"{BASE_URL}/chat",
        headers=headers,
        json={"message": query}
    )
    response.raise_for_status()
    data = response.json()

except requests.exceptions.HTTPError as e:
    if e.response.status_code == 401:
        print("Authentication failed. Check your API key.")
    elif e.response.status_code == 429:
        print("Rate limit exceeded. Please wait.")
    else:
        error_data = e.response.json()
        print(f"Error: {error_data['error']['message']}")

Limites de Requisição

Os limites de requisição são aplicados por chave de API para garantir o uso justo e a estabilidade do sistema.

Limites Padrão

PlanoReq/MinReq/Mês
Plano Gratuito10100
Pague Conforme o Uso500Ilimitado

Cabeçalhos de Limite de Requisição

Toda resposta da API inclui cabeçalhos com informações sobre os limites de requisição:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1640995200

Precisa de limites maiores? Entre em contato conosco para discutir planos empresariais com limites personalizados e suporte dedicado.

Preços

O DR. INFO oferece planos de preços flexíveis para atender organizações de todos os tamanhos, desde startups até grandes empresas de saúde.

Plano Gratuito

€0/mês
  • 100 chamadas de API/mês
  • Suporte básico
  • Acesso à comunidade
  • Modelos padrão
POPULAR

Pague Conforme o Uso

€0.02/requisição
  • Sem compromisso mensal
  • Pague apenas pelo que usar
  • Suporte prioritário
  • Modelos avançados
Começar Agora

Faturamento Baseado em Tokens

Todos os planos utilizam faturamento baseado em tokens para custos previsíveis. Os preços são calculados com base no número de tokens processados nas suas requisições e respostas. Entre em contato conosco para informações detalhadas sobre preços de tokens e descontos por volume.

Perguntas Frequentes

Sim, você pode alterar seu plano a qualquer momento. As alterações entram em vigor imediatamente, e nós calcularemos a diferença proporcionalmente.

As requisições serão limitadas assim que você atingir sua cota mensal. Você pode fazer upgrade do seu plano ou adquirir capacidade adicional.

Sim, oferecemos preços especiais para organizações sem fins lucrativos qualificadas e instituições educacionais. Entre em contato com nossa equipe de vendas para mais detalhes.

Precisa de Ajuda?

Nossa equipe está aqui para apoiar a sua integração. Entre em contato conosco para acesso à API, dúvidas técnicas ou soluções empresariais.