시작하기
소개
텍스트, 이미지, 동영상, 음성, 임베딩 모델을 OpenAI 호환 엔드포인트 하나로 호출하는 api14의 제공 기능과 요청 처리 흐름을 소개하고 첫 요청을 보내는 방법을 안내합니다. 엔드포인트 목록과 문서 구성, 다음 단계도 한눈에 볼 수 있습니다.
api14는 모든 모델을 사용할 수 있는 OpenAI 호환 API 게이트웨이입니다. API 키 하나, 베이스 URL 하나, USD 잔액 하나로 주요 제공업체의 텍스트, 이미지, 동영상, 음성 합성, 음성 인식, 음악, 임베딩, 리랭크 모델을 모두 이용할 수 있습니다. 공식 OpenAI SDK를 그대로 사용하고, baseURL과 apiKey만 바꾸면 됩니다.
https://api14.com/api/v1
제공 기능
- 모든 모델, 약 650개 모델이 자동으로 동기화됩니다. 모델 ID는
provider/model형식입니다. 예를 들어anthropic/claude-sonnet-4.5나openai/gpt-5-mini입니다. 모델 ID와 변형을 참고하세요. - OpenAI 요청 및 응답 형식, Chat Completions, Responses, 임베딩, 이미지, 오디오 등을 지원하므로 기존 코드를 수정 없이 그대로 쓸 수 있습니다. OpenAI SDK 호환성을 참고하세요.
- 명확한 USD 가격, 모든 모델에 가격이 표시되며, 각 요청 비용은 USD 잔액에서 차감됩니다. 가입 시 무료 크레딧이 제공되고, 요금제는 지불한 금액보다 많은 사용량을 제공합니다. 요금 및 결제를 참고하세요.
- 풍부한 기능, 스트리밍, 도구 호출, 구조화된 출력, 추론, 웹 검색, 프롬프트 캐싱, 제공업체 라우팅, 모델 폴백을 지원합니다.
엔드포인트 한눈에 보기
| 기능 | 엔드포인트 | 가이드 |
|---|---|---|
| 텍스트, 추론, 도구, 비전 | POST /chat/completions | Chat Completions |
| Responses API | POST /responses | Responses |
| 레거시 Completions | POST /completions | Completions |
| 임베딩 | POST /embeddings | 임베딩 |
| 이미지 | POST /images/generations | 이미지 |
| 동영상(비동기 작업) | POST /videos, GET /videos/{id} | 동영상 |
| 텍스트 음성 변환 | POST /audio/speech | 음성 합성 |
| 음성 텍스트 변환 | POST /audio/transcriptions | 음성 인식 |
| 리랭크 | POST /rerank | 리랭크 |
| 판단 | POST /decisions | 판단 |
| 모델 목록 | GET /models | 모델 |
| 생성 내역 조회 | GET /generation?id= | 생성 내역 조회 |
| 잔액 및 키 | GET /credits, GET /key | 잔액 및 키 정보 |
요청 처리 흐름
- 클라이언트가
Authorization: Bearer sk-api14-...를 포함해 요청을 보냅니다. - 게이트웨이가 키, 모델의 사용 가능 여부와 키·요금제 허용 여부, 속도 제한, 잔액을 확인합니다.
- 요청 본문은 변경 없이 업스트림 제공업체로 전달됩니다.
- 응답은 변경 없이 반환됩니다.
stream: true이면 바이트 단위 그대로 스트리밍됩니다. - 요청의 정확한 비용이 USD 잔액에서 차감됩니다. 실패한 요청에는 요금이 부과되지 않습니다.
첫 번째 요청
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api14.com/api/v1",
apiKey: process.env.API14_API_KEY,
});
const result = await client.chat.completions.create({
"model": "openai/gpt-5-mini",
"messages": [
{
"role": "user",
"content": "Explain vector databases in two sentences."
}
]
});
console.log(result.choices[0].message.content);