Lingara Lingara 說明文件 學習指南 API 程式庫 App 建立 網頁版
語言: 粵語

生成詞彙表

API 版本 2026-10-affable-towhee

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

用串流方式傳送指定程度嘅詞語清單。串流會先傳送附有清單詳情嘅 started,跟住每個詞傳送一個 item 事件,最後傳送 done。清單未準備好之前,只會傳送保持連線嘅註解。

權限範圍 vocab:generate

參數

Lingara-Versionheaderstring選填
回應呢個請求所用嘅 API 版本。冇呢個嘅話,存取權杖會用佢嘅用戶端綁定嘅版本,冇權杖嘅請求會用而家嘅版本。仲喺開發中嘅版本,只可以喺度指明先用到。唔認得嘅版本會回 400,代碼係 api_version_unknown。GET /v1/versions 會列出所有版本。

請求內容 application/json

levelinteger必填
source_langstring必填
target_langstring必填
countinteger | null選填

回應

200 詞彙表,每個事件一個詞

串流事件 text/event-stream

每 15 秒送出一條 keepalive 註解。

started VocabStarted
metaVocabMeta必填
levelinteger必填
source_langstring必填
target_langstring必填
frameworkstring必填
countinteger必填
ai_generatedboolean必填
item VocabItem
wordstring必填
pronunciationstring | null選填
readingstring | null選填
translationstring必填
exampleVocabExample | null選填
sentencestring必填
translationstring必填
image_urlstring | null選填
done Done 結束串流
error StreamError 結束串流

喺 200 回應入面到達。狀態行已經送出,所以串流開咗之後嘅失敗會以呢個事件報告。

codestring必填
messagestring必填
plan_idstring | null選填

錯誤

402application/json
一個按用量收費嘅用戶端嘅呼叫,喺佢用任何嘢之前已經被拒絕。spend_cap_reached:用戶端或者佢嘅帳戶已經到咗每月嘅支出上限;請喺整合頁面調高上限。metered_billing_inactive:呢個帳戶嘅按用量收費未啟用;請喺整合頁面設定,或者更新付款方式。
410application/json
回應呢個請求所用嘅 API 版本已經停用。請喺 Lingara-Version 傳一個有支援嘅版本,或者將用戶端綁去另一個版本。
4XXapplication/json
請求被拒絕。code 講出原因,error 用文字解釋。
503application/json · text/plain
服務暫時用唔到;請等 Retry-After 入面嘅秒數之後再試。維護期間,回應內容係純文字,而唔係錯誤封包。
5XXapplication/json
請求被拒絕。code 講出原因,error 用文字解釋。
codestring必填

請求被拒絕嘅原因,係一個穩定嘅代碼,可以用嚟做分支處理:例如 insufficient_scope(403)、rate_limited(429),對按用量收費嘅用戶端仲有 spend_cap_reached(402)同 metered_billing_inactive(402)。

errorstring必填

例子

程式碼例子嘅語言

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

想用程式庫?睇吓程式庫部分。

串流例子

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: {}

如果譯本同英文參考文件有出入,以英文參考文件為準。