Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Web uygulaması
Dil: Türkçe

Ders planına yeniden bağlan

API sürümü 2026-10-affable-towhee

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

Hâlâ oluşturulmakta olan bir planın ilerleme akışına yeniden katılır. Tamamlanmış bir plan tek bir result ile yanıt verir. Hâlâ oluşturulan ve katılınacak canlı bir akışı olmayan bir plan tek bir pending ile yanıt verir; tamamlanana kadar GET /v1/lesson-plans/{id} adresini yoklayın.

Kapsamlar lesson_plans:read

Parametreler

Lingara-Versionheaderstringisteğe bağlı
Bu isteğin yanıtlanacağı API sürümü. Belirtilmezse bir erişim token'ı istemcisinin bağlı olduğu sürümü, token içermeyen bir istek ise güncel sürümü alır. Hâlâ geliştirilmekte olan sürüme yalnızca burada adı verilerek ulaşılır. Bilinmeyen bir sürüm 400 ve api_version_unknown koduyla yanıtlanır. GET /v1/versions sürümleri listeler.
idpathstringzorunlu

Yanıtlar

200 Planın kalan ilerlemesi, ardından plan

Akış olayları text/event-stream

Her 15 saniyede bir keepalive yorumu gönderir.

started PlanStarted
plan_idstringzorunlu
phase PlanPhase
phasestringzorunlu
attemptintegerzorunlu
result PlanResult Akışı sonlandırır
planLessonPlanzorunlu
idstringzorunlu
statusPlanStatuszorunlu
titlestring | nullisteğe bağlı
source_langstringzorunlu
target_langstringzorunlu
levelintegerzorunlu
created_atstringzorunlu
completed_atstring | nullisteğe bağlı
ai_generatedbooleanzorunlu
contentLessonPlanContent | nullisteğe bağlı
introductionstring | nullisteğe bağlı
learning_objectivesarray of stringzorunlu
vocabularyarray of PlanWordzorunlu
wordstringzorunlu
pronunciationstring | nullisteğe bağlı
translationstringzorunlu
setsarray of PlanSetzorunlu
numberintegerzorunlu
contextstring | nullisteğe bağlı
questionsarray of PlanQuestionzorunlu
typestringzorunlu
promptstringzorunlu
optionsarray of string | nullisteğe bağlı
answerstringzorunlu
explanationstringzorunlu
hintstring | nullisteğe bağlı
pending PlanPending Akışı sonlandırır
plan_idstringzorunlu
statusPlanStatuszorunlu
error StreamError Akışı sonlandırır

200 yanıtının içinde gelir. Durum satırı zaten gönderilmiş olduğundan, akış açıldıktan sonraki bir hata bu olay olarak bildirilir.

codestringzorunlu
messagestringzorunlu
plan_idstring | nullisteğe bağlı

Hatalar

410application/json
Bu isteğin yanıtlandığı API sürümü sonlandırıldı. Lingara-Version içinde desteklenen bir sürüm gönderin veya istemciyi başka bir sürüme bağlayın.
4XXapplication/json
İstek reddedildi. code nedenini belirtir, error ise bunu sözcüklerle açıklar.
503application/json · text/plain
Hizmet geçici olarak kullanılamıyor; Retry-After içindeki saniye sayısı kadar bekledikten sonra yeniden deneyin. Bakım sırasında gövde, hata zarfı yerine düz metindir.
5XXapplication/json
İstek reddedildi. code nedenini belirtir, error ise bunu sözcüklerle açıklar.
codestringzorunlu

İsteğin neden reddedildiği, dallanmak için kullanılabilecek sabit bir kod olarak: örneğin insufficient_scope (403), rate_limited (429) ve kullanım başına ücretlendirilen bir istemci için spend_cap_reached (402) ile metered_billing_inactive (402).

errorstringzorunlu

Örnek

Kod örneğinin dili

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";
    }
}

Kütüphane mi tercih edersiniz? Kütüphaneler bölümüne bakın.

Örnek akış

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

Bir çeviri ile İngilizce referans arasında fark varsa, İngilizce referans geçerlidir.