Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Apl web
Bahasa: Bahasa Melayu

Sambung semula kepada rancangan pelajaran

Versi API 2026-10-affable-towhee

get https://api.getlingara.com/v1/lesson-plans/{id}/stream

Menyertai semula strim kemajuan rancangan yang masih dijana. Rancangan yang telah siap menjawab dengan satu result. Rancangan yang masih dijana tanpa strim langsung untuk disertai menjawab dengan satu pending; tinjau GET /v1/lesson-plans/{id} sehingga ia siap.

Skop lesson_plans:read

Parameter

Lingara-Versionheaderstringpilihan
Versi API yang digunakan untuk menjawab permintaan ini. Tanpanya, token akses mendapat versi yang dipautkan kepada kliennya, dan permintaan tanpa token mendapat versi semasa. Versi yang masih dalam pembangunan hanya boleh dicapai dengan menamakannya di sini. Versi yang tidak dikenali dijawab 400 dengan kod api_version_unknown. GET /v1/versions menyenaraikan versi.
idpathstringwajib

Respons

200 Baki kemajuan rancangan, kemudian rancangan itu

Peristiwa strim text/event-stream

Menghantar komen keepalive setiap 15 saat.

started PlanStarted
plan_idstringwajib
phase PlanPhase
phasestringwajib
attemptintegerwajib
result PlanResult Menamatkan strim
planLessonPlanwajib
idstringwajib
statusPlanStatuswajib
titlestring | nullpilihan
source_langstringwajib
target_langstringwajib
levelintegerwajib
created_atstringwajib
completed_atstring | nullpilihan
ai_generatedbooleanwajib
contentLessonPlanContent | nullpilihan
introductionstring | nullpilihan
learning_objectivesarray of stringwajib
vocabularyarray of PlanWordwajib
wordstringwajib
pronunciationstring | nullpilihan
translationstringwajib
setsarray of PlanSetwajib
numberintegerwajib
contextstring | nullpilihan
questionsarray of PlanQuestionwajib
typestringwajib
promptstringwajib
optionsarray of string | nullpilihan
answerstringwajib
explanationstringwajib
hintstring | nullpilihan
pending PlanPending Menamatkan strim
plan_idstringwajib
statusPlanStatuswajib
error StreamError Menamatkan strim

Tiba di dalam respons 200. Baris status telah pun dihantar, jadi kegagalan selepas strim dibuka dilaporkan sebagai peristiwa ini.

codestringwajib
messagestringwajib
plan_idstring | nullpilihan

Ralat

410application/json
Versi API yang digunakan untuk menjawab permintaan ini telah dihentikan. Hantar versi yang disokong dalam Lingara-Version, atau pautkan klien kepada versi lain.
4XXapplication/json
Permintaan ditolak. code menyatakan sebabnya, dan error menerangkannya dengan perkataan.
503application/json · text/plain
Perkhidmatan tidak tersedia buat sementara waktu; cuba lagi selepas bilangan saat dalam Retry-After. Semasa penyelenggaraan, kandungan ialah teks biasa dan bukan sampul ralat.
5XXapplication/json
Permintaan ditolak. code menyatakan sebabnya, dan error menerangkannya dengan perkataan.
codestringwajib

Sebab permintaan ditolak, sebagai kod stabil untuk dijadikan asas percabangan: contohnya insufficient_scope (403), rate_limited (429) dan, bagi klien bermeter, spend_cap_reached (402) dan metered_billing_inactive (402).

errorstringwajib

Contoh

Bahasa contoh kod

curl

curl -N "https://api.getlingara.com/v1/lesson-plans/$ID/stream" \
  -H "Authorization: Bearer $LINGARA_TOKEN"

TypeScript

for await (const ev of client.streamLessonPlan({ id: planId })) {
  if (ev.event === "result") console.log("ready:", ev.data.plan.title);
  if (ev.event === "pending") console.log("still", ev.data.status, "- try again later");
}

Rust

use lingara::models::StreamLessonPlanEvent;

let mut stream = client.stream_lesson_plan(&plan_id).await?;
while let Some(event) = stream.next().await {
    match event? {
        StreamLessonPlanEvent::Result(result) => println!("ready: {}", result.plan.title.unwrap_or_default()),
        StreamLessonPlanEvent::Pending(pending) => println!("still {:?} - try again later", pending.status),
        _ => {}
    }
}

Go

// Rejoin a plan still generating, with the plan_id from its started event.
s, err := client.StreamLessonPlan(ctx, "3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37")
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	switch e := ev.(type) {
	case lingara.StreamLessonPlanEventResult:
		fmt.Println("ready:", e.Data.Plan.ID)
	case lingara.StreamLessonPlanEventPending:
		fmt.Println("still", e.Data.Status, "- rejoin later")
	}
}

Java

import com.getlingara.client.model.StreamLessonPlanEvent;

try (EventStream<StreamLessonPlanEvent> stream = client.streamLessonPlan(planId)) {
  for (StreamLessonPlanEvent event : stream) {
    if (event instanceof StreamLessonPlanEvent.Result result) {
      System.out.println(result.data().getPlan().getTitle());
    } else if (event instanceof StreamLessonPlanEvent.Pending pending) {
      // Still generating elsewhere: ask again later.
      System.out.println("pending: " + pending.data().getStatus());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.StreamLessonPlanEvent

client.streamLessonPlan(planId).use { stream ->
    stream.collect { event ->
        when (event) {
            is StreamLessonPlanEvent.Result -> println(event.data.plan.title)
            // Still generating elsewhere: ask again later.
            is StreamLessonPlanEvent.Pending -> println("pending: ${event.data.status}")
            else -> Unit
        }
    }
}

Ruby

client.stream_lesson_plan(plan_id) do |event|
  case event
  in Lingara::StreamLessonPlanEventResult => result then puts "ready: #{result.data.plan.title}"
  in Lingara::StreamLessonPlanEventPending => pending then puts "still #{pending.data.status}, try again later"
  else nil
  end
end

PHP

use Lingara\Stream\StreamLessonPlanEvent;

foreach ($client->streamLessonPlan($planId) as $event) {
    if ($event instanceof StreamLessonPlanEvent\Result) {
        echo 'ready: ', $event->data->getPlan()->getTitle(), "\n";
    } elseif ($event instanceof StreamLessonPlanEvent\Pending) {
        echo 'still ', $event->data->getStatus()->value, ", try again later\n";
    }
}

Lebih suka pustaka? Lihat bahagian Pustaka.

Contoh strim

event: pending
data: {"plan_id":"3f1c2a9e-5b7d-4e21-9a0c-6d8e4f2b1a37","status":"generating"}

Jika terjemahan dan rujukan bahasa Inggeris berbeza, rujukan bahasa Inggeris adalah yang betul.