Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Buat Aplikasi web
Bahasa: Bahasa Indonesia

Buat daftar kosakata

Versi API 2026-10-affable-towhee

post https://api.getlingara.com/v1/vocab/stream

Mengalirkan daftar kata pada tingkat yang diminta. Stream mengirim started dengan detail daftar, satu peristiwa item per kata, lalu done. Sampai daftar siap, hanya komentar keepalive yang dikirim.

Cakupan vocab:generate

Parameter

Lingara-Versionheaderstringopsional
Versi API yang digunakan untuk menjawab permintaan ini. Tanpanya, token akses mendapatkan versi yang disematkan pada kliennya, dan permintaan tanpa token mendapatkan versi saat ini. Versi yang masih dalam pengembangan hanya dapat dicapai dengan menyebutkannya di sini. Versi yang tidak dikenal dijawab 400 dengan kode api_version_unknown. GET /v1/versions mencantumkan versi-versinya.

Isi permintaan application/json

levelintegerwajib
source_langstringwajib
target_langstringwajib
countinteger | nullopsional

Respons

200 Daftar, satu kata per peristiwa

Peristiwa stream text/event-stream

Mengirim komentar keepalive setiap 15 detik.

started VocabStarted
metaVocabMetawajib
levelintegerwajib
source_langstringwajib
target_langstringwajib
frameworkstringwajib
countintegerwajib
ai_generatedbooleanwajib
item VocabItem
wordstringwajib
pronunciationstring | nullopsional
readingstring | nullopsional
translationstringwajib
exampleVocabExample | nullopsional
sentencestringwajib
translationstringwajib
image_urlstring | nullopsional
done Done Mengakhiri stream
error StreamError Mengakhiri stream

Tiba di dalam respons 200. Baris status sudah dikirim, sehingga kegagalan setelah stream dibuka dilaporkan sebagai event ini.

codestringwajib
messagestringwajib
plan_idstring | nullopsional

Galat

402application/json
Panggilan klien dengan penagihan per pemakaian ditolak sebelum menghabiskan apa pun. spend_cap_reached: klien atau akunnya telah mencapai batas pengeluaran bulanannya; naikkan batasnya di halaman Integrasi. metered_billing_inactive: penagihan per pemakaian tidak aktif untuk akun ini; siapkan, atau perbarui metode pembayarannya, di halaman Integrasi.
410application/json
Versi API yang digunakan untuk menjawab permintaan ini telah dihentikan. Kirim versi yang didukung di Lingara-Version, atau sematkan klien ke versi lain.
4XXapplication/json
Permintaan ditolak. code menyebutkan alasannya, dan error menjelaskannya dengan kata-kata.
503application/json · text/plain
Layanan sementara tidak tersedia; coba lagi setelah jumlah detik di Retry-After. Selama pemeliharaan, isi respons berupa teks biasa, bukan amplop galat.
5XXapplication/json
Permintaan ditolak. code menyebutkan alasannya, dan error menjelaskannya dengan kata-kata.
codestringwajib

Alasan permintaan ditolak, sebagai kode tetap untuk percabangan: misalnya insufficient_scope (403), rate_limited (429) dan, untuk klien dengan penagihan per pemakaian, spend_cap_reached (402) dan metered_billing_inactive (402).

errorstringwajib

Contoh

Bahasa contoh kode

curl

curl -N -X POST "https://api.getlingara.com/v1/vocab/stream" \
  -H "Authorization: Bearer $LINGARA_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"level":2,"source_lang":"en","target_lang":"zh","count":8}'

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

Lebih suka pustaka? Lihat bagian Pustaka.

Contoh stream

event: started
data: {"meta":{"level":2,"source_lang":"en","target_lang":"zh","framework":"HSK","count":2,"ai_generated":true}}

event: item
data: {"word":"你好","pronunciation":"nǐ hǎo","translation":"hello","example":{"sentence":"你好,我叫小明。","translation":"Hello, my name is Xiaoming."}}

event: item
data: {"word":"谢谢","pronunciation":"xiè xie","translation":"thank you"}

event: done
data: {}

Jika terjemahan berbeda dengan referensi berbahasa Inggris, referensi berbahasa Inggris yang berlaku.