엔드포인트와 프로토콜
모델 기능에 맞는 엔드포인트를 선택합니다.
필요한 엔드포인트, 도구, 입력 형식을 지원하는 모델을 선택하세요. Chat Completions, Responses, Messages는 구조가 달라 경로 변경만으로 전환할 수 없습니다.
API 엔드포인트
| 방식 | 경로 | 설명 |
|---|---|---|
| POST | /v1/messages | Anthropic Messages API (권장) |
| POST | /v1/chat/completions | OpenAI Chat Completions (호환) |
| POST | /v1/images/generations | OpenAI Images Generations (req/gpt-image-2) |
| POST | /v1/images/edits | OpenAI 이미지 편집 / 참조 이미지(req/gpt-image-2) |
| POST | /v1/audio/speech | OpenAI Audio Speech / TTS (req/gpt-4o-mini-tts) |
| POST | /v1/videos | OpenAI Videos — 비디오 생성 |
| GET | /v1/videos/{id} | 비디오 진행 상태 조회 (추가 요금 없음) |
| GET | /v1/videos/{id}/content | MP4 파일 다운로드 (추가 요금 없음) |
| DELETE | /v1/videos/{id} | 대기 중인 작업 취소 (추가 요금 없음) |
| POST | /v1/responses | OpenAI Responses API (호환) |
| GET | /v1/models | 모델 및 가격 목록 |
| POST | /v1/messages/count_tokens | 토큰 추정 (무료) |
/v1/messages/count_tokens
이 엔드포인트는 무료 로컬 추정치를 제공하며 모델의 공식 토크나이저를 사용하지 않습니다. input_tokens는 최대 200,000으로 제한되므로 큰 프롬프트가 문맥 창에 맞는지 확인하거나 최종 비용을 확정하는 데 쓰지 마세요. 실제 생성 usage와 대조하세요. 아래 JSON은 예시이며 실제 응답이 아닙니다.
curl --fail-with-body "https://apivn.dev/v1/messages/count_tokens" \
-H "x-api-key: ${STALI_API_KEY:?STALI_API_KEY}" \
-H "Content-Type: application/json" \
-d '{"model":"claude-fable-5","messages":[{"role":"user","content":"Hello"}]}'Responses 및 도구 호출
Responses 예제는 POST /v1/responses를 사용하고 input에 문맥을 포함합니다. 이 문서는 공개되지 않은 응답 저장·조회·목록 작업의 지원을 보장하지 않습니다.
import os
from getpass import getpass
from openai import OpenAI
client = OpenAI(api_key=os.getenv("STALI_API_KEY") or getpass("STALI_API_KEY: "), base_url="https://apivn.dev/v1", max_retries=0)
stream = client.responses.create(model="gpt-5.6-sol", input="Hello", stream=True, store=False)
completed = False
for event in stream:
if event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif event.type == "response.completed":
completed = event.response.status == "completed"
elif event.type in ("error", "response.failed", "response.incomplete"):
raise RuntimeError(str(event))
if not completed:
raise RuntimeError("Stream ended without response.completed; preserve the request ID and check usage before retrying.")JSON 예제는 각각 Chat Completions와 Messages용입니다. Python 예제는 로컬 덧셈으로 전체 도구 호출 과정을 보여 줍니다. 이름과 인수를 검증하고 함수를 실행한 뒤 일치하는 call ID로 결과를 보내세요. 게이트웨이는 함수를 실행하지 않습니다. 모델 호출은 라운드마다 별도로 과금될 수 있으며 예제는 최대 4라운드로 제한하고 SDK 자동 재시도를 끕니다.
예제는 소스 검토와 로컬 점검 대상이며 모든 앱 버전의 실제 검증을 의미하지 않습니다. 운영 전에 설정, 작은 요청, 사용량을 확인하세요.

