Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Programu ya wavuti
Lugha: Kiswahili

Unganisha tena na mpango wa somo

Toleo la API 2026-10-affable-towhee

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

Hujiunga tena na mtiririko wa maendeleo wa mpango ambao bado unatengenezwa. Mpango uliokamilika hujibu kwa result moja. Mpango ambao bado unatengenezwa bila mtiririko hai wa kujiunga nao hujibu kwa pending moja; uliza GET /v1/lesson-plans/{id} mara kwa mara hadi ukamilike.

Wigo lesson_plans:read

Vigezo

Lingara-Versionheaderstringsi lazima
Toleo la API la kutumia kujibu ombi hili. Bila hilo, tokeni ya ufikiaji hupata toleo ambalo mteja wake ameunganishwa nalo, na ombi lisilo na tokeni hupata toleo la sasa. Toleo ambalo bado linaendelezwa linafikiwa tu kwa kulitaja hapa. Toleo lisilojulikana hujibiwa 400 pamoja na msimbo api_version_unknown. GET /v1/versions huorodhesha matoleo.
idpathstringinahitajika

Majibu

200 Maendeleo yaliyobaki ya mpango, kisha mpango wenyewe

Matukio ya mtiririko text/event-stream

Hutuma maoni ya keepalive kila sekunde 15.

started PlanStarted
plan_idstringinahitajika
phase PlanPhase
phasestringinahitajika
attemptintegerinahitajika
result PlanResult Humaliza mtiririko
planLessonPlaninahitajika
idstringinahitajika
statusPlanStatusinahitajika
titlestring | nullsi lazima
source_langstringinahitajika
target_langstringinahitajika
levelintegerinahitajika
created_atstringinahitajika
completed_atstring | nullsi lazima
ai_generatedbooleaninahitajika
contentLessonPlanContent | nullsi lazima
introductionstring | nullsi lazima
learning_objectivesarray of stringinahitajika
vocabularyarray of PlanWordinahitajika
wordstringinahitajika
pronunciationstring | nullsi lazima
translationstringinahitajika
setsarray of PlanSetinahitajika
numberintegerinahitajika
contextstring | nullsi lazima
questionsarray of PlanQuestioninahitajika
typestringinahitajika
promptstringinahitajika
optionsarray of string | nullsi lazima
answerstringinahitajika
explanationstringinahitajika
hintstring | nullsi lazima
pending PlanPending Humaliza mtiririko
plan_idstringinahitajika
statusPlanStatusinahitajika
error StreamError Humaliza mtiririko

Hufika ndani ya jibu la 200. Mstari wa hali umeshatumwa, kwa hivyo hitilafu baada ya mtiririko kufunguka huripotiwa kama tukio hili.

codestringinahitajika
messagestringinahitajika
plan_idstring | nullsi lazima

Hitilafu

410application/json
Toleo la API linalotumika kujibu ombi hili limesitishwa. Tuma toleo linalotumika katika Lingara-Version, au unganisha mteja na toleo lingine.
4XXapplication/json
Ombi limekataliwa. code inaeleza sababu, na error inaieleza kwa maneno.
503application/json · text/plain
Huduma haipatikani kwa muda; jaribu tena baada ya idadi ya sekunde zilizo katika Retry-After. Wakati wa matengenezo, mwili wa jibu ni maandishi ya kawaida badala ya bahasha ya hitilafu.
5XXapplication/json
Ombi limekataliwa. code inaeleza sababu, na error inaieleza kwa maneno.
codestringinahitajika

Sababu ya ombi kukataliwa, kama msimbo thabiti wa kufanyia maamuzi: kwa mfano insufficient_scope (403), rate_limited (429) na, kwa mteja anayetozwa kwa matumizi, spend_cap_reached (402) na metered_billing_inactive (402).

errorstringinahitajika

Mfano

Lugha ya mfano wa msimbo

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

Unapendelea maktaba? Tazama sehemu ya Maktaba.

Mfano wa mtiririko

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

Ikiwa tafsiri na marejeleo ya Kiingereza yanatofautiana, marejeleo ya Kiingereza ndiyo sahihi.