연동 가이드
base_url만 Y-API로 바꾸면 나머지 코드는 그대로 두면 됩니다. 아래 예제는 복사해서 바로 실행할 수 있고, 20개 모델이 모두 같은 방식입니다.
1단계
기본 설정
OpenAI 호환 SDK라면 이 세 항목만 바꾸면 됩니다. api_key는 콘솔의 ‘API 키’ 페이지에서 발급하고, model에는 ‘지원 모델’에 있는 ID를 넣으세요.
- base_url
- https://api.y-api.bestvirtualgoods.com/v1
- api_key
- sk-...(콘솔에서 발급)
- model
- deepseek/deepseek-v4-flash
에이전트를 만들거나 클라이언트 코드를 생성하려면 기계가 읽는 OpenAPI 3.1 명세를 쓰세요. 실제로 존재하는 세 개의 엔드포인트, 요청과 응답의 모든 필드, 그리고 SDK가 알아서 재시도하는 실패까지 정리되어 있습니다.
모델 목록도 JSON으로 공개하며, 이 파일은 키 없이 읽을 수 있습니다. 모델 ID, 제공 업체, 그리고 크레딧 가격과 실제 결제 가격이 모두 들어 있습니다. 게이트웨이의 GET /v1/models 자체는 키가 필요합니다 — 이 파일은 인증이 없는 대체본이며, 내용은 마지막 빌드 시점 기준입니다.
2단계
첫 요청 보내기
세 예제는 모두 같은 동작을 합니다. 쓰시는 것을 복사하세요.
curl https://api.y-api.bestvirtualgoods.com/v1/chat/completions \
-H "Authorization: Bearer $YAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-flash",
"messages": [{"role": "user", "content": "안녕하세요"}]
}'import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.y-api.bestvirtualgoods.com/v1",
api_key=os.environ["YAPI_KEY"], # 콘솔에서 발급한 키
)
response = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "안녕하세요"}],
)
print(response.choices[0].message.content)import OpenAI from 'openai'
const client = new OpenAI({
baseURL: 'https://api.y-api.bestvirtualgoods.com/v1',
apiKey: process.env.YAPI_KEY, // 콘솔에서 발급한 키
})
const response = await client.chat.completions.create({
model: 'deepseek/deepseek-v4-flash',
messages: [{ role: 'user', content: '안녕하세요' }],
})
console.log(response.choices[0].message.content)심화
스트리밍
stream 파라미터만 추가하면 됩니다. 돌아오는 청크는 OpenAI와 같은 SSE 형식이라 클라이언트에서 따로 처리할 것이 없습니다.
stream = client.chat.completions.create(
model="deepseek/deepseek-v4-flash",
messages=[{"role": "user", "content": "안녕하세요"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")심화
모델 전환
모든 모델이 같은 base_url과 같은 키를 쓰기 때문에, 전환은 model 필드만 바꾸면 끝입니다. 전체 목록은 ‘지원 모델’ 페이지에 있습니다.
# 저렴해서 고빈도·배치 작업에 적합
client.chat.completions.create(model="deepseek/deepseek-v4-flash", messages=msgs)
# 더 강력해서 복잡한 추론에 적합
client.chat.completions.create(model="deepseek/deepseek-v4-flash", messages=msgs)문제 해결
오류 처리
가장 흔한 오류는 두 가지이고, 둘 다 콘솔의 요청 로그에 기록이 남습니다.
| 상태 코드 | 의미 | 처리 방법 |
|---|---|---|
| 401 | 의미키가 유효하지 않거나 이미 폐기되었습니다. | 처리 방법콘솔의 ‘API 키’ 페이지에서 키가 남아 있는지 확인하고, 필요하면 새로 발급하세요. |
| 403 | 의미계정 크레딧을 모두 사용했습니다. 429가 아니며, 메시지도 중국어로 오기 때문에 영어로 검색하면 아무것도 나오지 않습니다. | 처리 방법https://y-api.bestvirtualgoods.com/app/billing에서 충전하면 바로 복구됩니다. 키는 그대로 유효하고 코드도 고칠 필요가 없습니다. |
원인을 상태 코드로 짐작하지 마세요. 이 사이트가 반환하는 상태 코드 7건 중 5건은 숫자가 뜻하는 것과 실제 원인이 다르고, 그중 2건은 공식 SDK가 기본값으로 두 번 조용히 재시도한 뒤에야 프로그램에 넘깁니다. 오류 코드 참고 페이지에 전부와, 각각이 실제로 반환하는 원문을 실어 두었습니다.
모든 오류 코드, 한 건씩 실측 →