API Documentation
The latindictionary.io REST API lets you look up Latin words, translate between Latin and English, inspect Latin text, and generate inflection tables — all programmatically.
These examples cover common GET requests. The live OpenAPI reference lists all routes, optional parameters, and POST request schemas. Parsing depends on the server’s installed model; handle fallback responses and HTTP 501 explicitly.
Python Client
The easiest way to use the API is with the official Python client:
pip install latindictionary-iofrom latindictionary_io import Client
with Client() as client:
# Latin → English
result = client.latin_to_english("canis")
print(result)
# English → Latin
result = client.english_to_latin("love")
print(result)
# Auto-detect language
result = client.auto_detect("amor")
print(result)
# Latin parsing (may return dictionary fallback)
result = client.latin_parse("arma virumque cano")
print(result)
# Inflection tables
result = client.inflection_table("amo")
print(result)The Python client also supports async usage via AsyncClient. See the README for full documentation.
Endpoints
/la-to-en/{word}Look up a Latin word and return English definitions, inflection data, part of speech, and frequency information.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
word | string | Yes | The Latin word to look up (URL path parameter) |
Example
curl "https://api.latindictionary.io/api/v1/la-to-en/canis"Response excerpt
{
"data": {
"words": [{
"word": [{
"form": "canis",
"entry": [{
"dict": [{ "hdwd": "canis, canis", "pofs": "noun", "freq": "very frequent" }],
"mean": ["dog; hound; subordinate; dog-star/fish; ..."]
}]
}]
}]
}
}/en-to-la/{word}Look up an English word and return matching Latin equivalents with definitions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
word | string | Yes | The English word to look up (URL path parameter) |
Example
curl "https://api.latindictionary.io/api/v1/en-to-la/dog"Response excerpt
{
"data": {
"words": [{
"word": [{
"form": "dog",
"entry": [{
"dict": [{ "hdwd": "canis, canis", "pofs": "noun", "freq": "very frequent" }],
"mean": ["dog; hound; subordinate; ..."]
}]
}]
}]
}
}/auto-detect/{word}Auto-detect whether the input is Latin or English and return the appropriate translation.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
word | string | Yes | The text to detect and translate (URL path parameter) |
Example
curl "https://api.latindictionary.io/api/v1/auto-detect/amor"Response excerpt
{
"language": "latin",
"data": {
"words": [{
"word": [{
"form": "amor",
"entry": [{ "dict": [{ "hdwd": "amor, amoris", "pofs": "noun" }], "mean": ["love; ..."] }]
}]
}]
}
}/latin-parseParse Latin text with an optional LatinCy model. Without that model, the default fallback returns dictionary candidates rather than resolved sentence grammar.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q | string | Yes | The Latin text to parse (1–64,000 characters for GET) |
model | string | No | Installed LatinCy model identifier; selecting a model does not install it |
allow_fallback | boolean | No | Allow dictionary fallback if the model is unavailable (0 or 1; default: 1). Set 0 to receive HTTP 501 instead. |
Example
curl "https://api.latindictionary.io/api/v1/latin-parse?q=arma%20virumque%20cano"Response excerpt
{
"language": "latin",
"model": "fallback",
"data": {
"sentences": [{
"text": "arma virumque cano",
"tokens": [
{ "text": "arma", "lemma": "arma", "upos": "X" },
{ "text": "virumque", "lemma": "virumque", "upos": "X" },
{ "text": "cano", "lemma": "cano", "upos": "X" }
]
}]
}
}/inflection-tableGenerate inflection tables for matching dictionary entries. The default common mode limits rare forms; use mode=all to include them.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
lemma | string | No | The word to resolve (up to 1,024 characters). Provide lemma or entry_id; word and q are aliases for lemma. |
entry_id | integer | No | Specific entry ID for disambiguation |
max_entries | integer | No | Maximum entries to return (1–100; default: 5) |
include_periphrastic | boolean | No | Include periphrastic forms (0 or 1; default: 1) |
mode | string | No | common (default) or all |
include_locative | boolean | No | Include locative forms (0 or 1; default: 0) |
Example
curl "https://api.latindictionary.io/api/v1/inflection-table?lemma=amo"Response excerpt
{
"query": { "lemma": "amo", "token": "amo" },
"results": [{
"entry": {
"hdwd": "amo, amare, amavi, amatus",
"pofs": "verb",
"mean": "love, like; fall in love with; be fond of; have a tendency to;"
},
"tables": {
"finite": {
"indicative": {
"active": {
"present": {
"singular": { "1": ["amo"], "2": ["amas"], "3": ["amat"] },
"plural": { "1": ["amamus"], "2": ["amatis"], "3": ["amant"] }
}
}
}
}
}
}]
}Notes
- The public API requires no authentication. URL-encode path parameters and query values.
- Requests are limited per source IP to 600 per minute for non-parser endpoints and 60 per minute for
/api/v1/latin-parse. - The
RateLimit-Policyresponse header describes the applicable quota and window. The parser has a separate quota from other endpoints. A429response means the enforced limit was exceeded. - All endpoints return JSON responses. Examples are excerpts and omit additional entries, analyses, and table sections.
- When parsing returns model
fallback, tokens withupos: Xhave no resolved part of speech. Do not treat these as grammatical analysis. Set allow_fallback=0 if your application requires a loaded context model. - For the best experience, use the Python client library which includes retry logic and error handling.
See the full API policy for enforcement and retry guidance.