Introduction

Welcome to the Latin to English API documentation. This free, public API provides comprehensive Latin word translations, grammatical analysis, and declension/conjugation charts powered by Whitaker's Words.

Key Features

  • No authentication required
  • Free to use for personal and commercial projects
  • JSON responses for easy integration
  • Support for all 8 parts of speech
  • Complete grammatical analysis
  • Declension and conjugation charts

Getting Started

Making your first API call is simple. No API key or authentication is required.

Base URL

https://latin.71m.us

Quick Example

curl https://latin.71m.us/latin/gloria

Authentication

No authentication is required. All endpoints are publicly accessible. Simply make HTTP GET requests to the endpoints below.

API Endpoints

GET /latin/{word}
Look up a Latin word and get detailed grammatical analysis
POST /latin/batch
Lookup multiple Latin words in a single request
GET /latin/random
Get a random Latin word with optional difficulty levels
GET /word-of-day
Get the word of the day with definition
GET /latin/{word}/examples
Get example sentences for a Latin word
GET /chart/{word}
Get declension or conjugation chart for a word
GET /health
Check API health and status

Word Lookup

Look up any Latin word to get its definition, grammatical analysis, and optionally its declension/conjugation chart.

GET /latin/{word}

Path Parameters

Parameter Type Description
word required string The Latin word to look up (e.g., "gloria", "amare", "rex")

Query Parameters

Parameter Type Description
withChart optional boolean Include declension/conjugation chart data (default: false)

Example Request

curl "https://latin.71m.us/latin/gloria?withChart=true"
fetch('https://latin.71m.us/latin/gloria?withChart=true') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error));
import requests response = requests.get('https://latin.71m.us/latin/gloria', params={'withChart': 'true'}) data = response.json() print(data)
$url = 'https://latin.71m.us/latin/gloria?withChart=true'; $response = file_get_contents($url); $data = json_decode($response, true); print_r($data);

Example Response

{ "translations": [ { "inflections": [ { "stem": "glori", "ending": "a", "pos": "noun", "declension": 1, "case": "nom", "number": 1, "gender": "feminine" } ], "forms": ["gloria", "gloriae"], "definitions": ["glory, fame, renown, praise, honor"] } ] }

Batch Lookup

Look up multiple Latin words in a single request to reduce API calls and improve efficiency.

POST /latin/batch

Request Body

Field Type Description
words required array Array of Latin words to lookup (max 50 words)
withChart optional boolean Include charts for all words (default: false)

Example Request

curl -X POST "https://latin.71m.us/latin/batch" \ -H "Content-Type: application/json" \ -d '{"words": ["gloria", "amor", "pax"]}'
fetch('https://latin.71m.us/latin/batch', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ words: ['gloria', 'amor', 'pax'] }) }) .then(response => response.json()) .then(data => console.log(data));
import requests response = requests.post( 'https://latin.71m.us/latin/batch', json={'words': ['gloria', 'amor', 'pax']} ) data = response.json() print(data)

Example Response

{ "total": 3, "successful": 3, "failed": 0, "results": [ { "word": "gloria", "success": true, "data": { "translations": [...] } }, { "word": "amor", "success": true, "data": { "translations": [...] } }, { "word": "pax", "success": true, "data": { "translations": [...] } } ] }

Error Handling

If a word is not found or invalid, it will be marked with success: false in the results, but the request will still return 200 OK with partial results.

{ "word": "invalidword123", "success": false, "error": "Word not found" }

Random Word

Get a random Latin word, useful for practice or study applications.

GET /latin/random

Query Parameters

Parameter Type Description
difficulty optional string Difficulty level: beginner, intermediate, advanced, verbs, mixed (default: mixed)
definition optional boolean Include word definition (default: true)
chart optional boolean Include chart data (default: false)

Example Request

curl "https://latin.71m.us/latin/random?difficulty=beginner"
fetch('https://latin.71m.us/latin/random?difficulty=beginner') .then(response => response.json()) .then(data => console.log(data));
import requests response = requests.get('https://latin.71m.us/latin/random', params={'difficulty': 'beginner'}) print(response.json())

Word of the Day

Get a consistent daily Latin word. All users see the same word for any given date.

GET /word-of-day

Parameters

Parameter Type Default Description
date string today Date in YYYY-MM-DD format
include_definition boolean true Include full word definition
include_chart boolean false Include grammatical charts

Example

curl "https://latin.71m.us/word-of-day"
fetch('https://latin.71m.us/word-of-day') .then(response => response.json()) .then(data => console.log(data));
import requests response = requests.get('https://latin.71m.us/word-of-day') print(response.json())

Archive

View past words of the day:

GET /word-of-day/archive
curl "https://latin.71m.us/word-of-day/archive?limit=7"

Example Sentences

Get example sentences showing Latin words in context with translations and literary sources.

GET /latin/{word}/examples

Parameters

Parameter Type Default Description
limit integer 5 Maximum examples to return (1-20)
difficulty string null Filter by difficulty: beginner, intermediate, advanced
author string null Filter by author name (e.g., Cicero, Vergil)

Example

curl "https://latin.71m.us/latin/amor/examples"

Response

{ "word": "amor", "total_available": 2, "examples": [ { "id": 1, "latin": "Omnia vincit amor.", "english": "Love conquers all.", "source": { "author": "Vergil", "work": "Eclogues", "reference": "10.69" }, "difficulty": "beginner" } ] }

Declension & Conjugation Charts

Get complete declension (for nouns, adjectives) or conjugation (for verbs) charts.

GET /chart/{word}

Example Request

curl "https://latin.71m.us/chart/amo"

Tip: You can also get charts inline with word lookup by using ?withChart=true parameter.

Error Handling

The API uses standard HTTP status codes to indicate success or failure.

Status Codes

Code Description
200 Success - Request completed successfully
400 Bad Request - Invalid parameters or input
404 Not Found - Word not found in dictionary
429 Too Many Requests - Rate limit exceeded (see Rate Limits)
500 Internal Server Error - Something went wrong on our end

Error Response Format

{ "error": "Word not found", "status": "404" }

Rate Limit Error (429)

{ "error": "Rate limit exceeded", "message": "5 per 1 second", "status": 429 }

Rate Limits

The API uses IP-based rate limiting to ensure fair usage for all users.

Default Limits

10 requests per second and 1000 requests per day per IP address.

Endpoint-Specific Limits

Endpoint Rate Limit
/latin/{word} 10 per second, 500 per hour
/latin/{word}/examples 10 per second, 200 per hour
/latin/batch 3 per second, 200 per hour
/latin/random 5 per second, 100 per hour
/word-of-day 10 per second, 500 per hour
/chart/{word} 10 per second, 200 per hour

Rate Limit Response

When you exceed the rate limit, the API returns HTTP status code 429 Too Many Requests:

{ "error": "Rate limit exceeded", "message": "10 per 1 second", "status": 429 }

Best Practices

  • Cache responses when possible to reduce API calls
  • Use the batch endpoint for multiple word lookups
  • Implement exponential backoff when receiving 429 errors

Performance Metrics

Real-time performance statistics for the API.

Average

-

Minimum

-

Maximum

-

Live updates every 5 seconds | Based on last 100 requests

Access Metrics

curl https://latin.71m.us/metrics

Support & Resources

This API is powered by Whitaker's Words, an open-source Latin-English dictionary.