2026년 10월 6일 기준, OpenAI Decisions API는 일반 개발자가 바로 쓸 수 있는 API가 아닙니다. OpenAI는 DevDay 2026(9월 29일)에서 이 API를 "제한적 프리뷰(limited preview)"로 발표했고, 프리뷰 접근은 선정된 API 고객에게만 열려 있습니다. developers.openai.com에는 아직 Decisions API 문서, 요청·응답 형식, 가격, 사용 한도가 하나도 없습니다.
그래서 판단은 간단합니다. 문의 분류, 요청 라우팅, 에이전트의 다음 행동 선택처럼 미리 정한 선택지 중 하나를 고르는 기능이 이번 분기에 필요하다면, 지금 정식 제공 중인 GPT-6 Luna(gpt-6-luna)와 엄격한 enum 스키마로 먼저 만들고, 호출부를 얇은 인터페이스 뒤에 숨겨 두는 편이 낫습니다. 입력 400토큰·출력 15토큰짜리 판단이라면 Luna 표준 요금으로 100만 회에 약 $47.50입니다. 이 금액은 Luna 가격으로 계산한 값이며 Decisions API 가격이 아닙니다.
Decisions API가 하는 일: 미리 정한 선택지 중 하나를 고르는 결정 모델
Decisions API는 글을 생성하는 채팅 모델이 아니라 고르는 일만 하는 엔드포인트입니다. OpenAI 개발자 커뮤니티의 DevDay 2026 공지는 이렇게 설명합니다.
Decisions API: Enables real-time decision-making by focusing Luna's intelligence on a specific set of user-defined questions with finite pre-defined answers. In limited preview.
같은 공지는 용도를 "입력 분류, 요청 라우팅, 미리 정한 답 가운데 행동 선택" 세 가지로 요약합니다. OpenAI 리캡과 OpenAI Developers 계정의 설명(eesel·Firecrawl 등 여러 매체가 인용)을 합치면 흐름은 다음과 같습니다.
- 컨텍스트: 텍스트 또는 이미지. 고객 문의 본문, 채팅 기록, 고객이 첨부한 스크린샷이나 제품 사진이 여기에 들어갑니다.
- 질문과 정해진 답 목록: 개발자가 질문을 만들고, 그 질문이 돌려줄 수 있는 답을 모두 미리 정합니다. 예를 들어 "이 문의는 어느 팀이 처리하는가"와
결제 / 배송 / 기술 / 기타. - 선택 결과: API가 목록 중 하나를 돌려주고, 애플리케이션 코드는 그 값으로 분기합니다.
속도에 대해서는 OpenAI 직원 Thibault Sottiaux가 X에서 "엔드 투 엔드로 수백 밀리초 미만에 결정하도록 튜닝했다"고 밝혔습니다. 언론과 SNS에 도는 "약 150ms", "Luna보다 10배 빠름" 같은 수치는 OpenAI 문서에 없습니다. 둘 다 조건이 공개되지 않은 주장이므로 지연 시간 SLA를 이 숫자에 맞춰 설계해서는 안 됩니다.
2026년 10월 6일 기준 공개된 것과 공개되지 않은 것
공개된 것은 목적과 대략적인 입력 형태뿐이고, 코드를 쓰는 데 필요한 정보는 아직 없습니다. developers.openai.com의 문서 색인, API 변경 이력, 가격 페이지 어디에도 Decisions API 항목이 없습니다.
| 항목 | 2026년 10월 6일 기준 상태 |
|---|---|
| 제공 형태 | 제한적 프리뷰, 선정된 API 고객만 |
| 일반 공개 | 9월 29일 "며칠 안에" 예정이라고 했으나 아직 공개 안 됨 |
| 기반 모델 | Luna 기반이라고 발표. 일반 gpt-6-luna와 같은 모델인지는 미공개 |
| 입력 | 텍스트 또는 이미지 |
| 출력 | 개발자가 정한 답 중 하나 |
| 요청·응답 형식, SDK 메서드 | 미공개 |
| 엔드포인트 경로 | 공식 문서 없음(제3자 관찰로 v1/decisions 존재) |
| 가격과 과금 단위 | 미공개(토큰·호출·질문 단위 중 무엇인지도 모름) |
| 사용 한도, 질문·선택지 최대 개수, 이미지 크기 한도 | 미공개 |
| 신뢰도(확률) 점수 | 보도가 엇갈림. 공식 문서·게시물에서 확인되는 내용 없음 |
신뢰도 점수는 특히 조심해야 합니다. The New Stack은 응답에 신뢰도가 붙는다고 보도했지만, Firecrawl의 정리와 eesel은 이를 뒷받침하는 OpenAI 페이지나 게시물을 찾지 못했습니다. 문서화되지 않은 필드를 전제로 "신뢰도 0.8 미만이면 사람에게 넘긴다" 같은 규칙을 미리 짜 두면, 공개 후 그 필드가 없을 때 설계를 다시 해야 합니다.
지역 측면에서 한국은 OpenAI API 지원 국가 목록에 포함되어 있습니다. 다만 이 목록은 API 계정 자체의 이용 가능 지역일 뿐, Decisions API 프리뷰 대상 선정과는 관계가 없습니다.
403 "Decision API is not enabled"의 뜻: 프리뷰 권한 없음
이 403은 코드나 키의 문제가 아니라 계정에 프리뷰 권한이 없다는 뜻입니다. 고객 지원 자동화 업체 eesel이 2026년 10월 1일과 2일에 일반 API 키로 POST https://api.openai.com/v1/decisions를 호출했을 때 다음 응답을 받았다고 공개했습니다.
{
"error": {
"message": "Decision API is not enabled for this user.",
"type": "invalid_request_error",
"param": null,
"code": null
}
}같은 테스트에서 /v1/decisions/create, /v1/beta/decisions 같은 주변 경로는 404를 돌려줬습니다. 경로 자체는 존재하고 권한 단계에서 막힌다는 해석이 자연스럽습니다. 빈 요청 본문에도 같은 403이 나왔기 때문에 오류 메시지에서 요청 형식을 추측할 수도 없습니다. 한 계정에서 이틀 관찰한 결과이므로 경로와 메시지는 정식 공개 때 바뀔 수 있습니다.
| 응답 | 뜻 | 할 일 |
|---|---|---|
403 Decision API is not enabled for this user. | 계정이 프리뷰 대상이 아님 | 재시도·키 교체로는 해결되지 않습니다. 공식 문서가 나올 때까지 아래 대체 구현을 씁니다 |
| 404 | 존재하지 않는 경로 | 추측한 경로를 쓰고 있지 않은지 확인합니다 |
| 프리뷰 권한을 받은 경우 | 계정에 기능이 열림 | OpenAI가 개별 안내한 형식을 따르되, 프리뷰 중 형식이 바뀔 수 있으므로 호출부를 인터페이스로 분리합니다 |
요청 본문을 추측해서 계속 보내 보는 방법은 권하지 않습니다. 403은 본문을 검사하기 전에 돌아오므로 얻을 정보가 없습니다.
기다릴까, 지금 만들까: 지연 시간 요구가 기준입니다
대부분의 경우 지금 GPT-6 Luna로 만드는 쪽이 맞습니다. 판단을 바꾸는 조건은 응답 속도가 제품에 얼마나 중요한가입니다.
eesel이 공개한 테스트에서 Luna(추론 none) + 엄격한 enum 스키마 조합은 노트북에서 잰 엔드 투 엔드 기준 중앙값 1.46초, 추론 medium에서는 2.33초가 걸렸습니다. OpenAI 직원이 말한 "수백 밀리초 미만"이 사실이라면 그보다 몇 배 빠른 셈이지만, 이쪽은 아직 아무도 측정하지 못한 주장입니다.
- 이메일·티켓 분류, 콘텐츠 검수 대기열, 야간 일괄 재분류: 1~2초 차이는 사용자가 체감하지 못합니다. 지금 Luna로 만들어 운영하고, Decisions API가 열리면 비용과 정확도만 비교해 바꾸면 됩니다.
- 실시간 채팅에서 답변 전에 라우팅: 매 메시지마다 1초 넘게 기다리는 것은 체감됩니다. Luna로 먼저 출시하되 응답 속도 목표는 현재 측정값에 맞춰 잡고, Decisions API 전환을 성능 개선 항목으로 남겨 둡니다.
- 에이전트가 한 작업에서 판단을 수십 번 반복: 작은 결정 20번에 1.5초씩이면 30초를 기다립니다. 이 경우가 Decisions API의 속도 이점이 가장 큰 곳이므로, 판단 호출을 한곳으로 모아 두었다가 공개 후 실측으로 확인합니다.
- 프리뷰 권한을 이미 받은 경우: 형식이 바뀔 수 있는 프리뷰에 운영 코드를 직접 묶지 말고, 아래 인터페이스 뒤에 Decisions API 구현을 하나 더 두는 방식으로 씁니다.

GPT-6 Luna와 enum 스키마로 같은 선택 기능 구현하기
Decisions API가 약속하는 "정해진 답 중 하나"라는 출력 형태는 지금도 Structured Outputs로 만들 수 있습니다. GPT-6 Luna 모델 페이지에 따르면 Luna는 텍스트·이미지 입력과 Structured Outputs를 지원하고, Responses·Chat Completions·Batch 엔드포인트에서 쓸 수 있으며, reasoning.effort를 none부터 max까지 설정할 수 있습니다. Structured Outputs 가이드는 strict: true인 JSON 스키마를 주면 출력이 그 스키마를 따르고, 열거형(enum)에 없는 값을 지어내지 않는다고 설명합니다.
Python 예제: 판단 호출을 인터페이스 뒤에 두기
아래 코드는 OpenAI 문서에 나온 Responses API 요청 형식대로 작성한 예제입니다. pip install openai로 SDK를 설치하고 OPENAI_API_KEY 환경 변수를 설정하면 실행할 수 있습니다. 운영에 넣기 전에 실제 문의 수십 건으로 정답률을 먼저 확인하세요.
import json
from typing import Protocol
from openai import OpenAI
FALLBACK = "unsure" # 판단 불가: 사람에게 넘기는 선택지
class Decider(Protocol):
def decide(self, question: str, options: list[str], text: str,
image_url: str | None = None) -> str: ...
class LunaDecider:
"""GPT-6 Luna + strict enum 스키마로 선택지 중 하나를 고른다."""
def __init__(self, model: str = "gpt-6-luna") -> None:
self.client = OpenAI()
self.model = model
def decide(self, question: str, options: list[str], text: str,
image_url: str | None = None) -> str:
choices = options if FALLBACK in options else [*options, FALLBACK]
content: list[dict] = [{"type": "input_text", "text": text}]
if image_url:
content.append({"type": "input_image", "image_url": image_url})
response = self.client.responses.create(
model=self.model,
reasoning={"effort": "none"},
max_output_tokens=50,
input=[
{"role": "developer",
"content": f"{question}\n입력이 어느 선택지에도 맞지 않거나 "
f"확신할 수 없으면 {FALLBACK}을 고르세요."},
{"role": "user", "content": content},
],
text={"format": {
"type": "json_schema",
"name": "decision",
"strict": True,
"schema": {
"type": "object",
"properties": {"answer": {"type": "string", "enum": choices}},
"required": ["answer"],
"additionalProperties": False,
},
}},
)
# 출력이 잘렸거나 안전 거부가 나오면 판단 불가로 처리한다
if response.status == "incomplete":
return FALLBACK
for item in response.output:
if item.type == "message" and any(
part.type == "refusal" for part in item.content
):
return FALLBACK
return json.loads(response.output_text)["answer"]
ROUTING_QUESTION = "이 고객 문의를 처리할 팀은 어디입니까?"
ROUTING_OPTIONS = ["billing", "shipping", "technical", "other"]
if __name__ == "__main__":
decider: Decider = LunaDecider()
answer = decider.decide(ROUTING_QUESTION, ROUTING_OPTIONS,
"주문 #4471 결제가 두 번 됐습니다. 환불해 주세요.")
print(answer) # 예: billing구성에서 눈여겨볼 점은 세 가지입니다.
- 질문과 선택지를 한곳에 둡니다.
ROUTING_QUESTION과ROUTING_OPTIONS는 Decisions API의 "질문 + 정해진 답 목록"과 같은 단위입니다. 공개 후에는 같은 데이터를 새 구현에 넘기기만 하면 됩니다. - 호출하는 쪽은
Decider만 압니다. Decisions API 형식이 공개되면DecisionsApiDecider클래스를 하나 추가하고 생성 지점만 바꿉니다. 분기 로직과 테스트는 그대로 둡니다. - 스크린샷은
input_image로 함께 보냅니다. 이미지 URL이나 base64 data URL을 넘기면 됩니다. 이미지는 크기에 따라 입력 토큰을 늘리므로 아래 비용 계산에서 입력 토큰 수를 실제 값으로 바꿔 넣어야 합니다.
기존 코드가 Chat Completions라면 같은 스키마를 response_format={"type": "json_schema", "json_schema": {...}}에 넣으면 됩니다. Luna 모델 페이지에 따르면 Chat Completions에서 함수 호출을 함께 쓰려면 reasoning_effort를 none으로 둬야 합니다.
'unsure' 선택지와 사람 확인이 필요한 이유
엄격한 스키마가 보장하는 것은 답이 목록 안에 있다는 것까지입니다. 그 답이 맞는지는 보장하지 않습니다. Structured Outputs 가이드도 모델이 스키마를 지키려다 보니 입력이 작업과 전혀 무관할 때 그럴듯한 답을 지어낼 수 있다고 경고하고, 입력이 맞지 않을 때 무엇을 반환할지 프롬프트에 정해 두라고 안내합니다. 위 코드의 unsure가 그 역할입니다.
eesel의 테스트가 이 차이를 잘 보여 줍니다. 문의 20건을 설정별로 두 번씩 돌린 160회 호출에서 담당 팀 선택은 모든 설정이 40건 중 40건을 맞혔지만, "자동 답변을 보내도 안전한가"라는 질문에서는 Luna(추론 none)가 40건 중 33건만 맞혔습니다. 한 업체가 작은 표본으로 잰 결과이므로 정확도 자체보다 질문 종류에 따라 정답률이 크게 갈린다는 점을 참고하면 됩니다.
판단 결과가 실제 행동으로 이어지는 경우에는 다음 조건을 지키세요.
- 고객에게 메시지를 보내거나, 결제·환불을 실행하거나, 데이터를 바꾸는 작업은 모델 답만으로 실행하지 않습니다.
unsure이거나 위험도가 높은 선택지는 사람 확인 대기열로 보냅니다. - 팀 배정처럼 틀려도 다시 옮기면 되는 작업은 자동 처리하되, 사람이 결과를 고친 건수를 기록합니다.
- 입력, 선택지, 모델 답, 사람이 고친 최종 답을 함께 저장합니다. 이 로그가 Decisions API 공개 후 두 구현을 비교할 평가 세트가 됩니다.

Luna 기준 비용 계산: 1,000회 $0.0475, 100만 회 $47.50
Decisions API 가격은 공개되지 않았으므로, 지금 계산할 수 있는 것은 Luna로 같은 기능을 만들었을 때의 비용입니다. Luna 모델 페이지 기준 표준(Standard) 요금은 입력 100만 토큰당 $0.10, 출력 100만 토큰당 $0.50이고, Batch와 Flex는 그 50%입니다. 추론을 none으로 두면 추론 토큰이 생기지 않습니다.
계산식은 다음과 같습니다.
1회 비용 = 입력 토큰 × $0.10 / 1,000,000 + 출력 토큰 × $0.50 / 1,000,000위 예제처럼 {"answer":"billing"} 하나만 받으면 출력은 15토큰 안팎입니다. 입력 토큰은 지시문, 선택지, 문의 본문 길이로 정해지므로 아래 표의 400·800은 가정한 값입니다. 자기 서비스의 평균 입력 토큰을 넣어 다시 계산하세요.
| 가정(입력/출력 토큰) | 처리 방식 | 1회 | 1,000회 | 100만 회 |
|---|---|---|---|---|
| 400 / 15 | Standard | $0.0000475 | $0.0475 | $47.50 |
| 800 / 15 | Standard | $0.0000875 | $0.0875 | $87.50 |
| 400 / 15 | Batch(비동기) | $0.00002375 | $0.02375 | $23.75 |
400/15의 경우 400 × $0.10/100만 = $0.00004, 15 × $0.50/100만 = $0.0000075로, 합계는 회당 $0.0000475입니다. 비용 대부분이 입력에서 나오므로 지시문과 선택지 설명을 줄이는 것이 출력 형식을 줄이는 것보다 효과가 큽니다.
비용을 바꾸는 조건도 함께 보세요.
- 스크린샷·사진 입력: 이미지 크기만큼 입력 토큰이 늘어납니다. 텍스트만 기준으로 한 위 표보다 비싸집니다.
- 추론 단계 올리기: eesel 테스트에서 문의 1,000건당 비용은 추론
none일 때 약 $0.047,medium일 때 약 $0.089였습니다. 추론 토큰이 출력 쪽 비용으로 붙기 때문입니다. - Batch: 절반 가격이지만 비동기 처리이므로 실시간 라우팅에는 쓸 수 없습니다. 과거 데이터 재분류에 적합합니다.
- 고정 지시문 캐시: 지시문과 선택지가 매번 같다면 캐시된 입력은 100만 토큰당 $0.01로 청구됩니다.
더 큰 모델로 바꿨을 때의 단가 차이는 GPT-6 Luna와 Sol 가격 비교: API 요금과 Codex 크레딧에서 같은 조건으로 비교합니다. 판단 정확도가 부족해 Sol을 검토한다면 토큰 단가부터 확인하세요.
Decisions API로 전환을 검토해야 할 신호
다음 중 하나가 보이면 Luna 구현과 Decisions API를 나란히 비교할 시점입니다.
- developers.openai.com에 Decisions API 가이드나 API 레퍼런스 페이지가 생겼다.
- API 가격 페이지에 Decisions API 행이 추가되어 과금 단위(토큰·호출·질문)를 알 수 있다.
- 일반 API 키로
v1/decisions를 호출해도 403 "not enabled"가 더 이상 나오지 않는다. - 응답에 신뢰도나 선택지별 확률 필드가 있다고 공식 문서에 적혀 있다.
- 공식 문서에 지연 시간, 사용 한도, 질문당 선택지 수 한도가 숫자로 나온다.
비교할 때는 앞에서 저장한 로그를 그대로 두 구현에 흘려 보내고 정답률, p50·p95 지연 시간, 1,000회당 비용 세 가지를 같은 표에 놓으세요. Decisions API가 셋 중 하나라도 확실히 낫고 나머지가 비슷하다면 Decider 구현만 바꾸면 됩니다. 신뢰도 필드가 생긴다면 그때 비로소 "신뢰도가 낮으면 사람에게" 규칙을 확률 기준으로 바꿀 수 있습니다.
OpenAI Decisions API 자주 묻는 질문
OpenAI Decisions API 가격은 얼마인가요?
2026년 10월 6일 기준 가격은 공개되지 않았습니다. 토큰 단위로 청구할지, 호출이나 질문 단위로 청구할지도 알려지지 않았습니다. 현재 비교 기준으로 쓸 수 있는 것은 GPT-6 Luna의 입력 $0.10, 출력 $0.50(100만 토큰당)이며, 입력 400·출력 15토큰 가정으로 100만 회에 약 $47.50입니다.
Decisions API는 언제 일반에 공개되나요?
OpenAI는 9월 29일 DevDay 리캡에서 "며칠 안에" 일반 공개할 계획이라고 했지만, 10월 6일까지 공개 문서나 일반 공개 발표는 나오지 않았습니다. Reddit r/OpenAI에는 10월 초에도 출시 시점을 묻는 글이 올라왔습니다. 공개 여부는 developers.openai.com에 문서가 올라오는지로 확인하는 것이 가장 확실합니다.
Decisions API와 TypeSafe Jev는 무엇이 다른가요?
둘 다 정해진 선택지 중 하나를 고르는 용도입니다. Firecrawl 등의 정리에 따르면 TypeSafe Jev는 9월 15일 출시된 전용 결정 모델로 누구나 쓸 수 있고, 텍스트만 입력받으며, 선택지별 확률을 돌려줍니다. Decisions API는 이미지 입력을 받는다는 점이 다르지만 아직 프리뷰이고 확률 반환 여부도 공개되지 않았습니다. 입력에 스크린샷이 많다면 OpenAI 쪽이, 지금 바로 확률이 필요한 텍스트 작업이라면 Jev가 검토 대상입니다.
ChatGPT에서 Decisions API를 쓸 수 있나요?
현재 발표된 내용으로는 쓸 수 없습니다. Decisions API는 개발자가 API 키로 호출하는 엔드포인트로 발표되었고, ChatGPT 앱이나 요금제 기능으로 안내된 내용은 없습니다.
Decisions API 응답에 신뢰도 점수가 포함되나요?
공식 문서나 OpenAI 게시물로 확인되는 내용은 없습니다. 일부 보도는 포함된다고 했지만 근거가 된 OpenAI 자료는 나오지 않았습니다. 신뢰도 필드를 전제로 자동 처리 기준을 만들지 말고, 지금은 unsure 같은 판단 불가 선택지와 사람 확인 경로로 대신하세요.



