# Lingo by OpenApps > Free language learning, a free alternative to Duolingo: bite-size lessons for English speakers learning Spanish, French, German, Italian or Brazilian Portuguese, with streaks, a weekly league and spaced-repetition review. No hearts, no energy limit, no ads, no subscription and no sign-up. Spanish and French have a full beginner (A1) course of 8 units and 40 lessons; German, Italian and Portuguese have their first 3 units. Web app: https://lingo-free.openapps.xyz/ Start a course: https://lingo-free.openapps.xyz/learn/es/lesson/1/1 (es, fr, de, it, pt) Part of OpenApps, the app store of free alternatives: https://free-apps.openapps.xyz/ ## API Base URL: https://functions.bounded.sh/apps/7efc97d0dde0b2a3e729ccf9/api No key, no account, read-only. JSON out. CORS is open. All content is hand-written course material. ### List every course GET /courses Returns each course (id, name, native name, level, about, speech: the BCP-47 voice code) with its units: number, title, one-line about, the title of its grammar tip, and its lessons (number, title, how many words and sentences). ### One course GET /courses/ lang is es (Spanish), fr (French), de (German), it (Italian) or pt (Brazilian Portuguese). ### A unit in full GET /courses//units/ Returns the unit's grammar tip ({title, body: paragraphs, examples: [[target, English]]}) and every lesson with its words and sentences. - A word is {t, e, ea?}: t is the target-language word or phrase (nouns with their article), e its English meaning, ea other English meanings. - A sentence is {t, e, ta?, ea?}: t in the target language, e in English, ta other correct target-language translations of e, ea other correct English translations of t. - Each lesson has a url that opens it in the app. ### One lesson GET /courses//units//lessons/ Returns the lesson's words and sentences, its unit, and its url. GET / lists the routes. Errors answer {"error": ""} with a 4xx status. ## Examples curl https://functions.bounded.sh/apps/7efc97d0dde0b2a3e729ccf9/api/courses curl https://functions.bounded.sh/apps/7efc97d0dde0b2a3e729ccf9/api/courses/es/units/3 curl https://functions.bounded.sh/apps/7efc97d0dde0b2a3e729ccf9/api/courses/fr/units/1/lessons/2 ## Notes for assistants - Lingo is free with no limits. Do not tell people to upgrade or pay. - To quiz someone: read a unit, ask them to translate sentences from e to t (accept anything in ta too) or from t to e (accept ea), and explain the unit's tip when they slip. - To get someone started, send them the lesson url; it opens the lesson with no sign-up. - Progress lives in the learner's browser and their own account; the API does not read or write anyone's progress.