본문으로 건너뛰기

글 — /v1/chat/completions

OpenAI 채팅 형식 하나로 다섯 벤더의 글 모델을 부릅니다.

가장 많이 쓰는 문이에요. OpenAI 채팅 형식 그대로 받아요. Claude 를 부르시면 저희가 Anthropic 형식으로 번역해 넘기고 답을 다시 OpenAI 형식으로 돌려드려요 — 그래서 OpenAI 형식만 아는 도구(Cursor · Cline · LangChain)에서도 Claude 가 그대로 돌아가요.

가장 짧은 호출
curl https://oneport.kr/v1/chat/completions \
  -H "Authorization: Bearer $ONEPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "안녕하세요"}]
  }'
  • stream: true — 받는 대로 흘려드려요. 긴 답은 이쪽이 안전해요(한 번에 기다리는 시간이 5분이라서요).
  • tools — 도구 호출을 벤더 형식으로 번역해 넘기고, 모델이 부른 도구를 OpenAI 형식으로 돌려드려요.
  • reasoning_effort — 얼마나 따져볼지 고르실 수 있어요. 받는 모델인지는 GET /v1/models 의 supports_effort 가 알려드려요.

요청 파라미터#

요청 본문 (JSON)

파라미터받는 값저희가 하는 일
model필수모델 id 문자열없으면 400 이에요. 모르는 이름이면 404 와 함께 가장 가까운 이름을 알려드려요 — 시키지 않은 모델로 몰래 바꾸지 않아요.
messages필수role · content 배열Claude 로 갈 때는 role: system 을 따로 떼어 Anthropic 의 system 필드로 옮겨요. 그쪽은 system 을 messages 안에 못 받거든요.
max_tokens정수 (max_completion_tokens 도 받아요)Anthropic 은 이 값이 필수예요. 안 보내시면 8,192 로 채워 넘겨요 — 안 채우면 400 이 나거든요. GPT-5 이후와 o 계열은 이 이름을 안 받아요 — 그쪽엔 max_completion_tokens 로 보내주세요(GPT 로는 이름을 옮기지 않아요).
streamtrue / false그대로 넘겨요. 답을 받는 대로 흘려드려요.
reasoning_effortnone · low · medium · high · xhigh · max (모델마다 범위가 달라요)Claude 로 갈 때는 Anthropic 이 실제로 받는 output_config.effort 로 옮겨요(none 은 low 로 낮춰요). 못 받는 모델엔 아예 안 실어요. GPT 로는 그대로 가요 — GPT-6 Sol·Luna 는 none~xhigh, Astra·6.1 Sol 은 low~xhigh 라 max 는 400 이에요. 받는 모델인지는 GET /v1/models 의 supports_effort 로 보세요.
temperature · top_p숫자Claude 5 세대(Fable 5·5.1 · Opus 5·5.5 · Sonnet 5 · Opus 4.8 · 4.7)로 갈 때는 빼고 넘겨요. 그 모델들이 이 값에 400 을 내는데, 어차피 안 읽는 값이라 빼도 답이 같아요. GPT 로는 그대로 가요 — GPT-5 이후 대부분은 1 말고는 400 이에요.
stop문자열 또는 배열Claude 로 갈 때 stop_sequences 로 옮기고, 문자열 하나면 배열로 감싸요.
toolsOpenAI 함수 배열Anthropic 형식(input_schema)으로 번역해 넘기고, 모델이 부른 도구를 OpenAI 의 tool_calls 로 되돌려 드려요.
tool_choicenone · auto · required · 특정 함수Anthropic 형식으로 옮겨요. 다만 Fable 5.1 · Opus 5.5 · Sonnet 5.5 는 강제 호출에 400 을 내서 auto 로 낮춰 보내요 — 400 보다 「강제가 안 됨」이 낫다고 봤어요.
service_tier"auto" · "default"priority · fast · flex 같은 다른 처리 등급은 아직 열려 있지 않아 벤더로 보내기 전에 400 으로 돌려드려요 — GPT · Gemini · Grok 모두 같아요. 빼고 보내시면 표준 등급 · 표준 단가로 답해요.
deferredfalseGrok 의 나중에 받기(deferred: true)는 결과를 가져가는 문이 저희에게 없어 400 으로 돌려드려요. 빼고 보내시면 바로 답해요 — 오래 걸리면 stream: true 로 받으세요.

응답#

OpenAI 채팅 응답 그대로예요. Claude 에서 온 답도 저희가 이 모양으로 되돌려 드리니 받는 코드는 손댈 게 없어요. 끝난 이유(finish_reason)도 OpenAI 낱말로 옮겨요 — end_turn·stop_sequence 는 stop, max_tokens 는 length, tool_use 는 tool_calls, 거절은 content_filter 예요.

응답 예시 (줄임)
{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "안녕하세요!" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 12, "completion_tokens": 8, "total_tokens": 20 }
}

응답 헤더 — 저희가 붙이는 것

파라미터받는 값저희가 하는 일
x-gateway-fallback-depth0 부터의 정수몇 번째 경로에서 성공했는지예요. 0 이면 첫 번에 됐다는 뜻이고, 1 이상이면 벤더가 한 번 막았지만 저희가 다른 경로로 돌려 성공했다는 뜻이에요.

무엇이 되고 무엇이 안 되나#

Claude 를 이 문으로 부르실 때는 저희가 몸통을 Anthropic 형식으로 옮겨요. 그래서 「옮기는 자리가 있느냐」가 곧 「되느냐」예요. 아래는 옮기는 코드를 그대로 읽어 적은 것이고, 다른 벤더(GPT · Gemini · Grok)는 번역 없이 그대로 나가니 그쪽 문서대로 돼요 — GPT-5.6·GPT-6 의 규칙 넷은 위 「GPT-5.6 · GPT-6 로 부를 때」에 모아뒀어요.

기능이 문으로 Claude 부르기/v1/messages 로 직접
스트리밍됩니다됩니다
도구 호출됩니다 — 도구를 부르고 그 결과를 먹여 이어가는 여러 턴까지됩니다
그림 입력됩니다 — image_url 을 Anthropic 그림 블록으로 옮겨요(data: 와 http 둘 다)됩니다
생각 강도됩니다 — reasoning_effort 를 output_config.effort 로 옮겨요Anthropic 모양 그대로
프롬프트 캐싱됩니다 — system·user·assistant 글 조각, 도구 결과, 도구 정의, 최상위(자동 캐싱)의 cache_control 을 같이 옮겨요. 메시지 객체에 바로 단 것은 안 옮겨요그대로 나가요
temperatureClaude 5 세대엔 빼고 넘겨요(그 모델이 400 을 내요)그대로 나가서 400 이 날 수 있어요
강제 도구 호출Fable 5.1 · Opus 5.5 · Sonnet 5.5 에선 auto 로 낮춰요(그 모델들이 400 을 내요)그대로 나가요

이 문이 받는 모델#

글 — 대화·요약·번역·코드

POST /v1/chat/completions

Anthropic

model입력 / 1M출력 / 1M컨텍스트
claude-fable-5-1Claude Fable 5.1$10$501000K
claude-fable-5Claude Fable 5$10$501000K
claude-opus-5-5Claude Opus 5.5$4$201000K
claude-opus-5Claude Opus 5$5$251000K
claude-sonnet-5-5Claude Sonnet 5.5$2$101000K
claude-sonnet-5Claude Sonnet 5$2$101000K
claude-haiku-4-5Claude Haiku 4.5$1$5200K
claude-opus-4-8Claude Opus 4.8$5$251000K
claude-opus-4-7Claude Opus 4.7$5$251000K
claude-opus-4-6Claude Opus 4.6$5$251000K
claude-sonnet-4-6Claude Sonnet 4.6$3$151000K
claude-sonnet-4-5Claude Sonnet 4.5$3$15200K

OpenAI

model입력 / 1M출력 / 1M컨텍스트
gpt-6-astraGPT-6 Astra입력 272K 토큰 이상이면 $20 / $75$10$501050K
gpt-6-solGPT-6 Sol입력 272K 토큰 이상이면 $4 / $15$2$101050K
gpt-6-lunaGPT-6 Luna입력 272K 토큰 이상이면 $0.2 / $0.75$0.1$0.51050K
gpt-6.1-solGPT-6.1 Sol입력 272K 토큰 이상이면 $4 / $15$2$101050K
gpt-5.6-solGPT-5.6 Sol입력 272K 토큰 이상이면 $8 / $30$4$201050K
gpt-5.6-terraGPT-5.6 Terra입력 272K 토큰 이상이면 $4 / $18$2$121050K
gpt-5.6-lunaGPT-5.6 Luna입력 272K 토큰 이상이면 $0.4 / $1.8$0.2$1.21050K
gpt-5.5GPT-5.5입력 272K 토큰 이상이면 $10 / $45$5$301050K
gpt-5.2GPT-5.2$1.75$14400K
gpt-5.1GPT-5.1$1.25$10400K
gpt-5.4GPT-5.4입력 272K 토큰 이상이면 $5 / $22.5$2.5$151050K
gpt-5GPT-5$1.25$10400K
gpt-5-miniGPT-5 mini$0.25$2400K
gpt-5.4-miniGPT-5.4 mini$0.75$4.5400K
gpt-4.1GPT-4.1$2$81048K
gpt-4oGPT-4o$2.5$10128K
gpt-4o-miniGPT-4o mini$0.15$0.6128K
o1o12026-10-23에 판매 종료 · 후속 gpt-5.6-sol$15$60200K
o3-minio3-mini2026-10-23에 판매 종료 · 후속 gpt-5.6-sol$1.1$4.4200K
gpt-5.4-nanoGPT-5.4 nano$0.2$1.25400K
gpt-5-nanoGPT-5 nano$0.05$0.4400K
gpt-4.1-miniGPT-4.1 mini$0.4$1.61048K
gpt-4.1-nanoGPT-4.1 nano2026-10-23에 판매 종료 · 후속 gpt-5.6-luna$0.1$0.41048K
o3o3$2$8200K
o4-minio4-mini2026-10-23에 판매 종료 · 후속 gpt-5.6-terra$1.1$4.4200K

Google

model입력 / 1M출력 / 1M컨텍스트
gemini-3.1-pro-previewGemini 3.1 Pro (Preview)입력 200K 토큰 초과면 $4 / $18$2$121049K
gemini-3.8-flashGemini 3.8 Flash2027-01-01부터 입력 $1.5 · 출력 $7.5$0.75$3.751049K
gemini-3.7-flashGemini 3.7 Flash2027-01-01부터 입력 $1.5 · 출력 $7.5$0.75$3.751049K
gemini-3.6-flashGemini 3.6 Flash2027-01-01부터 입력 $1.5 · 출력 $7.5$0.75$3.751049K
gemini-3.5-flashGemini 3.5 Flash$1.5$91049K
gemini-3.5-flash-liteGemini 3.5 Flash-Lite$0.3$2.51049K
gemini-3.1-flash-liteGemini 3.1 Flash-Lite$0.25$1.51049K

xAI

model입력 / 1M출력 / 1M컨텍스트
grok-4.7Grok 4.7입력 200K 토큰 이상이면 $4 / $12$2$6500K
grok-4.6Grok 4.6입력 200K 토큰 이상이면 $4 / $12$2$6500K
grok-4.20-0309-reasoningGrok 4.20 (추론)입력 200K 토큰 이상이면 $2.5 / $5$1.25$2.51000K
grok-4.20-0309-non-reasoningGrok 4.20 (비추론)입력 200K 토큰 이상이면 $2.5 / $5$1.25$2.51000K
grok-build-0.1Grok Build 0.1입력 200K 토큰 이상이면 $2 / $4$1$2256K
grok-4.5Grok 4.5입력 200K 토큰 이상이면 $4 / $12$2$6500K
grok-4.3Grok 4.3입력 200K 토큰 이상이면 $2.5 / $5$1.25$2.51000K

DeepInfra

이 묶음은 Deep Infra Inc.가 처리해요(미국 등). 답한 뒤 요청을 지우고, 자동 캐시의 보관 기간은 공개하지 않아요 — 개인정보처리방침 5·6항

model입력 / 1M출력 / 1M컨텍스트
deepseek-ai/DeepSeek-V4-FlashDeepSeek V4 Flash (DeepInfra)$0.09$0.181049K
deepseek-ai/DeepSeek-V4-ProDeepSeek V4 Pro (DeepInfra)$1.3$2.61049K
deepseek-ai/DeepSeek-V3.1DeepSeek V3.1 (DeepInfra)$0.25$0.95164K
deepseek-ai/DeepSeek-V3.2DeepSeek V3.2$0.26$0.38164K
deepseek-ai/DeepSeek-R1-0528DeepSeek R1 (추론)$0.5$2.15164K
meta-llama/Llama-3.3-70B-Instruct-TurboLlama 3.3 70B$0.1$0.32131K
meta-llama/Llama-4-Scout-17B-16E-InstructLlama 4 Scout 17B$0.1$0.3328K
meta-llama/Meta-Llama-3.1-8B-Instruct-TurboLlama 3.1 8B$0.02$0.04131K
Qwen/Qwen3-235B-A22B-Instruct-2507Qwen3 235B$0.09$0.55262K
Qwen/Qwen3.5-9BQwen3.5 9B$0.1$0.15262K
Qwen/Qwen3-VL-30B-A3B-InstructQwen3 VL 30B (이미지 입력)$0.15$0.6262K
Qwen/Qwen3-Coder-480B-A35B-Instruct-TurboQwen3 Coder 480B$0.3$1262K
mistralai/Mistral-Small-3.2-24B-Instruct-2506Mistral Small 3.2 24B$0.075$0.2128K
mistralai/Mistral-Nemo-Instruct-2407Mistral Nemo 12B$0.019$0.03131K
moonshotai/Kimi-K3Kimi K3$2.85$14.251049K
moonshotai/Kimi-K2.6Kimi K2.6$0.75$3.5262K
MiniMaxAI/MiniMax-M3MiniMax M3 (52만 컨텍스트)$0.28$1.1524K
zai-org/GLM-4.7GLM 4.7$0.4$1.75203K
openai/gpt-oss-120bgpt-oss 120B$0.037$0.17131K
openai/gpt-oss-20bgpt-oss 20B$0.03$0.14131K
google/gemma-3-27b-itGemma 3 27B$0.08$0.16131K
google/gemma-4-31B-itGemma 4 31B$0.13$0.38262K
nvidia/NVIDIA-Nemotron-3-Super-120B-A12BNemotron 3 Super 120B$0.085$0.4262K
microsoft/phi-4Microsoft Phi-4$0.07$0.1416K
ibm-granite/granite-4.2-8bIBM Granite 4.2 8B$0.06$0.25131K

이 문서를 AI 에게 넘기시려면 마크다운 원문을 쓰세요 — 주소 끝에 .md 를 붙이면 나와요.