문서
Apigator는 OpenAI 호환입니다. 아무 OpenAI SDK나 base URL로 향하게 하고 Apigator 키를 넣으면, 하나의 엔드포인트로 채팅, 이미지, 오디오, 임베딩, 판단 등 수백 개의 모델을 호출할 수 있습니다.
작업별 레시피와 도구 연동(LangChain, Vercel AI SDK, Cursor, Cline)을 찾으시나요? Cookbook을 참고하세요.
카드 불필요 — 새로 발급한 키로 무료 모델을 사용할 수 있습니다.
대시보드에서 키를 발급받고 바로 무료 모델로 첫 호출을 해 보세요. 요금이 $0이므로 충전이 필요 없습니다. 모든 신규 계정은 $0.042 크레딧(Jev 판단 모델 약 100만 토큰)으로 시작합니다. 유료 모델은 잔액을 충전하면 사용할 수 있습니다.
curl https://api.apigator.ai/v1/chat/completions \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"free/nemotron-nano-30b","messages":[{"role":"user","content":"Hello from Apigator!"}]}'from openai import OpenAI
client = OpenAI(base_url="https://api.apigator.ai/v1", api_key="sk-YOUR_KEY")
resp = client.chat.completions.create(
model="free/nemotron-nano-30b", # free — no balance needed
messages=[{"role": "user", "content": "Hello from Apigator!"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apigator.ai/v1", apiKey: "sk-YOUR_KEY" });
const r = await client.chat.completions.create({
model: "free/nemotron-nano-30b", // free — no balance needed
messages: [{ role: "user", content: "Hello from Apigator!" }],
});
console.log(r.choices[0].message.content); free/nemotron-nano-30bfree/nemotron-super-120bfree/gemma-4-31b base URL만 바꾸면 연동이 끝납니다. 언어를 선택하세요:
curl https://api.apigator.ai/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello!"}]}'from openai import OpenAI
client = OpenAI(base_url="https://api.apigator.ai/v1", api_key="sk-...")
resp = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apigator.ai/v1", apiKey: "sk-..." });
const r = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Hello!" }],
});
console.log(r.choices[0].message.content); Base URL https://api.apigator.ai/v1 · 인증 Authorization: Bearer sk-YOUR_KEY (대시보드에서 키를 발급받으세요).
모든 것이 채팅은 아닙니다. /models의 각 모델에는 사용하는 엔드포인트가 표시되어 있으니 알맞은 것을 선택하세요. base URL과 키는 동일합니다.
| 모달리티 | 엔드포인트 | 모델 id 예시 |
|---|---|---|
| 채팅 | POST /v1/chat/completions | gpt-4o |
| 이미지 생성 | POST /v1/images/generations | openai/gpt-image-1, fal_ai/fal-ai/flux/schnell |
| 음성 합성(TTS) | POST /v1/audio/speech | elevenlabs-tts |
| 음성 인식(STT) | POST /v1/audio/transcriptions | groq/whisper-large-v3 |
| 임베딩 | POST /v1/embeddings | openai/text-embedding-3-small |
| 동영상 생성(비동기) | POST /v1/videos | gemini/veo-3.1-fast-generate-preview |
| 판단(Jev) | POST /typesafe/v1/systemone | jev-latest |
Python 예제는 빠른 시작의 client를 사용한다고 가정합니다.
curl https://api.apigator.ai/v1/images/generations \
-H "Authorization: Bearer sk-..." \
-d '{"model":"openai/gpt-image-1","prompt":"a red crocodile mascot","n":1}'client.images.generate(model="openai/gpt-image-1", prompt="a red crocodile mascot", n=1)const img = await client.images.generate({
model: "openai/gpt-image-1",
prompt: "a red crocodile mascot",
n: 1,
}); curl https://api.apigator.ai/v1/embeddings \
-H "Authorization: Bearer sk-..." \
-d '{"model":"openai/text-embedding-3-small","input":"hello world"}'client.embeddings.create(model="openai/text-embedding-3-small", input="hello world")const e = await client.embeddings.create({
model: "openai/text-embedding-3-small",
input: "hello world",
}); curl https://api.apigator.ai/v1/audio/speech \
-H "Authorization: Bearer sk-..." \
-d '{"model":"elevenlabs-tts","input":"Hello","voice":"21m00Tcm4TlvDq8ikWAM"}' \
--output speech.mp3with client.audio.speech.with_streaming_response.create(
model="elevenlabs-tts", voice="21m00Tcm4TlvDq8ikWAM", input="Hello",
) as r:
r.stream_to_file("speech.mp3")import fs from "fs";
const mp3 = await client.audio.speech.create({
model: "elevenlabs-tts", voice: "21m00Tcm4TlvDq8ikWAM", input: "Hello",
});
fs.writeFileSync("speech.mp3", Buffer.from(await mp3.arrayBuffer())); voice에는 이름이 아닌 ElevenLabs voice id를 지정해야 합니다. 오디오 전체 가이드: /audio.md.
curl https://api.apigator.ai/typesafe/v1/systemone \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{"model":"jev-latest","state":"Help! My payouts have been failing for 3 days.",
"questions":{"is_urgent":{"type":"noul","instructions":"Does this convey urgency?"},
"department":{"type":"choice","instructions":"Which team should handle this?",
"criteria":{"billing":"Payments","technical":"Bugs","sales":"Pricing"}}}}'
# -> {"answers":{"is_urgent":{"type":"noul","noul":0.95},
# "department":{"type":"choice","choice":"billing","probabilities":{...},"confidence":0.81}}, ...}import requests
r = requests.post(
"https://api.apigator.ai/typesafe/v1/systemone",
headers={"Authorization": "Bearer sk-..."},
json={"model": "jev-latest",
"state": "Help! My payouts have been failing for 3 days.",
"questions": {"is_urgent": {"type": "noul", "instructions": "Does this convey urgency?"}}},
)
print(r.json()["answers"]["is_urgent"]["noul"]) # 0.95 = P(yes)const r = await fetch("https://api.apigator.ai/typesafe/v1/systemone", {
method: "POST",
headers: { Authorization: "Bearer sk-...", "Content-Type": "application/json" },
body: JSON.stringify({
model: "jev-latest",
state: "Help! My payouts have been failing for 3 days.",
questions: { is_urgent: { type: "noul", instructions: "Does this convey urgency?" } },
}),
});
console.log((await r.json()).answers.is_urgent.noul); // 0.95 = P(yes) OpenAI Chat Completions 사양을 따릅니다. GPT-5 계열에서 검증했습니다(2026년 9월):
tools / tool_choice — /v1/chat/completions에서 function calling이 동작하며, reasoning_effort와 함께 사용할 수도 있습니다. reasoning_effort — low / medium / high / xhigh. 생략하면 모델 기본값을 사용합니다. response_format — JSON mode 및 structured outputs. max_completion_tokens — 추론 모델에서는 max_tokens 대신 이것을 사용하세요. verbosity — /v1/chat/completions에서는 지원하지 않으니 생략하세요. 보내면 400 "does not support parameters"가 반환됩니다. Responses API도 모든 모델에서 POST https://api.apigator.ai/v1/responses를 통해 OpenAI Responses 형식으로 사용할 수 있습니다. GPT-5와 GPT-6 모델은 chat/completions에서 function tools를 바로 받습니다 — 게이트웨이가 Responses API로 변환해 줍니다. chat/completions에서 tools를 거부하는 모델이 있다면 같은 tools를 /v1/responses로 보내세요.
호출 가능한 모든 모델(요금 및 각 모델의 엔드포인트 포함)은 apigator.ai/models에서 확인하거나 GET https://api.apigator.ai/v1/models를 호출하세요. Claude를 제외한 모든 모델은 기본적으로 모든 키에 열려 있습니다. Claude는 허용 목록 방식이며 별도의 Anthropic 호환 엔드포인트에서 동작합니다 — Claude Code CLI를 참고하세요.
사용자를 위해 클라이언트를 연결하고 있나요? 아래 원본 markdown 파일을 가져와 그대로 따르세요.
401 — 키가 없거나 유효하지 않습니다.403 claude_not_allowed — 이 키에 Claude가 활성화되어 있지 않습니다(MixerBox에 허용 목록 등록을 요청하세요).400 — 잘못된 요청입니다(예: Perplexity의 최소 max_tokens 같은 공급자 제약).404 model not available — 업스트림에서 활성화되지 않은 id입니다. /models에서 다른 모델을 선택하세요.400 does not support parameters — 이 경로에서 지원하지 않는 파라미터가 요청에 포함되었습니다(위의 OpenAI 호환 파라미터 참고). 해당 파라미터를 빼거나 /v1/responses를 사용하세요.