Open vocabulary data and API for language learning applications
https://vocab.papertek.no/api/vocab
Returns all available languages, translation pairs, dictionary info, and endpoint URLs. Start here to discover the API.
/api/vocab/v1/manifestReturns all vocabulary banks for a language, including words, conjugations, declensions, and audio references.
| Parameter | Type | Description |
|---|---|---|
language |
path | Language code or name: de, german, es, spanish, fr, french |
bank |
query | Return a single bank: verbbank, nounbank, adjectivebank, articlesbank, generalbank, numbersbank, phrasesbank, pronounsbank |
Returns translations, synonyms, examples, and explanations for a language pair.
| Parameter | Type | Description |
|---|---|---|
pair |
path | Translation pair: de-en, de-nb, es-en, es-nb, fr-nb |
bank |
query | Return a single bank (e.g. verbbank) |
Returns grammar features for progressive disclosure in learning apps. Use this to build settings UIs where users select which grammar concepts they've learned.
| Parameter | Type | Description |
|---|---|---|
language |
query | Filter to one language: de, es, fr. Omit for all languages. |
Returns all available curriculum manifests. Each curriculum maps lessons to vocabulary word IDs and grammar features.
/api/vocab/v1/curriculaReturns the full lesson manifest for a curriculum. Each lesson contains word IDs and grammar feature IDs introduced in that lesson.
| Parameter | Type | Description |
|---|---|---|
curriculumId |
path | tysk1-vg1, tysk1-vg2, tysk2-vg1, tysk2-vg2, us-8, us-9, us-10, spansk1-vg1 |
{
"lessons": {
"1.1": {
"words": ["und_conj", "aus_prep", "hallo_interj", ...],
"features": ["grammar_present", "grammar_pronouns_ich_du"]
},
"1.2": { "words": [...], "features": [...] },
...
}
}
/api/vocab/v1/curricula/tysk1-vg1Search across all vocabulary with ranked results. Matches on both the original word and translations. Results are ranked by match type (prefix > contains) and word frequency.
| Parameter | Type | Description |
|---|---|---|
language |
path | Language code: de, es, fr |
q |
query | Search query (min 2 characters) |
lang |
query | Translation language: nb (default), en |
limit |
query | Max results, 1–50 (default: 10) |
type |
query | Filter by word type: verb, noun, adjective, etc. |
cefr |
query | Filter by CEFR level: A1, A2, B1 (comma-separated) |
source |
query | all (default), curriculum, dictionary |
Returns full detail for a single word: translations, conjugations, declensions, cases, audio, CEFR level, frequency, grammar features, and more.
| Parameter | Type | Description |
|---|---|---|
language |
path | Language code: de, es, fr |
wordId |
path | Word identifier (e.g. haus_noun, sein_verb) |
lang |
query | Translation language: nb (default), en |
{
"word": "Haus",
"type": "noun",
"genus": "n",
"plural": "Häuser",
"audio": "substantiv_haus.mp3",
"translation": "hus",
"cefr": "A1",
"frequency": 156,
"curriculum": true,
"cases": {
"akkusativ": { "bestemt": "das Haus", "ubestemt": "ein Haus" },
"dativ": { "bestemt": "dem Haus", "ubestemt": "einem Haus" }
},
"grammarFeatures": ["grammar_articles", "grammar_plural", "grammar_accusative_definite", "grammar_dative"]
}
/api/vocab/v2/lookup/de/haus_nounAccess-Control-Allow-Origin: * — you can call the API directly from any browser application.
Responses are cached with Cache-Control: public, max-age=3600, s-maxage=86400 — 1 hour in the browser, 24 hours on the CDN. Vocabulary data changes infrequently, so aggressive caching is safe.
// Fetch German core vocabulary const res = await fetch('https://vocab.papertek.no/api/vocab/v1/core/de'); const data = await res.json(); // Search for a word const search = await fetch('https://vocab.papertek.no/api/vocab/v2/search/de?q=haus'); const results = await search.json(); // Look up a specific word with full detail const word = await fetch('https://vocab.papertek.no/api/vocab/v2/lookup/de/haus_noun'); const detail = await word.json();