Lung-Cancer-AI-Advisor / API Documentation.md
moazx's picture
API Documentation
99cde10
# Lung Cancer AI Advisor API Documentation
## Base URL
```
https://moazx-lung-cancer-ai-advisor.hf.space/ # Production
http://127.0.0.1:7860/ # Development
```
---
## 1. POST `/ask`
**Full Endpoint:** `https://moazx-lung-cancer-ai-advisor.hf.space/ask` (Production)
**Development:** `http://127.0.0.1:7860/ask`
**Purpose:** Get a complete AI response for a lung cancer-related medical query.
### Request
- **Method:** `POST`
- **Content-Type:** `application/json`
- **Authentication:** Required (via `Authorization` header)
**Request Body (JSON):**
```json
{
"query": "What are the early symptoms of lung cancer?",
"session_id": "user_123_session_1699612345"
}
```
**Parameters:**
- `query` (required, string): The medical question about lung cancer
- `session_id` (required, string): Unique session identifier for conversation continuity. Format: `user_{user_id}_session_{timestamp}`
### Response (200 OK)
```json
{
"response": "Early symptoms of lung cancer may include...\n\n**Common Early Signs:**\n- Persistent cough...",
"session_id": "user_123_session_1699612345"
}
```
### Error Responses
- **400 Bad Request**: Missing or invalid parameters
- **401 Unauthorized**: Missing or invalid authentication
- **500 Internal Server Error**: Error processing the query
- **503 Service Unavailable**: Service is initializing, try again later
---
## 2. POST `/ask/stream` (Recommended)
**Full Endpoint:** `https://moazx-lung-cancer-ai-advisor.hf.space/ask/stream` (Production)
**Development:** `http://127.0.0.1:7860/ask/stream`
**Purpose:** Stream AI response in real-time for better UX.
### Request
- **Method:** `POST`
- **Content-Type:** `application/json`
- **Authentication:** Required (via `Authorization` header)
**Request Body (JSON):**
```json
{
"query": "What are the early symptoms of lung cancer?",
"session_id": "user_123_session_1699612345"
}
```
**Parameters:**
- `query` (required, string): The medical question about lung cancer
- `session_id` (required, string): Unique session identifier for conversation continuity. Format: `user_{user_id}_session_{timestamp}`
### Response
- Streams the AI response in chunks (text/event-stream or similar).
- Each chunk contains a part of the response.
### Error Responses
- **400 Bad Request**: Missing or invalid parameters
- **401 Unauthorized**: Missing or invalid authentication
- **500 Internal Server Error**: Error processing the query
- **503 Service Unavailable**: Service is initializing, try again later
---
## 3. GET `/health`
**Full Endpoint:** `https://moazx-lung-cancer-ai-advisor.hf.space/health` (Production)
**Development:** `http://127.0.0.1:7860/health`
**Related Endpoints:**
- `GET /health/ping` - Basic connectivity check
- `GET /health/initialization` - Check initialization status
- `GET /health/version` - Get API version information
**Purpose:** Comprehensive health check of all system components.
### Response (200 OK)
```json
{
"status": "healthy",
"version": "1.0.0",
"timestamp": "2024-01-01T12:00:00Z",
"components": {
"agent": "healthy",
"vector_store": "healthy",
"data_loaders": "healthy",
"tools": "healthy"
},
"initialization": {
"is_complete": true,
"status_message": "Initialization complete",
"is_successful": true,
"error": null
}
}
```
**Component Status Values:**
- `healthy`: Component is functioning normally
- `unhealthy`: Component is not functioning
- `initializing`: Component is still initializing
**Initialization Status:**
- `is_complete`: Whether initialization has completed
- `is_successful`: Whether initialization was successful
- `status_message`: Current status message
- `error`: Any error that occurred during initialization
---
## 4. Export Endpoints
### 4.1 GET `/export/{format}`
**Full Endpoint:** `https://moazx-lung-cancer-ai-advisor.hf.space/export/{format}` (Production)
**Development:** `http://127.0.0.1:7860/export/{format}`
**Purpose:** Export conversation history in the specified format.
**Path Parameters:**
- `format` (string, required):
- `docx`: Microsoft Word document (.docx)
- `pdf`: Portable Document Format (.pdf)
**Query Parameters:**
- `session_id` (string, required): The session ID to export (e.g., "user_123_session_1699612345")
**Example Request:**
```
GET /export/pdf?session_id=user_123_session_1699612345
```
**Responses:**
- **200 OK**:
- Returns the exported file with appropriate content-type header
- Headers:
- `Content-Type`: `application/pdf` or `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
- `Content-Disposition`: `attachment; filename=conversation_{session_id}_{timestamp}.{format}`
- **400 Bad Request**:
- Invalid format (not 'docx' or 'pdf')
- Missing required parameters
- **401 Unauthorized**: Missing or invalid authentication
- **404 Not Found**: No conversation history found for the specified session
- **500 Internal Server Error**: Error generating export file
- **503 Service Unavailable**: Service is initializing, try again later
**Response Headers:**
- `Content-Type`: `application/pdf` or `application/vnd.openxmlformats-officedocument.wordprocessingml.document`
- `Content-Disposition`: `attachment; filename=conversation_{session_id}_{timestamp}.{format}`
**Frontend Integration Tips:**
- Trigger file download using the browser's built-in behavior
- Show loading state during export generation
- Handle errors gracefully with user-friendly messages
- For PDF exports, consider showing a preview using PDF.js
---
## 5. Session Management
### 5.1 GET `/sessions`
**Purpose:** List all active conversation sessions.
**Response (200 OK):**
```json
{
"active_sessions": ["session1", "session2"],
"count": 2,
"timestamp": "2024-01-01T12:00:00Z"
}
```
### 5.2 DELETE `/sessions/{session_id}`
**Purpose:** Clear conversation history for a specific session.
**Path Parameters:**
- `session_id`: The session ID to clear
**Response (200 OK):**
```json
{
"message": "Session 'session_id' cleared successfully",
"session_id": "session_id",
"timestamp": "2024-01-01T12:00:00Z"
}
```
### 5.3 DELETE `/sessions`
**Purpose:** Clear all conversation sessions.
**Response (200 OK):**
```json
{
"message": "All sessions cleared successfully",
"timestamp": "2024-01-01T12:00:00Z"
}
```
---
## 6. Error Handling
All error responses follow this format:
```json
{
"error": "error_type",
"message": "Human-readable error message",
"details": {
"field": "Additional error details"
},
"timestamp": "2024-01-01T12:00:00Z"
}
```
**Common Error Types:**
- `validation_error`: Request validation failed
- `authentication_error`: Invalid or missing authentication
- `not_found`: Requested resource not found
- `rate_limit_exceeded`: Too many requests
- `server_error`: Internal server error
---
## 7. Rate Limiting
- **Rate Limit:** 100 requests per minute per IP address
- **Headers:**
- `X-RateLimit-Limit`: Request limit per time window
- `X-RateLimit-Remaining`: Remaining requests in current window
- `X-RateLimit-Reset`: Time when the rate limit resets (UTC timestamp)
---
## 8. Authentication
All endpoints (except `/health` and `/health/ping`) require authentication.
**Authentication Header:**
```
Authorization: Bearer YOUR_API_KEY
```
**Getting an API Key:**
Contact the administrator to obtain an API key with appropriate permissions.
---
## 9. Best Practices
1. **Session Management**
- Always use unique session IDs for different users
- Reuse the same session ID for follow-up questions
- Clean up old sessions when no longer needed
2. **Error Handling**
- Implement retry logic for transient errors (5xx)
- Cache successful responses when appropriate
- Log errors for debugging purposes
3. **Performance**
- Use the streaming endpoint (`/ask/stream`) for better UX
- Implement client-side caching of responses
- Batch requests when possible
4. **Security**
- Never expose API keys in client-side code
- Use HTTPS for all requests
- Validate all user input
---
## 10. Support
For questions or issues, please contact:
- **Email:** support@lungcanceradvisor.com
- **Slack:** #api-support channel
- **Documentation:** https://docs.lungcanceradvisor.com/api
---
## Changelog
### v1.0.0 (2024-01-01)
- Initial release of the Lung Cancer AI Advisor API
- Support for streaming and non-streaming queries
- Session-based conversation history
- Export functionality (PDF/DOCX)
- Comprehensive health monitoring
---
*Documentation last updated: November 10, 2024*
For questions or further integration help, contact the backend team.