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
Instalação
# Python
pip install drinfo
# JavaScript/Node.js
npm install drinfo-sdkAutenticaçã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_KEYExemplo de Requisição
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
/api/chatEnvie 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"
}/api/chat/streamEnvie 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"}/api/generate-keyGere 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"
}/api/conversations/:conversationIdRecupere 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
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
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
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
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
Formato de Resposta de Erro
{
"error": {
"code": "string",
"message": "string",
"details": "string (optional)"
}
}Exemplo de Tratamento de Erros
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
| Plano | Req/Min | Req/Mês |
|---|---|---|
| Plano Gratuito | 10 | 100 |
| Pague Conforme o Uso | 500 | Ilimitado |
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: 1640995200Precisa 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
- 100 chamadas de API/mês
- Suporte básico
- Acesso à comunidade
- Modelos padrão
Pague Conforme o Uso
- Sem compromisso mensal
- Pague apenas pelo que usar
- Suporte prioritário
- Modelos avançados
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.