API Documentation

Learn how to integrate Oracle Viewer's high-performance content moderation API using OpenAI's omni-moderation-latest model.

Authentication
Oracle Viewer uses API keys for authentication. Include your API key in the Authorization header.

All API requests must include your API key in the Authorization header:

Authorization: Bearer YOUR_API_KEY
Text Moderation API
Analyze text content for safety risks using OpenAI's omni-moderation-latest model with advanced performance optimization.

Endpoint

POST
https://api.oracleviewer.com/v1/moderate/text

Request Body

{
  "request": {
    "request_id": "unique-request-identifier",
    "content": "text to moderate",
    "categories": ["optional", "list", "of", "categories"]
  }
}

Parameters:

  • request_id - Optional client-provided request identifier for tracking
  • content - Text content to analyze (min 1 character, max 32MB)
  • categories - Optional list to filter results by specific categories (case-insensitive substring matching)

Response Format

{
  "risk_level": 0,           // 0=none, 1=low, 2=medium, 3=high
  "categories": [],          // List of violated categories
  "explanation": null,       // Detailed explanation when violations detected
  "model_used": "sentinel"
}

Risk Levels:

  • 0 - No risk detected
  • 1 - Low risk (flagged, confidence < 0.5)
  • 2 - Medium risk (flagged, confidence 0.5-0.8)
  • 3 - High risk (flagged, confidence ≥ 0.8)

Detection Categories

Sexual content
Sexual content involving minors
Harassment
Threatening harassment
Hate speech
Threatening hate speech
Illegal activities
Violent illegal activities
Self-harm
Self-harm intent
Self-harm instructions
Violence
Graphic violence
Code Examples
Example implementations in popular programming languages.
curl -X POST https://api.oracleviewer.com/v1/moderate/text \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "request": {
      "request_id": "unique-request-identifier",
      "content": "Your text content to moderate goes here",
      "categories": ["optional", "list", "of", "categories"]
    }
  }'
Rate Limiting
Understanding API rate limits and best practices.

Rate limits are applied per API key using Redis-based sliding window rate limiting (1,000 requests per minute).

Rate Limit Headers

Rate limit responses include detailed headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2025-01-15T10:31:00
Retry-After: 60

Performance Timing Headers

All responses include detailed performance metrics:

X-Timing-Auth: 0.003
X-Timing-RateLimit: 0.001
X-Timing-Database: 0.005
X-Timing-OpenAI: 0.678
X-Timing-Concurrent: 0.680
X-Timing-Response: 0.002
Error Handling
Common error responses and how to handle them.
400

Bad Request - Validation error with detailed message

401

Unauthorized - Authentication required

413

Request Entity Too Large - Text content exceeds 32MB limit

429

Too Many Requests - Rate limit exceeded with reset time

503

Service Unavailable - OpenAI API is currently unavailable

500

Internal Server Error - Unexpected server error

429 Rate Limit Response Example

{
  "detail": "Rate limit exceeded",
  "error_type": "rate_limit_error",
  "limit_type": "requests_per_minute",
  "limit": 1000,
  "current": 1001,
  "reset_at": "2025-01-15T10:31:00"
}