API 문서

DUKOU AI는 OpenAI 호환 API를 제공합니다. 커스텀 Base URL을 지원하는 OpenAI SDK, 도구, 프레임워크라면 바로 연결할 수 있습니다.

빠른 시작

콘솔에서 API 키를 생성한 후 Base URL을 DUKOU AI로 지정하면 됩니다:

https://api.dukou.ai/v1
Python (OpenAI SDK)
from openai import OpenAI

client = OpenAI(
    base_url="https://api.dukou.ai/v1",
    api_key="sk-dukou-********",  # 콘솔에서 생성
)

resp = client.chat.completions.create(
    model="deepseek-chat",
    messages=[{"role": "user", "content": "안녕하세요"}],
)
print(resp.choices[0].message.content)
Node.js (OpenAI SDK)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.dukou.ai/v1",
  apiKey: process.env.DUKOU_API_KEY,
});

const resp = await client.chat.completions.create({
  model: "gemini-3-flash",
  messages: [{ role: "user", content: "안녕하세요" }],
});
console.log(resp.choices[0].message.content);
AI 코딩 도구
# Claude Code / Cursor / Cline 등의 도구에서
# OpenAI 호환 Base URL과 키를 DUKOU AI로 지정합니다:
export OPENAI_BASE_URL="https://api.dukou.ai/v1"
export OPENAI_API_KEY="sk-dukou-********"

인증

모든 요청은 Authorization: Bearer sk-dukou-... 헤더로 API 키를 전달합니다. 키는 생성 시 한 번만 표시되므로 안전하게 보관하세요. 유출된 경우 즉시 콘솔에서 폐기하고 새 키를 생성하세요(폐기는 30초 이내에 전체 반영됩니다).

엔드포인트

초기 릴리스에서는 다음 OpenAI 호환 엔드포인트를 제공하며, /v1/responses/v1/embeddings는 이후 추가될 예정입니다:

GET/v1/models
POST/v1/chat/completions
curl · 모델 목록
curl https://api.dukou.ai/v1/models \
  -H "Authorization: Bearer $DUKOU_API_KEY"
curl · 채팅 컴플리션
curl https://api.dukou.ai/v1/chat/completions \
  -H "Authorization: Bearer $DUKOU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.2",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "자기소개를 해 주세요"}
    ]
  }'

스트리밍

"stream": true를 설정하면 응답이 SSE(Server-Sent Events)로 증분 반환되며 OpenAI 스트리밍 프로토콜과 동일합니다.

curl · 스트리밍
curl https://api.dukou.ai/v1/chat/completions \
  -H "Authorization: Bearer $DUKOU_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "stream": true,
    "messages": [{"role": "user", "content": "나루터에 관한 짧은 시를 써 주세요"}]
  }'

오류 및 과금

  • 오류 응답은 OpenAI 스타일의 오류 본문을 사용합니다: {"error": {"message", "type", "code"}}.
  • 요청 시작 시 최대 예상 비용을 잔액에서 선점하고 종료 후 실제 토큰 사용량으로 정산하여 차액을 해제합니다. 잔액이 부족하면 4xx 오류를 반환합니다.
  • 각 요청의 모델, 토큰 사용량, 비용, 지연 시간은 콘솔의 사용량 통계와 원장에서 조회할 수 있습니다.