Lingara Lingara 문서 학습 가이드 API 라이브러리 앱 만들기 웹 앱
언어: 한국어

어휘 목록 생성

API 버전 2026-10-affable-towhee

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

요청한 수준의 단어 목록을 스트리밍합니다. 스트림은 목록 정보를 담은 started를 보내고, 단어마다 item 이벤트를 하나씩 보낸 뒤 done을 보냅니다. 목록이 준비될 때까지는 keepalive 주석만 보냅니다.

스코프 vocab:generate

매개변수

Lingara-Versionheaderstring선택
이 요청에 응답할 API 버전입니다. 지정하지 않으면 액세스 토큰은 해당 클라이언트에 고정된 버전을, 토큰이 없는 요청은 현재 버전을 받습니다. 개발 중인 버전은 여기에서 지정해야만 사용할 수 있습니다. 알 수 없는 버전에는 코드 api_version_unknown과 함께 400으로 응답합니다. 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: {}

번역본과 영어 참조 문서의 내용이 다른 경우, 영어 참조 문서가 올바른 것으로 봅니다.