IATE Terminology API
2,456,445 terms across 24 EU official languages. Exact lookup, semantic search, cross-lingual translation, TBX/TMX export, and custom glossaries.
Base URL: https://staging.pauhu.eu
Authentication: Authorization: Bearer YOUR_API_KEY — Get a key at /keys/.
Rate limits: Free tier: 3 requests/day. Paid tiers: per plan (see Pricing).
GET/iate/lookup
Exact term lookup against the full IATE terminology database. Returns matching entries with definitions, domains, and reliability scores.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
term | string | Yes | — | The term to look up (e.g. data protection) |
lang | string | No | en | ISO 639-1 language code (see supported languages) |
Example
curl "https://staging.pauhu.eu/iate/lookup?term=data%20protection&lang=fi" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"query": { "term": "data protection", "lang": "fi" },
"found": true,
"count": 3,
"results": [
{
"id": 12345,
"term": "tietosuoja",
"definition": "Protection of personal data from unauthorised processing",
"context": "Regulation (EU) 2016/679 (GDPR)",
"domain": "1011",
"reliability": 4,
"language": "fi",
"source": "IATE-1234567"
},
{
"id": 12346,
"term": "henkilotietojen suoja",
"definition": "Protection of individuals with regard to the processing of personal data",
"context": "Charter of Fundamental Rights, Article 8",
"domain": "1236",
"reliability": 4,
"language": "fi",
"source": "IATE-1234568"
}
]
}
GET/iate/search
Fuzzy and semantic search across terminology. Uses 1024-dimensional embeddings (BGE-M3, cosine similarity) to find terms by meaning, not just exact string matches. Ideal for discovering related terminology you may not know the exact wording for.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
q | string | Yes | — | Search query in natural language |
lang | string | No | en | ISO 639-1 language code |
domain | string | No | all | EuroVoc domain code (e.g. 1236 for law) |
limit | integer | No | 10 | Max results (1–50) |
Example
curl "https://staging.pauhu.eu/iate/search?q=personal%20data%20processing&lang=en&domain=1236&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"query": "personal data processing",
"lang": "en",
"domain": "1236",
"count": 5,
"results": [
{
"id": 23456,
"term": "processing of personal data",
"definition": "Any operation performed on personal data, whether or not by automated means",
"context": "GDPR Article 4(2)",
"domain": "1236",
"reliability": 4,
"language": "en",
"source": "IATE-2345678",
"score": 0.94
},
{
"id": 23457,
"term": "data controller",
"definition": "Natural or legal person which determines the purposes and means of the processing of personal data",
"context": "GDPR Article 4(7)",
"domain": "1236",
"reliability": 4,
"language": "en",
"source": "IATE-2345679",
"score": 0.87
}
]
}
Score range: 0.0 to 1.0 (cosine similarity). Scores above 0.8 indicate high relevance. See confidence scores below.
GET/iate/translate
Look up a term in one language and retrieve its official translations in another language via IATE concept IDs. Unlike machine translation, these are institutionally verified terminology equivalents.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
term | string | Yes | — | The term to translate |
source | string | No | en | Source language code |
target | string | Yes | — | Target language code |
Example
curl "https://staging.pauhu.eu/iate/translate?term=data%20protection&source=en&target=fi" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"term": "data protection",
"source": "en",
"target": "fi",
"translations": [
{
"id": 12345,
"term": "tietosuoja",
"definition": "Protection of personal data from unauthorised processing",
"domain": "1011",
"reliability": 4,
"language": "fi",
"source": "IATE-1234567"
}
],
"all_languages": {
"de": [{ "term": "Datenschutz", "reliability": 4 }],
"fr": [{ "term": "protection des donn\u00e9es", "reliability": 4 }],
"es": [{ "term": "protecci\u00f3n de datos", "reliability": 4 }],
"fi": [{ "term": "tietosuoja", "reliability": 4 }],
"sv": [{ "term": "dataskydd", "reliability": 4 }]
}
}
The all_languages field returns translations in all available languages for the concept. Use this for multilingual terminology alignment.
GET/iate/export
Bulk export of terminology in industry-standard formats. Compatible with SDL Trados, memoQ, Phrase, and other CAT tools.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
format | string | Yes | — | tbx (TermBase eXchange, ISO 30042) or tmx (Translation Memory eXchange) |
domain | string | No | all | EuroVoc domain code to filter export |
lang | string | No | en | Language code (for TBX) or source language (for TMX) |
target | string | TMX only | — | Target language (required for TMX format) |
limit | integer | No | 100 | Terms per export (max 1,000) |
offset | integer | No | 0 | Pagination offset for large exports |
Example: TBX export
curl "https://staging.pauhu.eu/iate/export?format=tbx&domain=1236&lang=en&limit=500" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o legal-terminology.tbx
Returns application/x-tbx+xml with a Content-Disposition header for download.
Example: TMX export
curl "https://staging.pauhu.eu/iate/export?format=tmx&domain=1236&lang=en&target=fi&limit=500" \
-H "Authorization: Bearer YOUR_API_KEY" \
-o legal-en-fi.tmx
Returns application/x-tmx+xml. Each entry contains a source term and its translation, linked by IATE concept IDs. Import directly into your translation management system.
GET/iate/stats
Aggregated statistics about the terminology database.
Example
curl "https://staging.pauhu.eu/iate/stats" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"total": 2456445,
"languages": 24,
"byLanguage": [
{ "lang": "en", "count": 245000 },
{ "lang": "fi", "count": 198000 },
{ "lang": "de", "count": 231000 },
{ "lang": "fr", "count": 228000 }
],
"source": "IATE",
"reliability": "4-star (Very reliable)"
}
GET/iate/quality
Quality dashboard: reliability distribution, language coverage, domain heatmap, and embedding density.
Example
curl "https://staging.pauhu.eu/iate/quality" \
-H "Authorization: Bearer YOUR_API_KEY"
Response (abbreviated)
{
"dashboard": "IATE Quality",
"totals": {
"all_terms": 2456445,
"four_star_terms": 2456445,
"languages": 24
},
"reliability_distribution": [
{ "level": "Very reliable", "count": 2456445, "pct": 100 }
],
"language_coverage": [
{ "language": "en", "reliable": 245000, "total": 245000, "pct": 100 },
{ "language": "fi", "reliable": 198000, "total": 198000, "pct": 100 }
],
"top_domains": [
{ "domain": "law", "term_count": 312000 },
{ "domain": "economics", "term_count": 289000 },
{ "domain": "environment", "term_count": 187000 }
]
}
POST/iate/tenant/upload
Upload a custom glossary. Your terms take priority over IATE entries in merged lookups. Supports CSV and TBX formats.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
tenant_id | string | Yes | Your organisation identifier |
name | string | Yes | Glossary name |
source_lang | string | Yes | Source language code |
target_lang | string | Yes | Target language code |
domain | string | No | Domain (e.g. law, medicine) |
register | string | No | Register level (formal, neutral) |
format | string | Yes | csv or tbx |
content | string | Yes | CSV or TBX content |
CSV Format
source_term,target_term,domain,register,notes
contract,sopimus,law,formal,
liability,vastuu,law,formal,
Supported delimiters: comma, semicolon, tab, pipe.
Example
curl -X POST "https://staging.pauhu.eu/iate/tenant/upload" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tenant_id": "acme-corp",
"name": "ACME Legal Glossary",
"source_lang": "en",
"target_lang": "fi",
"domain": "law",
"format": "csv",
"content": "contract,sopimus\nliability,vastuu"
}'
Response
{
"glossary_id": "abc123",
"tenant_id": "acme-corp",
"name": "ACME Legal Glossary",
"term_count": 2,
"inserted": 2,
"created_at": "2026-03-02T12:00:00Z"
}
GET/iate/tenant/lookup
Merged lookup across your custom glossary and IATE. Your terms take priority.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
tenant_id | string | Yes | Your organisation identifier |
source_lang | string | Yes | Source language |
target_lang | string | Yes | Target language |
terms | string | Yes | Comma-separated terms |
Example
curl "https://staging.pauhu.eu/iate/tenant/lookup?tenant_id=acme-corp&source_lang=en&target_lang=fi&terms=contract,liability" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"tenant_id": "acme-corp",
"count": 2,
"results": [
{ "source": "contract", "target": "sopimus", "origin": "tenant", "domain": "law" },
{ "source": "liability", "target": "vastuu", "origin": "tenant", "domain": "law" }
]
}
GET/iate/tenant/list
List all glossaries for your organisation.
Example
curl "https://staging.pauhu.eu/iate/tenant/list?tenant_id=acme-corp" \
-H "Authorization: Bearer YOUR_API_KEY"
DELETE/iate/tenant/glossary
Remove a glossary and all its terms.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
glossary_id | string | Yes | Glossary ID to delete |
tenant_id | string | Yes | Organisation identifier (for verification) |
Example
curl -X DELETE "https://staging.pauhu.eu/iate/tenant/glossary?glossary_id=abc123&tenant_id=acme-corp" \
-H "Authorization: Bearer YOUR_API_KEY"
Term Structure
Every term returned by the IATE API has the following fields:
| Field | Type | Description |
|---|---|---|
id | integer | Internal term identifier |
term | string | The term text in the requested language |
definition | string | Term definition (may be null for some entries) |
context | string | Usage context, typically a legal reference |
domain | string | EuroVoc domain code (e.g. 1236 for law, 1011 for information technology) |
reliability | integer | Reliability score (1–4). See reliability scale |
language | string | ISO 639-1 language code of this term |
source | string | IATE entry ID (format: IATE-{entry_id}) |
Reliability Scale
IATE assigns a reliability score to each term, reflecting the quality and verification status of the terminology entry:
| Score | Level | Description |
|---|---|---|
1 | Unverified | Term has not been verified by a terminologist. Use with caution. |
2 | Minimum reliability | Term has been checked but may have limited source evidence. |
3 | Reliable | Term is validated by institutional sources and widely accepted. |
4 | Very reliable | Term is authoritative, verified by multiple institutional sources. Preferred for official documents. |
Filter by reliability in your application logic. For official translations and legal documents, prefer terms with reliability 3 or 4.
Supported Languages (24)
| Code | Language | Code | Language |
|---|---|---|---|
bg | Bulgarian | lt | Lithuanian |
cs | Czech | lv | Latvian |
da | Danish | mt | Maltese |
de | German | nl | Dutch |
el | Greek | pl | Polish |
en | English | pt | Portuguese |
es | Spanish | ro | Romanian |
et | Estonian | sk | Slovak |
fi | Finnish | sl | Slovenian |
fr | French | sv | Swedish |
ga | Irish | hr | Croatian |
hu | Hungarian | it | Italian |
Error Codes
| Status | Meaning |
|---|---|
400 | Missing or invalid parameter (see error message for details) |
401 | Missing or invalid API key |
429 | Rate limit exceeded. Retry after the Retry-After header value. |
500 | Internal error. Retry with exponential backoff. |
Confidence Scores (Semantic Search)
Semantic search results include a score field (0.0–1.0, cosine similarity):
- 0.9+ — Near-exact semantic match
- 0.8–0.9 — Strong relevance
- 0.6–0.8 — Related concept
- Below 0.6 — Weak match, review manually
Data Residency
All terminology data is stored and processed within the EU. No data leaves EU jurisdiction at any point in the pipeline.
Data Source Attribution
Terminology data is sourced from IATE — Interactive Terminology for Europe, the EU’s inter-institutional terminology database managed by the Translation Centre for the Bodies of the European Union. IATE data is used under the applicable EU open data reuse terms.