โ† Back to API ReferenceEndpoint

Sentences Endpoints

Access 2,300 German-English sentence pairs with CEFR level tagging, grammar features, and topics.

GET/sentences

Get example sentences with optional CEFR level filtering and pagination.

Authentication

X-API-Key: demo-key-12345

Parameters

ParameterTypeRequiredDescription
levelstringOptionalFilter by CEFR level: A1, A2, B1, B2, C1
limitintegerOptionalMax results (1-200). Default: 50
offsetintegerOptionalSkip N results for pagination. Default: 0

Sentences by CEFR Level

A1
282
14.1%
A2
702
35.1%
B1
586
29.3%
B2
402
20.1%
C1
26
1.3%

Request Examples

Get All Sentences

curl -X GET "https://german-language.onrender.com/sentences?limit=10" \
  -H "X-API-Key: demo-key-12345"

Filter by CEFR Level

# Get A1 sentences (beginner)
curl -X GET "https://german-language.onrender.com/sentences?level=A1&limit=10" \
  -H "X-API-Key: demo-key-12345"

# Get B2 sentences (upper-intermediate)
curl -X GET "https://german-language.onrender.com/sentences?level=B2&limit=10" \
  -H "X-API-Key: demo-key-12345"

Response

200 OK
{
  "level_filter": "A1",
  "total": 282,
  "returned": 10,
  "offset": 0,
  "data": [
    {
      "id": 1,
      "sentence_de": "Nein, ich weiรŸ es nicht.",
      "sentence_en": "No, I don't know.",
      "cefr_level": "A1",
      "cefr_scores": {
        "vocabulary": 1.0,
        "grammar": 1.0,
        "complexity": 1.8
      },
      "word_count": 5,
      "clause_count": 2,
      "grammar_features": ["negation_nicht", "personal_pronoun"],
      "topic": "general",
      "register": "neutral",
      "source": "tatoeba",
      "license_tag": "CC-BY-2.0-FR"
    },
    {
      "id": 45,
      "sentence_de": "Das Haus ist groรŸ.",
      "sentence_en": "The house is big.",
      "cefr_level": "A1",
      "word_count": 4,
      "clause_count": 1,
      "grammar_features": ["definite_article"],
      "topic": "housing"
    }
    // ... more entries
  ]
}

Response Schema

Sentence Object

FieldTypeDescription
idintegerUnique sentence identifier
sentence_destringGerman sentence
sentence_enstringEnglish translation
cefr_levelstringCEFR level: A1, A2, B1, B2, C1
cefr_scoresobjectBreakdown: vocabulary, grammar, complexity scores
word_countintegerNumber of words in the German sentence
clause_countintegerNumber of clauses
grammar_featuresarrayDetected grammar features
topicstringTopic category (e.g., "daily_life", "travel")
registerstringFormality: "formal", "neutral", "informal"

Available Topics

communication
daily_life
education
time
travel
nature
culture
family
work
shopping
emotions
hobbies
health
food_drink
general
housing
GET/sentences/random

Get random sentences for practice and quizzes. Great for flashcards and translation exercises.

Parameters

ParameterTypeRequiredDescription
levelstringOptionalFilter by CEFR level: A1, A2, B1, B2, C1
countintegerOptionalNumber of random sentences (1-50). Default: 10

Request Examples

cURL
# Get 5 random sentences from any level
curl -X GET "https://german-language.onrender.com/sentences/random?count=5" \
  -H "X-API-Key: demo-key-12345"

# Get 10 random A1 sentences for beginners
curl -X GET "https://german-language.onrender.com/sentences/random?level=A1&count=10" \
  -H "X-API-Key: demo-key-12345"

Response

200 OK
{
  "level_filter": "A1",
  "count": 5,
  "data": [
    {
      "id": 234,
      "sentence_de": "Ich trinke Wasser.",
      "sentence_en": "I drink water.",
      "cefr_level": "A1",
      "word_count": 3,
      "grammar_features": ["personal_pronoun"],
      "topic": "food_drink"
    },
    {
      "id": 89,
      "sentence_de": "Wie heiรŸen Sie?",
      "sentence_en": "What is your name?",
      "cefr_level": "A1",
      "word_count": 3,
      "grammar_features": ["question", "formal_Sie"],
      "topic": "communication"
    }
    // ... 3 more random sentences
  ]
}

Use Cases

๐ŸŽฏ Translation Quizzes

Show German sentence, ask user for English translation. Compare with sentence_en.

๐Ÿ“ Fill-in-the-Blank

Remove a word from sentence_de and create cloze exercises.

๐Ÿ”Š Reading Practice

Display sentences by difficulty level for graded reading practice.

๐Ÿ“Š Grammar Focus

Filter by grammar_features to target specific structures.

Error Responses

400 Bad Request
{
  "detail": "Invalid level: X5"
}
401 Unauthorized
{
  "detail": "Invalid API key. Get a key at /register (coming soon)"
}

Try It Out

Test these endpoints in the API Playground.