{"openapi":"3.1.0","info":{"title":"Duolingo Profile & Streak API","version":"1.0.0","description":"Live public profile and language-learning stats from Duolingo, the world's largest language-learning platform — no key, nothing stored. This is the gamified-learning social view: a learner's XP, daily streak, courses and progress, distinct from every other social platform in the catalogue. The user endpoint returns a profile summary — display name, bio, location, join date, total XP, the current daily streak, the language being learned and the from-language, the current course, Super/Plus status and a course count. The courses endpoint returns the per-language breakdown: every course the learner studies with its title, learning and from languages, XP earned and crown count. The streak endpoint returns the streak detail — the current streak length and, when the learner makes it public, the streak start date and longest streak. Lookup is by username; the official mascot account \"duo\" is always available. Build streak widgets, learning-accountability bots, language-club leaderboards and profile cards on top of real Duolingo data. Private or non-existent usernames return a clean 404.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/duolingo-api","description":"oanor gateway"}],"tags":[{"name":"User"},{"name":"Courses"},{"name":"Streak"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/user":{"get":{"operationId":"get_v1_user","tags":["User"],"summary":"Profile summary — XP, streak, languages","description":"","parameters":[{"name":"username","in":"query","required":true,"description":"Duolingo username","schema":{"type":"string"},"example":"duo"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/courses":{"get":{"operationId":"get_v1_courses","tags":["Courses"],"summary":"Per-language course breakdown","description":"","parameters":[{"name":"username","in":"query","required":true,"description":"Duolingo username","schema":{"type":"string"},"example":"duo"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/streak":{"get":{"operationId":"get_v1_streak","tags":["Streak"],"summary":"Streak detail — length, longest","description":"","parameters":[{"name":"username","in":"query","required":true,"description":"Duolingo username","schema":{"type":"string"},"example":"duo"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK"},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":18000,"rps_limit":3,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":650,"monthly_call_quota":260000,"rps_limit":10,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1890,"monthly_call_quota":1050000,"rps_limit":25,"hard_limit":true},{"slug":"scale","name":"Scale","price_cents_month":4200,"monthly_call_quota":3800000,"rps_limit":55,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/duolingo-api"}