API 키부터운영 요청까지한 번에.
바로 사용할 수 있는 연동 가이드입니다. 예시는 공통 Base URL을 사용하며 엔드포인트 목록은 저장소의 relay OpenAPI 계약을 따릅니다.
01 / START
빠른 시작
- 콘솔에서 API 키를 만듭니다.
- 공개 모델 카탈로그에서 모델 ID를 복사합니다.
- 키를 서버 측 환경 변수에 저장한 뒤 첫 요청을 보냅니다.
02 / AUTH
인증 및 Base URL
보호된 엔드포인트는 Bearer Token을 사용합니다. API 키를 브라우저 코드, 공개 저장소, 로그 또는 화면 캡처에 넣지 마세요.
Base URL
https://tokenboat.com/v1요청 헤더
Authorization: Bearer $TOKEN_BOAT_API_KEY03 / CALL
세 가지 호출 방법
Curl
export TOKEN_BOAT_API_KEY="your_api_key"
export MODEL_ID="choose_from_the_model_catalog"
curl https://tokenboat.com/v1/chat/completions \
-H "Authorization: Bearer $TOKEN_BOAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$MODEL_ID"'",
"messages": [{"role": "user", "content": "Hello from Token Boat"}]
}'Python
from openai import OpenAI
import os
client = OpenAI(
api_key=os.environ["TOKEN_BOAT_API_KEY"],
base_url="https://tokenboat.com/v1",
)
response = client.chat.completions.create(
model=os.environ["MODEL_ID"],
messages=[{"role": "user", "content": "Hello from Token Boat"}],
)
print(response.choices[0].message.content)JavaScript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.TOKEN_BOAT_API_KEY,
baseURL: "https://tokenboat.com/v1",
});
const response = await client.chat.completions.create({
model: process.env.MODEL_ID,
messages: [{ role: "user", content: "Hello from Token Boat" }],
});
console.log(response.choices[0].message.content);04 / STREAM
스트리밍
스트리밍을 지원하는 모델에는 stream: true를 설정하고 Server-Sent Events를 순차적으로 처리하세요. 연결 중단과 불완전한 마지막 청크를 처리해야 합니다.
const stream = await client.chat.completions.create({
model: process.env.MODEL_ID,
messages: [{ role: "user", content: "Stream a short answer" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}05 / RECOVER
오류 및 재시도
오류 응답에는 HTTP 상태와 메시지가 포함됩니다. 요청 시간, 엔드포인트, 모델 ID와 상태를 기록하되 전체 키나 민감한 프롬프트는 기록하지 마세요.
| Status | 의미 | 조치 |
|---|---|---|
| 400 | 요청 필드 또는 모델 매개변수가 잘못됨 | 요청을 수정한 뒤 재시도 |
| 401 | API 키 누락, 무효 또는 만료 | Authorization 헤더와 키 상태 확인 |
| 403 | 계정 또는 모델 접근 불가 | 계정 권한과 모델 가용성 확인 |
| 429 | 요청 또는 토큰 제한 도달 | Retry-After를 따르고 지터를 포함한 지수 백오프 사용 |
| 5xx | 게이트웨이 또는 상위 서비스 일시 장애 | 안전하게 재전송할 수 있는 요청만 제한적으로 재시도 |
06 / LIMITS
속도 제한
RPM, TPM과 동시 실행 제한은 계정, 모델 및 현재 정책에 따라 달라지므로 변경될 수 있는 숫자를 고정하지 않습니다. 429 응답에서는 헤더와 계정 콘솔을 기준으로 확인하세요.
- 동시 실행을 제한하고 클라이언트 타임아웃을 설정하세요.
- 429와 일시적인 5xx에는 지터를 포함한 지수 백오프를 사용하세요.
- 생성 작업을 무작정 다시 보내지 말고 먼저 작업 상태를 조회하세요.
- 운영 워크로드의 한도 상향이 필요하면 지원 센터로 문의하세요.
07 / REFERENCE
주요 엔드포인트
주요 공개 엔드포인트입니다. 모델이 실제 지원하는 형식은 각 모델 상세에서 확인하세요.
| 메서드 | 경로 | 용도 |
|---|---|---|
| GET | /v1/models | API 키로 이용 가능한 모델 목록 |
| POST | /v1/responses | 도구 및 멀티턴 워크플로를 위한 Responses API |
| POST | /v1/chat/completions | OpenAI 호환 채팅 완성 |
| POST | /v1/messages | Anthropic Messages 호환 엔드포인트 |
| POST | /v1/embeddings | 텍스트 임베딩 생성 |
| POST | /v1/images/generations | 이미지 생성 요청 제출 |
| POST | /v1/audio/speech | 텍스트 음성 변환 |
| POST | /v1/audio/transcriptions | 오디오 전사 |
| POST | /v1/videos | 비디오 생성 작업 제출 |
API 계약 출처: docs/openapi/relay.json