Papertek Vocabulary API

Open vocabulary data and API for language learning applications

Base URL https://vocab.papertek.no/api/vocab
3
Languages
870+
Core words
3 196
Dictionary (DE)
6 000+
Audio files
5
Translation pairs
8
Curricula

Languages

German (de)

870 core words
3 196 dictionary words
3 567 audio files
CEFR A1–B1 coverage

Spanish (es)

870 core words
993 audio files

French (fr)

870 core words
1 457 audio files

Translation pairs

de-en de-nb es-en es-nb fr-nb

Endpoints

GET /v1/manifest API overview & available data

Returns all available languages, translation pairs, dictionary info, and endpoint URLs. Start here to discover the API.

/api/vocab/v1/manifest
GET /v1/core/{language} Core vocabulary data

Returns all vocabulary banks for a language, including words, conjugations, declensions, and audio references.

ParameterTypeDescription
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
/api/vocab/v1/core/de
/api/vocab/v1/core/de?bank=verbbank
GET /v1/translations/{pair} Translation data

Returns translations, synonyms, examples, and explanations for a language pair.

ParameterTypeDescription
pair path Translation pair: de-en, de-nb, es-en, es-nb, fr-nb
bank query Return a single bank (e.g. verbbank)
/api/vocab/v1/translations/de-en
GET /v1/grammarfeatures Grammar feature metadata

Returns grammar features for progressive disclosure in learning apps. Use this to build settings UIs where users select which grammar concepts they've learned.

ParameterTypeDescription
language query Filter to one language: de, es, fr. Omit for all languages.
/api/vocab/v1/grammarfeatures
/api/vocab/v1/grammarfeatures?language=de
GET /v1/curricula List available curricula

Returns all available curriculum manifests. Each curriculum maps lessons to vocabulary word IDs and grammar features.

/api/vocab/v1/curricula
GET /v1/curricula/{curriculumId} Curriculum lesson manifest

Returns the full lesson manifest for a curriculum. Each lesson contains word IDs and grammar feature IDs introduced in that lesson.

ParameterTypeDescription
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-vg1
/api/vocab/v1/curricula/spansk1-vg1
GET /v2/search/{language} Full-text vocabulary search

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

ParameterTypeDescription
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
/api/vocab/v2/search/de?q=haus
/api/vocab/v2/search/de?q=sein&type=verb
GET /v2/lookup/{language}/{wordId} Detailed word lookup

Returns full detail for a single word: translations, conjugations, declensions, cases, audio, CEFR level, frequency, grammar features, and more.

ParameterTypeDescription
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_noun
/api/vocab/v2/lookup/de/sein_verb

Caching & CORS

All endpoints return Access-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.

Quick start

// 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();