Trivia Engine

API Documentation

Everything you need to integrate with the Trivia API

Authentication

All API requests require an API key. Include your key in the X-API-Key header with every request.

Get Your API Key

  1. Go to API Keys in your dashboard
  2. Click "Create New Key"
  3. Copy your key and store it securely
// Include your API key in all requests
fetch('https://api.trivia-engine.com/api/v1/trivia/random', {
  headers: {
    'X-API-Key': 'your_api_key_here'
  }
});

Endpoints

Base URL: https://api.trivia-engine.com/api/v1

Get Random Question

GET/trivia/random

Returns a random trivia question. Optionally filter by category.

Parameters

categorystringFilter by category name
const response = await fetch('https://api.trivia-engine.com/api/v1/trivia/random', {
  headers: { 'X-API-Key': 'YOUR_API_KEY' }
});
const data = await response.json();
console.log(data.trivia.question);

List Categories

GET/trivia/categories

Returns all available trivia categories with question counts.

const response = await fetch('https://api.trivia-engine.com/api/v1/trivia/categories', {
  headers: { 'X-API-Key': 'YOUR_API_KEY' }
});
const data = await response.json();
data.categories.forEach(cat => console.log(cat.title));

Questions by Category

GET/trivia/category/:title

Returns questions from a specific category with pagination.

Parameters

title*stringCategory title (URL encoded)
limitintegerResults per page (default: 10, max: 100)
offsetintegerNumber of results to skip
const category = encodeURIComponent('WORLD HISTORY');
const response = await fetch(
  `https://api.trivia-engine.com/api/v1/trivia/category/${category}?limit=5`,
  { headers: { 'X-API-Key': 'YOUR_API_KEY' } }
);
const data = await response.json();

Search Questions

GET/trivia/search

Search questions by keyword. Searches question text.

Parameters

q*stringSearch query (min 2 characters)
limitintegerResults per page (default: 10, max: 100)
offsetintegerNumber of results to skip
const query = encodeURIComponent('solar system');
const response = await fetch(
  `https://api.trivia-engine.com/api/v1/trivia/search?q=${query}&limit=10`,
  { headers: { 'X-API-Key': 'YOUR_API_KEY' } }
);

Get Question by ID

GET/trivia/:id

Retrieve a specific question by its ID.

Parameters

id*integerThe question ID
const response = await fetch('https://api.trivia-engine.com/api/v1/trivia/12345', {
  headers: { 'X-API-Key': 'YOUR_API_KEY' }
});
const data = await response.json();

Response Format

All responses are JSON with a consistent structure.

Trivia Question Object

FieldTypeDescription
idintegerUnique question identifier
questionstringThe trivia question text
optionsstring[]Array of 4 answer choices
correctAnswerstringThe correct answer (matches one option)
categorystringCategory name (uppercase)

Error Handling

Errors return appropriate HTTP status codes with a JSON body.

{
  "success": false,
  "error": "Invalid API key"
}

HTTP Status Codes

CodeMeaningCommon Cause
200SuccessRequest completed successfully
400Bad RequestMissing required parameters
401UnauthorizedMissing or invalid API key
404Not FoundQuestion or category not found
429Too Many RequestsRate limit exceeded

Rate Limits

API requests are rate limited per API key to ensure fair usage.

Default Limits

  • 100 requests per minute per API key
  • 10,000 requests per day per API key

Rate Limit Headers

Check these response headers to monitor your usage:

X-RateLimit-LimitMaximum requests allowed
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when limit resets

Ready to Build?

Try out the API in our interactive playground

Open API Playground