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
Word Lookup
Look up any Latin word to get its definition, grammatical analysis, and optionally its declension/conjugation chart.
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.
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.
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.
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:
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.
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.
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.