Examples

Code Examples

Ready-to-use code snippets in multiple programming languages.

Python

Basic Setup

Python - requests
import requests

API_BASE = "https://german-language.onrender.com"
API_KEY = "demo-key-12345"

headers = {"X-API-Key": API_KEY}

# Get A1 vocabulary
response = requests.get(
    f"{API_BASE}/vocab",
    headers=headers,
    params={"level": "a1", "limit": 10}
)

data = response.json()
print(f"Found {data['total']} A1 words")

for word in data['data']:
    print(f"{word['german']} ({word['gender']}) - {word['english']}")

Search Vocabulary

Python - Search
# Search for words containing "haus"
response = requests.get(
    f"{API_BASE}/vocab/search",
    headers=headers,
    params={"q": "haus", "limit": 20}
)

results = response.json()
print(f"Found {results['count']} matches for 'haus'")

for word in results['data']:
    print(f"[{word['level']}] {word['german']} - {word['english']}")

Flashcard App Example

Python - Flashcard Generator
import random

def get_flashcards(level: str, count: int = 10):
    """Generate random flashcards for a CEFR level."""
    response = requests.get(
        f"{API_BASE}/vocab",
        headers=headers,
        params={"level": level, "limit": 500}
    )
    
    all_words = response.json()['data']
    selected = random.sample(all_words, min(count, len(all_words)))
    
    flashcards = []
    for word in selected:
        flashcards.append({
            "front": word['german'],
            "back": f"{word['english']} ({word['gender']})",
            "example": word.get('example_de', '')
        })
    
    return flashcards

# Generate 5 A1 flashcards
cards = get_flashcards("a1", 5)
for i, card in enumerate(cards, 1):
    print(f"Card {i}: {card['front']} → {card['back']}")

JavaScript / TypeScript

Fetch API

JavaScript - Fetch
const API_BASE = "https://german-language.onrender.com";
const API_KEY = "demo-key-12345";

async function getVocabulary(level, limit = 10) {
  const params = new URLSearchParams({ level, limit });
  
  const response = await fetch(`${API_BASE}/vocab?${params}`, {
    headers: { "X-API-Key": API_KEY }
  });
  
  if (!response.ok) {
    throw new Error(`API error: ${response.status}`);
  }
  
  return response.json();
}

// Usage
const data = await getVocabulary("a1", 10);
console.log(`Found ${data.total} A1 words`);

data.data.forEach(word => {
  console.log(`${word.german} (${word.gender}) - ${word.english}`);
});

React Hook Example

React - Custom Hook
import { useState, useEffect } from 'react';

const API_BASE = "https://german-language.onrender.com";
const API_KEY = "demo-key-12345";

function useGermanVocab(level, limit = 20) {
  const [data, setData] = useState(null);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    async function fetchVocab() {
      try {
        setLoading(true);
        const params = new URLSearchParams({ level, limit });
        const res = await fetch(`${API_BASE}/vocab?${params}`, {
          headers: { "X-API-Key": API_KEY }
        });
        
        if (!res.ok) throw new Error("Failed to fetch");
        
        const json = await res.json();
        setData(json);
      } catch (err) {
        setError(err.message);
      } finally {
        setLoading(false);
      }
    }

    fetchVocab();
  }, [level, limit]);

  return { data, loading, error };
}

// Usage in component
function VocabList({ level }) {
  const { data, loading, error } = useGermanVocab(level);
  
  if (loading) return <p>Loading...</p>;
  if (error) return <p>Error: {error}</p>;
  
  return (
    <ul>
      {data.data.map((word, i) => (
        <li key={i}>{word.german} - {word.english}</li>
      ))}
    </ul>
  );
}

Node.js with Axios

Node.js - Axios
const axios = require('axios');

const api = axios.create({
  baseURL: 'https://german-language.onrender.com',
  headers: { 'X-API-Key': 'demo-key-12345' }
});

async function getRandomSentences(level, count = 5) {
  const { data } = await api.get('/sentences/random', {
    params: { level, count }
  });
  return data;
}

// Get 5 random A1 sentences
const sentences = await getRandomSentences('A1', 5);
sentences.data.forEach(s => {
  console.log(`DE: ${s.sentence_de}`);
  console.log(`EN: ${s.sentence_en}\n`);
});

cURL

Get Dataset Statistics

cURL
curl -X GET "https://german-language.onrender.com/stats" \
  -H "X-API-Key: demo-key-12345"

Get Vocabulary by Level

cURL
# Get 20 B1 vocabulary words, skip first 10
curl -X GET "https://german-language.onrender.com/vocab?level=b1&limit=20&offset=10" \
  -H "X-API-Key: demo-key-12345"

Search Vocabulary

cURL
# Search for "house" in A1 vocabulary
curl -X GET "https://german-language.onrender.com/vocab/search?q=house&level=a1" \
  -H "X-API-Key: demo-key-12345"

Get Grammar Rules

cURL
# Get grammar rules for "verb" category
curl -X GET "https://german-language.onrender.com/grammar?category=verb&limit=10" \
  -H "X-API-Key: demo-key-12345"

Get Random Sentences

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

Common Use Cases

📱

Flashcard Apps

Use /vocab to get words by level, perfect for spaced repetition systems.

🎮

Language Games

Use /sentences/random for translation quizzes and fill-in-the-blank games.

📚

Study Tools

Use /grammar to build grammar reference guides and study materials.

🔍

Dictionary Apps

Use /vocab/search for instant German-English word lookups.