blindpick.ai로 돌아가기Routing API

기존 OpenAI 클라이언트에서
base URL과 API 키만 바꾸세요

웹의 Blind·VS·Pick 비교 기능은 그대로 사용하고, 외부 서비스에서는 model: "auto"로 모델·공급자·실행 경로 선택을 자동화합니다.

Self-service

내 API 키

키 원문은 서버에 저장하지 않으며 생성 직후 한 번만 표시합니다.

계정과 API 키를 확인하고 있습니다.
01

첫 요청

운영 요청은 서버에서 발급한 고객 API 키를 Bearer 토큰으로 전달합니다. 키를 브라우저나 앱 번들에 포함하지 마세요.

curl https://blindpick.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $BLINDPICK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "auto",
    "messages": [{"role": "user", "content": "이 문서를 세 줄로 요약해줘"}],
    "router": {"optimize_for": "balanced", "fallback": "approved-models"}
  }'

OpenAI JavaScript SDK

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.BLINDPICK_API_KEY,
  baseURL: "https://blindpick.ai/api/v1"
});

const result = await client.chat.completions.create({
  model: "auto",
  messages: [{ role: "user", content: "핵심 위험을 분석해줘" }]
});

console.log(result.choices[0].message.content);
02

Streaming

stream: true는 OpenAI 호환 SSE delta와 [DONE]을 반환합니다. stream_options.include_usage를 켜면 마지막 chunk에서 사용량을 확인할 수 있습니다.

const stream = await client.chat.completions.create({
  model: "auto",
  messages: [{ role: "user", content: "출시 체크리스트를 작성해줘" }],
  stream: true,
  stream_options: { include_usage: true }
});

for await (const event of stream) {
  process.stdout.write(event.choices[0]?.delta?.content ?? "");
}
응답 헤더 X-Blindpick-Stream-Modenative 또는 buffered, X-Request-IdX-Blindpick-Decision-Id는 지원 문의와 실행 추적에 사용합니다.
03

Routing 옵션

필드용도
modelauto 또는 모델 ID자동 선택 또는 모델 고정
router.optimize_forauto, quality, balanced, latency, throughput, cost, reliability목표를 모델 점수·provider 정렬·폴백 설정으로 자동 변환
router.provider_sortlatency, throughput, priceOpenRouter 사용 시 승인 provider 안에서 정렬
router.presetbalanced, performance, speed, economy이전 버전 호환용 저수준 가중치
router.providerprovider ID지정 시 해당 모델 공급자로 강제 제한
router.data_classgeneral, confidential, restricted데이터 처리 경로 제한
router.fallbackoff, same-model, approved-models실패 시 허용 범위
router.max_cost_usd양수요청당 비용 상한

optimize_for만 지정하면 요청 의도, Arena형 선호 신뢰도, 품질·속도·비용, provider health를 함께 계산해 모델과 실행 설정을 만듭니다. 요청 옵션은 발급된 API 키의 보안·비용 정책을 완화하지 못합니다.

POST /api/v1/routes/preview에 같은 요청을 보내면 실행 없이 감지 의도, 컴파일된 정책, 후보 점수, 선택 근거를 확인할 수 있습니다.
04

오류와 재시도

HTTP의미권장 처리
400요청 또는 정책 제약 오류요청을 수정하고 재시도하지 않음
401 / 403키·scope·권한 오류키와 권한 확인
402크레딧 부족충전 또는 한도 조정
409capability 확인 또는 실행 상태 충돌응답 지시에 따라 명시적 capability 선택
429요청 한도 초과지수 백오프와 jitter 적용
503일시적 provider·서비스 불가Retry-After 이후 제한적으로 재시도

오류 본문은 error.message, error.type, error.code 형식입니다. 결제·권한 오류는 자동 재시도하지 말고, 429·503만 동일 idempotency 조건에서 제한적으로 재시도하세요.

05

고급 Responses API

대화 외에 Agent·개발 작업이 필요한 경우 POST /api/v1/responses를 사용합니다. GET /api/v1/capabilities로 현재 키에서 실제 실행 가능한 기능을 먼저 확인하며, 사용할 수 없는 기능은 일반 채팅으로 조용히 대체하지 않습니다.

  • POST /api/v1/responses — 동기 응답 또는 background job 생성
  • GET /api/v1/responses/:id — 상태와 결과 조회
  • GET /api/v1/responses/:id/events — 진행 이벤트 SSE
  • POST /api/v1/responses/:id/cancel — 작업 취소