Chat Completions

채팅 완성을 생성합니다. OpenAI Chat Completions API와 호환됩니다.

POST/v1/chat/completions

요청 본문

파라미터타입필수설명
modelstring필수모델 ID. GET /v1/models에서 전체 목록 확인.
messagesarray필수{role, content} 배열. role은 system | user | assistant.
temperaturenumber선택0.0 ~ 2.0. 기본값 0.7.
max_tokensinteger선택1 ~ 128,000. 기본값 4096. 크레딧 사전 홀드 금액 산정에 사용되므로 필요한 만큼만 지정하는 것을 권장.
data_residencystring선택strict | korea_endpoint | global. 미지정 시 API 키 설정값.
streamboolean선택true면 SSE 스트리밍 응답. 기본값 false.
request body
{
  "model": "gpt-4.1",
  "messages": [
    {"role": "system", "content": "당신은 친절한 비서입니다."},
    {"role": "user", "content": "안녕하세요"}
  ],
  "temperature": 0.7,
  "max_tokens": 4096,
  "data_residency": "korea_endpoint",
  "stream": false
}

응답

OpenAI 형식의 choices / usage에 더해, PleumRouter는 cost(원화 비용·환율·마크업)와 provider / data_tier(실제 라우팅 결과)를 추가로 반환합니다.

200 OK
{
  "id": "chatcmpl-gpt-4.1-841ms",
  "object": "chat.completion",
  "model": "gpt-4.1",
  "provider": "azure_openai",
  "data_tier": "tier2",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "안녕하세요! 무엇을 도와드릴까요?"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 24,
    "completion_tokens": 12,
    "total_tokens": 36
  },
  "cost": {
    "usd": 0.000144,
    "krw": 1,
    "fx_rate": 1390.5,
    "markup_rate": 0.005
  }
}

스트리밍

stream: true로 요청하면 text/event-stream으로 텍스트 조각이 전송되고, 마지막 이벤트에 비용 정보가 포함됩니다.

SSE stream
data: {"delta": "안녕하세요! "}

data: {"delta": "무엇을 도와드릴까요?"}

data: {"done": true, "cost": {"usd": 0.000144, "krw": 1}}

과금 방식

요청 시점에 예상 비용만큼 크레딧이 사전 홀드(freeze)되고, 호출이 끝나면 실제 토큰 사용량으로 정산됩니다. 호출이 실패하면 홀드는 전액 해제되며, 성공한 호출은 최소 ₩1이 차감됩니다.

Tier 1(국내 처리) 모델이 일시 장애일 경우, 동일 티어 내 대체 모델로 자동 폴백됩니다. 폴백 시에도 실제 사용한 모델 기준으로만 과금됩니다.