Créer un plan de leçon
Version de l'API 2026-10-affable-towhee
Lance la génération d'un plan de leçon et diffuse sa progression. started identifie le plan dès qu'il existe, afin qu'une connexion interrompue puisse se reconnecter avec GET /v1/lesson-plans/{id}/stream. Le flux se termine par result ou error. Un plan servi depuis la bibliothèque arrive sous la forme d'un unique result.
Portées lesson_plans:write
Paramètres
Lingara-Versionheaderstringfacultatif- La version de l'API sous laquelle traiter cette requête. Sans elle, un jeton d'accès obtient la version à laquelle son client est rattaché, et une requête sans jeton obtient la version actuelle. La version encore en développement ne s'atteint qu'en la nommant ici. Une version inconnue répond
400avec le codeapi_version_unknown.GET /v1/versionsliste les versions.
Corps de la requête application/json
contextstringobligatoiresource_langstringobligatoiretarget_langstringobligatoirelevelintegerobligatoire
Réponses
200 La progression du plan, puis le plan
Événements du flux text/event-stream
Envoie un commentaire keepalive toutes les 15 secondes.
-
startedPlanStarted -
plan_idstringobligatoire
-
phasePlanPhase -
phasestringobligatoireattemptintegerobligatoire
-
resultPlanResult Termine le flux -
planLessonPlanobligatoireidstringobligatoirestatusPlanStatusobligatoiretitlestring | nullfacultatifsource_langstringobligatoiretarget_langstringobligatoirelevelintegerobligatoirecreated_atstringobligatoirecompleted_atstring | nullfacultatifai_generatedbooleanobligatoirecontentLessonPlanContent | nullfacultatifintroductionstring | nullfacultatiflearning_objectivesarray of stringobligatoirevocabularyarray of PlanWordobligatoirewordstringobligatoirepronunciationstring | nullfacultatiftranslationstringobligatoire
setsarray of PlanSetobligatoirenumberintegerobligatoirecontextstring | nullfacultatifquestionsarray of PlanQuestionobligatoiretypestringobligatoirepromptstringobligatoireoptionsarray of string | nullfacultatifanswerstringobligatoireexplanationstringobligatoirehintstring | nullfacultatif
-
errorStreamError Termine le flux -
Arrive dans la réponse 200. La ligne d'état a déjà été envoyée, donc un échec survenu après l'ouverture du flux est signalé par cet événement.
codestringobligatoiremessagestringobligatoireplan_idstring | nullfacultatif
Erreurs
402application/json- L'appel d'un client facturé à l'usage a été refusé avant qu'il ne dépense quoi que ce soit.
spend_cap_reached: le client ou son compte a atteint sa limite de dépenses mensuelle ; relevez la limite sur la page Intégrations.metered_billing_inactive: la facturation à l'usage n'est pas active pour ce compte ; configurez-la ou mettez à jour le moyen de paiement sur la page Intégrations. 410application/json- La version de l'API sous laquelle cette requête est traitée a été retirée. Envoyez une version prise en charge dans
Lingara-Version, ou rattachez le client à une autre version. 4XXapplication/json- La requête a été refusée.
codeindique pourquoi, eterrorl'explique en toutes lettres. 503application/json · text/plain- Le service est temporairement indisponible ; réessayez après le nombre de secondes indiqué dans
Retry-After. Pendant la maintenance, le corps est du texte brut plutôt que l'enveloppe d'erreur. 5XXapplication/json- La requête a été refusée.
codeindique pourquoi, eterrorl'explique en toutes lettres.
codestringobligatoirePourquoi la requête a été refusée, sous forme de code stable sur lequel brancher votre logique : par exemple
insufficient_scope(403),rate_limited(429) et, pour un client facturé à l'usage,spend_cap_reached(402) etmetered_billing_inactive(402).errorstringobligatoire
Exemple
Vous préférez une bibliothèque ? Consultez la section Bibliothèques.
Exemple de flux
event: started
data: {"plan_id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37"}
event: phase
data: {"phase":"selecting_vocabulary","attempt":1}
event: result
data: {"plan":{"id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37","status":"complete","title":"At the night market","source_lang":"en","target_lang":"zh","level":2,"created_at":"2026-09-23T10:00:00Z","completed_at":"2026-09-23T10:00:41Z","ai_generated":true,"content":{"introduction":"Order food and ask prices at a night market.","learning_objectives":["Ask how much something costs"],"vocabulary":[{"word":"多少钱","pronunciation":"duōshao qián","translation":"how much"}],"sets":[{"number":1,"questions":[{"type":"multiple_choice_word","prompt":"Which word asks for a price?","options":["多少钱","谢谢"],"answer":"多少钱","explanation":"多少钱 means how much money."}]}]}}}En cas de divergence entre une traduction et la référence en anglais, la référence en anglais fait foi.