Lingara Lingara Ohjeet Oppaat API Kirjastot Sovellukset Rakenna Verkkosovellus
Kieli: Suomi

Yhdistä uudelleen tuntisuunnitelmaan

API-versio 2026-10-affable-towhee

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

Liittyy uudelleen vielä luotavan suunnitelman edistymisvirtaan. Valmis suunnitelma vastaa yhdellä result-tapahtumalla. Vielä luotava suunnitelma, jolla ei ole aktiivista virtaa liityttäväksi, vastaa yhdellä pending-tapahtumalla; kysele osoitetta GET /v1/lesson-plans/{id} säännöllisesti, kunnes se on valmis.

Oikeuslaajuudet lesson_plans:read

Parametrit

Lingara-Versionheaderstringvalinnainen
API-versio, jolla tähän pyyntöön vastataan. Ilman sitä käyttötunnus saa version, johon sen asiakas on kiinnitetty, ja pyyntö ilman tunnusta saa nykyisen version. Vielä kehitteillä olevaan versioon pääsee vain nimeämällä sen tässä. Tuntemattomaan versioon vastataan 400 koodilla api_version_unknown. GET /v1/versions luettelee versiot.
idpathstringpakollinen

Vastaukset

200 Suunnitelman jäljellä oleva edistyminen, sitten suunnitelma

Virran tapahtumat text/event-stream

Lähettää keepalive-kommentin 15 sekunnin välein.

started PlanStarted
plan_idstringpakollinen
phase PlanPhase
phasestringpakollinen
attemptintegerpakollinen
result PlanResult Päättää virran
planLessonPlanpakollinen
idstringpakollinen
statusPlanStatuspakollinen
titlestring | nullvalinnainen
source_langstringpakollinen
target_langstringpakollinen
levelintegerpakollinen
created_atstringpakollinen
completed_atstring | nullvalinnainen
ai_generatedbooleanpakollinen
contentLessonPlanContent | nullvalinnainen
introductionstring | nullvalinnainen
learning_objectivesarray of stringpakollinen
vocabularyarray of PlanWordpakollinen
wordstringpakollinen
pronunciationstring | nullvalinnainen
translationstringpakollinen
setsarray of PlanSetpakollinen
numberintegerpakollinen
contextstring | nullvalinnainen
questionsarray of PlanQuestionpakollinen
typestringpakollinen
promptstringpakollinen
optionsarray of string | nullvalinnainen
answerstringpakollinen
explanationstringpakollinen
hintstring | nullvalinnainen
pending PlanPending Päättää virran
plan_idstringpakollinen
statusPlanStatuspakollinen
error StreamError Päättää virran

Saapuu 200-vastauksen sisällä. Tilarivi on jo lähetetty, joten virran avaamisen jälkeinen virhe ilmoitetaan tänä tapahtumana.

codestringpakollinen
messagestringpakollinen
plan_idstring | nullvalinnainen

Virheet

410application/json
API-versio, jolla tähän pyyntöön vastataan, on lopetettu. Lähetä tuettu versio Lingara-Version-otsakkeessa tai kiinnitä asiakas toiseen versioon.
4XXapplication/json
Pyyntö hylättiin. code kertoo syyn, ja error kertoo sen sanoin.
503application/json · text/plain
Palvelu ei ole tilapäisesti käytettävissä; yritä uudelleen Retry-After-otsakkeen ilmoittaman sekuntimäärän jälkeen. Huoltokatkon aikana runko on pelkkää tekstiä virhekehyksen sijaan.
5XXapplication/json
Pyyntö hylättiin. code kertoo syyn, ja error kertoo sen sanoin.
codestringpakollinen

Miksi pyyntö hylättiin, pysyvänä koodina, jonka mukaan voit haarautua: esimerkiksi insufficient_scope (403), rate_limited (429) ja käytön mukaan laskutettavalle asiakkaalle spend_cap_reached (402) ja metered_billing_inactive (402).

errorstringpakollinen

Esimerkki

Koodiesimerkin kieli

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äytätkö mieluummin kirjastoa? Katso Kirjastot-osio.

Esimerkkivirta

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

Jos käännös ja englanninkielinen viite poikkeavat toisistaan, englanninkielinen viite on oikea.