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).

About IATE IATE (Inter-Active Terminology for Europe) is the EU’s inter-institutional terminology database managed by the Translation Centre for the Bodies of the European Union. Pauhu indexes 2,456,445 terms across all 24 EU official languages with semantic search and cross-lingual translation.

GET/iate/lookup

Exact term lookup against the full IATE terminology database. Returns matching entries with definitions, domains, and reliability scores.

Parameters

NameTypeRequiredDefaultDescription
termstringYesThe term to look up (e.g. data protection)
langstringNoenISO 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"
    }
  ]
}

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

NameTypeRequiredDefaultDescription
qstringYesSearch query in natural language
langstringNoenISO 639-1 language code
domainstringNoallEuroVoc domain code (e.g. 1236 for law)
limitintegerNo10Max 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

NameTypeRequiredDefaultDescription
termstringYesThe term to translate
sourcestringNoenSource language code
targetstringYesTarget 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

NameTypeRequiredDefaultDescription
formatstringYestbx (TermBase eXchange, ISO 30042) or tmx (Translation Memory eXchange)
domainstringNoallEuroVoc domain code to filter export
langstringNoenLanguage code (for TBX) or source language (for TMX)
targetstringTMX onlyTarget language (required for TMX format)
limitintegerNo100Terms per export (max 1,000)
offsetintegerNo0Pagination 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

FieldTypeRequiredDescription
tenant_idstringYesYour organisation identifier
namestringYesGlossary name
source_langstringYesSource language code
target_langstringYesTarget language code
domainstringNoDomain (e.g. law, medicine)
registerstringNoRegister level (formal, neutral)
formatstringYescsv or tbx
contentstringYesCSV 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

NameTypeRequiredDescription
tenant_idstringYesYour organisation identifier
source_langstringYesSource language
target_langstringYesTarget language
termsstringYesComma-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

NameTypeRequiredDescription
glossary_idstringYesGlossary ID to delete
tenant_idstringYesOrganisation 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:

FieldTypeDescription
idintegerInternal term identifier
termstringThe term text in the requested language
definitionstringTerm definition (may be null for some entries)
contextstringUsage context, typically a legal reference
domainstringEuroVoc domain code (e.g. 1236 for law, 1011 for information technology)
reliabilityintegerReliability score (1–4). See reliability scale
languagestringISO 639-1 language code of this term
sourcestringIATE 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:

ScoreLevelDescription
1UnverifiedTerm has not been verified by a terminologist. Use with caution.
2Minimum reliabilityTerm has been checked but may have limited source evidence.
3ReliableTerm is validated by institutional sources and widely accepted.
4Very reliableTerm 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)

CodeLanguageCodeLanguage
bgBulgarianltLithuanian
csCzechlvLatvian
daDanishmtMaltese
deGermannlDutch
elGreekplPolish
enEnglishptPortuguese
esSpanishroRomanian
etEstonianskSlovak
fiFinnishslSlovenian
frFrenchsvSwedish
gaIrishhrCroatian
huHungarianitItalian

Error Codes

StatusMeaning
400Missing or invalid parameter (see error message for details)
401Missing or invalid API key
429Rate limit exceeded. Retry after the Retry-After header value.
500Internal error. Retry with exponential backoff.

Confidence Scores (Semantic Search)

Semantic search results include a score field (0.0–1.0, cosine similarity):

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.

All Documentation · Full API Reference · Data Catalog