DR.INFO API Documentation - Medical AI Integration Guide

Aan de slag

Vereisten: U heeft een API-sleutel nodig om te beginnen. Neem contact op met ons team via drinfo.ai/contact om toegang aan te vragen.

Snel starten

01
Installeer de SDKBeschikbaar voor Python en JavaScript
02
Configureer uw API-sleutelStel authenticatieheaders in
03
Doe uw eerste verzoekBegin met het opvragen van medische informatie
04
Verwerk antwoordenVerwerk streaming- of standaardantwoorden

Installatie

installation.sh
# Python
pip install drinfo

# JavaScript/Node.js
npm install drinfo-sdk

Authenticatie

De DR. INFO API maakt gebruik van Bearer-tokenauthenticatie. Voeg uw API-sleutel toe in de Authorization-header van elk verzoek.

Authenticatieheader

Authorization: Bearer YOUR_API_KEY

Voorbeeldverzoek

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?"}
)

Beveiligingsmelding: Stel uw API-sleutel nooit bloot in client-side code of openbare repositories. Gebruik omgevingsvariabelen of beveiligde sleutelbeheersystemen.

API Endpoints

POST/api/chat

Verstuur een chatbericht en ontvang een standaardantwoord met AI-gestuurde medische informatie.

Verzoekinhoud:

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

Antwoord:

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

Verstuur een chatbericht en ontvang een streamingantwoord voor real-time interactie.

Verzoekinhoud:

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

Antwoord:

Server-Sent Events (SSE) stream met chunks:

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

Genereer nieuwe API-sleutels met aangepaste machtigingen en vervaldatums.

Verzoekinhoud:

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

Antwoord:

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

Haal de gespreksgeschiedenis en context op voor een specifiek gesprek.

Antwoord:

{
  "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"
}

Codevoorbeelden

Python Voorbeeld

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'])

JavaScript Voorbeeld

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?');

React Integratie

Integreer de DR. INFO API naadloos in uw React-applicaties met deze voorbeelden en best practices.

Basis React Hook

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;

Chatcomponentvoorbeeld

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>
  );
}

Foutafhandeling

De API maakt gebruik van standaard HTTP-statuscodes en retourneert gedetailleerde foutmeldingen in JSON-formaat.

Statuscodes

200
OKVerzoek succesvol
400
Bad RequestOngeldige verzoekparameters
401
UnauthorizedOngeldige of ontbrekende API-sleutel
429
Too Many RequestsLimiet overschreden
500
Internal Server ErrorServerfout

Foutantwoordformaat

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

Voorbeeld foutafhandeling

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']}")

Limieten

Limieten worden per API-sleutel toegepast om eerlijk gebruik en systeemstabiliteit te waarborgen.

Standaardlimieten

NiveauVerz./min.Verz./mnd.
Gratis niveau10100
Pay As You Go500Onbeperkt

Limietheaders

Elk API-antwoord bevat headers met limietinformatie:

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

Hogere limieten nodig? Neem contact met ons op om enterprise-abonnementen met aangepaste limieten en toegewijde ondersteuning te bespreken.

Prijzen

DR. INFO biedt flexibele prijsplannen die geschikt zijn voor organisaties van alle groottes, van startups tot grote zorginstellingen.

Gratis niveau

€0/maand
  • 100 API-aanroepen/maand
  • Basisondersteuning
  • Toegang tot community
  • Standaardmodellen
POPULAIR

Pay As You Go

€0.02/verzoek
  • Geen maandelijkse verplichting
  • Betaal alleen voor wat u gebruikt
  • Prioriteitsondersteuning
  • Geavanceerde modellen
Aan de slag

Tokenfacturering

Alle abonnementen gebruiken tokenfacturering voor voorspelbare kosten. De prijs is gebaseerd op het aantal tokens dat in uw verzoeken en antwoorden wordt verwerkt. Neem contact met ons op voor gedetailleerde tokenprijzen en volumekortingen.

Veelgestelde vragen

Ja, u kunt uw abonnement op elk moment wijzigen. Wijzigingen gaan onmiddellijk in en wij verrekenen het verschil naar rato.

Verzoeken worden beperkt zodra u uw maandelijkse quotum bereikt. U kunt uw abonnement upgraden of extra capaciteit aanschaffen.

Ja, wij bieden speciale prijzen voor gekwalificeerde non-profitorganisaties en onderwijsinstellingen. Neem contact op met ons verkoopteam voor meer informatie.

Hulp nodig?

Ons team staat klaar om u te ondersteunen bij uw integratie. Neem contact met ons op voor API-toegang, technische vragen of enterprise-oplossingen.