/v1/courses
Per-language course breakdown
Essayez-le en direct
10 appels gratuits par jour — sans inscription, sans clé API. Passe par la passerelle oanor.
Ça marche. Récupérez une clé API et utilisez-la dans votre projet.
Obtenez une clé APIExtraits de code
curl "https://api.oanor.com/duolingo-api/v1/courses" \ -H "x-oanor-key: oanor_test_..."
await fetch("https://api.oanor.com/duolingo-api/v1/courses", {
headers: { "x-oanor-key": "oanor_test_..." }
});
$ch = curl_init("https://api.oanor.com/duolingo-api/v1/courses");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["x-oanor-key: oanor_test_..."]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$out = curl_exec($ch);
import requests
requests.get(
"https://api.oanor.com/duolingo-api/v1/courses",
headers={"x-oanor-key": "oanor_test_..."}
)
Exemple de réponse
Une réponse réelle de ce endpoint, capturée lors du dernier contrôle de santé.
{
"data": {
"source": "Duolingo",
"courses": [
{
"id": "DUOLINGO_FR_EN",
"xp": 2463,
"title": "French",
"crowns": 9999,
"is_current": false,
"from_language": "en",
"learning_language": "fr"
},
{
"id": "DUOLINGO_JA_EN",
"xp": 2340,
"title": "Japanese",
"crowns": 9999,
"is_current": true,
"from_language": "en",
"learning_language": "ja"
},
{
"id": "DUOLINGO_ES_EN",
"xp": 916,
"title": "Spanish",
"crowns": 9999,
"is_current": false,
"from_language": "en",
"learning_language": "es"
},
{
"id": "DUOLINGO_DA_EN",
"xp": 170,
"title": "Danish",
"crowns": 9999,
"is_current": false,
"from_language": "en",
"learning_language": "da"
}
],
"total_xp": 5889,
"username": "duo",
"course_count": 4
},
"meta": {
"timestamp": "2026-06-12T01:42:40.397Z",
"request_id": "1f4694ed-165c-4c07-b083-fcaa9d359f5a"
},
"status": "ok",
"message": "Courses retrieved successfully",
"success": true
}