Skip to content

API Reference

Complete API reference for the Text Classification API endpoints.

Base URL

http://localhost:8000

Authentication

No authentication required for current version.

Endpoints

POST /predict

Classify text(s) using the trained model.

Request Body:

{
  "texts": ["string"],
  "batch_size": 10
}

Parameters:

Parameter Type Required Description
texts array Yes Array of text strings to classify
batch_size integer No Batch size for processing (default: 10, max: 50)

Response:

{
  "predictions": [
    {
      "text": "string",
      "prediction": "string",
      "confidence": 0.95,
      "processing_time": 0.123
    }
  ],
  "batch_info": {
    "total_texts": 1,
    "batch_size": 10,
    "processing_time": 0.123
  }
}

Response Fields:

Field Type Description
predictions array Array of prediction results
predictions[].text string Original input text
predictions[].prediction string Predicted class label
predictions[].confidence float Prediction confidence score (0.0-1.0)
predictions[].processing_time float Time taken for this prediction (seconds)
batch_info object Batch processing information
batch_info.total_texts integer Total number of texts processed
batch_info.batch_size integer Batch size used
batch_info.processing_time float Total processing time (seconds)

Status Codes:

  • 200 - Success
  • 400 - Bad Request (invalid input)
  • 413 - Payload Too Large
  • 422 - Validation Error
  • 500 - Internal Server Error

Example Request:

curl -X POST "http://localhost:8000/predict" \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["This is a great product!", "This service is terrible."],
    "batch_size": 10
  }'

Example Response:

{
  "predictions": [
    {
      "text": "This is a great product!",
      "prediction": "positive",
      "confidence": 0.89,
      "processing_time": 0.045
    },
    {
      "text": "This service is terrible.",
      "prediction": "negative",
      "confidence": 0.76,
      "processing_time": 0.038
    }
  ],
  "batch_info": {
    "total_texts": 2,
    "batch_size": 10,
    "processing_time": 0.083
  }
}

GET /health

Check the health status of the API.

Response:

{
  "status": "healthy",
  "timestamp": "2024-01-15T10:30:00Z",
  "version": "1.0.0",
  "model_loaded": true,
  "memory_usage": {
    "used": 245760000,
    "available": 1073741824,
    "percentage": 22.9
  }
}

Response Fields:

Field Type Description
status string Health status ("healthy" or "unhealthy")
timestamp string ISO 8601 timestamp
version string API version
model_loaded boolean Whether the model is loaded
memory_usage object Memory usage information
memory_usage.used integer Used memory in bytes
memory_usage.available integer Available memory in bytes
memory_usage.percentage float Memory usage percentage

Status Codes:

  • 200 - Healthy
  • 503 - Unhealthy

Example Request:

curl http://localhost:8000/health

GET /metrics

Get performance metrics (when enabled).

Response:

{
  "predictions_total": 1250,
  "predictions_per_second": 2.5,
  "average_response_time": 0.145,
  "memory_usage_mb": 234,
  "uptime_seconds": 3600,
  "cache_hit_rate": 0.85
}

Response Fields:

Field Type Description
predictions_total integer Total predictions made
predictions_per_second float Predictions per second rate
average_response_time float Average response time in seconds
memory_usage_mb integer Current memory usage in MB
uptime_seconds integer Server uptime in seconds
cache_hit_rate float Model cache hit rate (0.0-1.0)

Status Codes:

  • 200 - Success
  • 404 - Metrics not enabled
  • 503 - Metrics collection failed

GET /

Get API information and available endpoints.

Response:

{
  "name": "Text Classification API",
  "version": "1.0.0",
  "description": "FastAPI-based text classification service",
  "endpoints": {
    "predict": {
      "url": "/predict",
      "method": "POST",
      "description": "Classify text using trained model"
    },
    "health": {
      "url": "/health",
      "method": "GET",
      "description": "Health check endpoint"
    },
    "metrics": {
      "url": "/metrics",
      "method": "GET",
      "description": "Performance metrics"
    }
  },
  "model_info": {
    "type": "scikit-learn classifier",
    "classes": ["negative", "positive"],
    "vectorizer": "TF-IDF"
  }
}

Error Responses

Validation Error (422)

{
  "detail": [
    {
      "loc": ["body", "texts"],
      "msg": "field required",
      "type": "value_error.missing"
    }
  ]
}

Internal Server Error (500)

{
  "detail": "Internal server error",
  "error_id": "123e4567-e89b-12d3-a456-426614174000"
}

Rate Limiting

No rate limiting implemented in current version.

Request Limits

  • Maximum batch size: 50 texts
  • Maximum text length: 10,000 characters
  • Maximum request payload: 1MB

Content Types

  • Request: application/json
  • Response: application/json

CORS

CORS is enabled for all origins in development. Configure appropriately for production.

Timeouts

  • Request timeout: 30 seconds
  • Model prediction timeout: 10 seconds per batch

Data Types

Text Input

  • Type: String (UTF-8)
  • Maximum length: 10,000 characters
  • Required: Yes
  • Validation: Non-empty, valid UTF-8

Batch Size

  • Type: Integer
  • Range: 1-50
  • Default: 10
  • Required: No

Prediction Output

  • Type: String
  • Possible values: Model-dependent (e.g., "positive", "negative")
  • Format: Lowercase, no spaces

Confidence Score

  • Type: Float
  • Range: 0.0-1.0
  • Format: 2 decimal places

WebSocket Support

No WebSocket endpoints in current version.

File Upload

No file upload endpoints in current version.

Streaming

No streaming responses in current version.

Pagination

No pagination required for current endpoints.

Filtering

No filtering options in current version.

Sorting

No sorting options in current version.

Performance Characteristics

Benchmark Results (10,000 Sample Test)

Overall Performance: - Accuracy: 86.3% across diverse text samples - Average Response Time: 74.26ms per prediction - Throughput: 608+ predictions per second - Average Confidence: 83.3% - Error Rate: 0.0% (100% success rate)

Response Time Distribution: - Fast responses (20-50ms): 22.8% of requests - Standard responses (50-100ms): 74.1% of requests - High confidence predictions (0.8-1.0): 59.8% of predictions

Batch Processing: - Optimal batch size: 50 texts - Concurrent processing: Thread pool optimization - Memory efficient: ~994MB with all models loaded

Class Performance: - Positive sentiment: 86.5% accuracy, 89.6% confidence - Negative sentiment: 99.1% accuracy, 93.8% confidence - Neutral content: 73.4% accuracy, 66.6% confidence

Performance Guidelines

Optimal Usage: - Batch size: 10-50 texts per request - Text length: Up to 10,000 characters - Concurrent requests: Up to 50 simultaneous - Rate limiting: Built-in protection for stability

Performance Tips: - Use batch endpoints for multiple texts - Larger batches improve throughput - Monitor /health endpoint for system status - Check /metrics for real-time performance data

Versioning

API version is included in response headers and root endpoint.

Deprecation

No deprecated endpoints in current version.

SDKs

No official SDKs available. Use standard HTTP clients.

Changelog

v1.0.0

  • Initial release
  • Basic text classification endpoint
  • Health check endpoint
  • Performance metrics endpoint