문서 검색...

문서를 검색하려면 입력을 시작하세요

플랫폼 가이드

플랫폼 API

카탈로그, 가격, 잔액, 사용량을 코드에서 읽습니다.

프롬프트를 보내는 것을 뺀 나머지 전부입니다. 어떤 모델이 있는지, 공급자별 요금은 얼마인지, 지금까지 얼마를 썼는지, 어떤 키를 가지고 있는지. 모두 컴플리션을 보내는 것과 같은 api 호스트에서 JSON으로 응답합니다.

카탈로그와 가격 엔드포인트는 공개되어 있으며 자격 증명이 전혀 필요 없습니다. 본인 계정에 관한 것은 자격 증명이 필요하고, 종류는 두 가지입니다.

둘은 서로 바꿔 쓸 수 없습니다. API 키로는 잔액을 읽을 수 없고, 액세스 토큰으로는 컴플리션을 보낼 수 없습니다.

자격 증명형태사용 범위
API 키sk-...추론, 모델 목록, 그리고 해당 키 자신의 사용량 카운터.
액세스 토큰29자에서 32자, 접두사 없음내 계정: 잔액, 키 관리, 사용 로그.

둘 다 같은 헤더로 전달합니다. Authorization: Bearer 뒤에 값을 붙입니다. 그 밖의 것은 읽지 않습니다. 예전 예제는 New-Api-User 헤더를 추가하지만 무시되며, 쿠키로 대체되는 경로도 없습니다.

엔드포인트가 자격 증명 없이도 응답하는 경우에도 이 헤더를 보내십시오. 자격 증명이 없는 계정 라우트 요청은 우리 쪽에 닿기 전에 검문을 받을 수 있고, 그 검문은 JSON이 아니라 HTML을 반환합니다.

먼저 설정을 열고 보안 항목에서 API 액세스를 찾아 하나 생성하십시오. 토큰은 한 번만 표시됩니다. 로그인한 상태에서만 만들 수 있으므로 스크립트가 스스로 발급할 수는 없습니다.

액세스 토큰은 한 번에 하나만 보유합니다. 새로 생성하면 기존 토큰이 조용히 무효가 되고, 그 토큰을 쓰던 것은 모두 동작을 멈춥니다.

비밀번호처럼 다루십시오. 돈을 쓰고, 키를 만들고, 기록을 읽을 수 있습니다. 스크립트에 더 이상 필요 없어지면 같은 화면에서 폐기하십시오.

공개 요청 한 번으로 모든 모델이 반환되며, 가격은 100만 토큰당 달러로 이미 환산되어 있습니다. 키도 가입도 필요 없습니다.

bash
curl https://api.unorouter.com/api/pricing/catalog
json
{
  "counts": { "models": 239, "free": 134, "paid": 105, "vendors": 50 },
  "first_free_model": "glm-5.3:free",
  "vendors": [{ "vendor_id": 4, "vendor_name": "Zhipu", "icon": "Zhipu.Color" }],
  "models": [
    {
      "model_name": "glm-5.3",
      "vendor": "Zhipu",
      "type": "text",
      "is_free": false,
      "online": true,
      "input_price": 0.05103,
      "output_price": 0.160382187,
      "original_input_price": 1.26,
      "original_output_price": 3.960054,
      "tags": "Text,Reasoning,Tools,Cache",
      "supported_endpoint_types": ["openai", "anthropic"],
      "uptime_24h": 99.965,
      "success_rate": 95,
      "avg_latency_ms": 11062
    }
  ]
}

input_price와 output_price는 해당 모델을 현재 제공하는 공급자 중 가장 저렴한 곳을 기준으로 오늘 실제로 내게 되는 금액입니다. original_input_price와 original_output_price는 벤더의 정가이므로 둘의 차이가 할인폭입니다. is_free는 과금되지 않는 모델을, online은 지금 가동 중인 공급자가 있는 모델을 표시합니다.

더 작은 두 가지가 있습니다. /api/pricing/counts는 합계만 반환해 주기적으로 조회해도 부담이 없고, /api/pricing/vendors는 벤더 목록을 반환합니다. 예전 엔드포인트인 /api/pricing은 달러가 아니라 원시 배율을 반환하며 응답 크기가 몇 배 큽니다.

대부분의 모델은 여러 공급자가 서로 다른 요율로 제공합니다. 모델 하나를 지정해 조회하면 전부 확인할 수 있습니다.

bash
curl "https://api.unorouter.com/api/pricing/catalog/model?model=glm-5.3"
json
{
  "model_name": "glm-5.3",
  "model_ratio": 0.63,
  "completion_ratio": 3.1429,
  "cache_ratio": 0.1857,
  "input_price": 0.05103,
  "output_price": 0.160382187,
  "grid_min_ratio": 0.0405,
  "auto_chain": ["a7-bbgt-2846-glm-5.3", "a7-kkl-3731-glm-5.3", "a7-4069-glm-5.3"],
  "group_ratio": {
    "a7-bbgt-2846-glm-5.3": 0.0405,
    "a7-kkl-3731-glm-5.3": 0.0911,
    "a7-4069-glm-5.3": 0.1214
  },
  "enable_groups": ["a7-bbgt-2846-glm-5.3", "a7-kkl-3731-glm-5.3"]
}

auto_chain은 라우팅이 시도하는 순서이며 저렴한 쪽이 먼저입니다. group_ratio는 공급자별 배수이고, 가격은 여기서 계산됩니다:

text
input  $/1M = model_ratio * 2 * group_ratio
output $/1M = input * completion_ratio
cached $/1M = input * cache_ratio

glm-5.3 on a7-bbgt-2846: 0.63 * 2 * 0.0405 = $0.05103 / 1M in
                          0.05103 * 3.1429  = $0.16038 / 1M out

이 그룹 이름은 키에 지정하는 그룹과 같습니다. 자세한 내용은 그룹 고정

OpenAI 호환 목록은 연결을 누를 때 대부분의 클라이언트가 호출하는 엔드포인트입니다. API 키가 필요합니다.

bash
curl https://api.unorouter.com/v1/models \
  -H "Authorization: Bearer $UNOROUTER_API_KEY"

해당 키가 실제로 쓸 수 있는 것만 반환하므로 무료 등급 키는 충전된 키보다 적은 모델을 보게 됩니다. 각 항목에는 context_length와 max_output_tokens도 함께 오는데, 원래 OpenAI는 이를 제공하지 않습니다.

경로는 /v1/models입니다. /v1을 빼면 API가 아니라 웹 페이지에 도달하며, 클라이언트는 예기치 않은 doctype에 관한 JSON 파싱 오류로 보고합니다.

한 번의 호출로 남은 사용 가능 금액을 포함한 계정 정보가 반환됩니다.

bash
curl https://api.unorouter.com/api/user/self \
  -H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"
json
{
  "success": true,
  "message": "",
  "data": {
    "id": 12345,
    "username": "you",
    "group": "default",
    "quota": 265000,
    "used_quota": 4231900,
    "request_count": 1884,
    "aff_code": "ABC123"
  }
}

금액 단위는 달러가 아니라 쿼터입니다. 500,000 단위가 1 미국 달러이므로 위 잔액은 0.53달러입니다. 금액으로 표시하려면 500,000으로 나누십시오.

quota는 아직 쓸 수 있는 금액입니다. used_quota와 request_count는 늘어나기만 하는 누적 합계이므로, used_quota는 무엇과 잔액의 차이도 아닙니다.

키를 목록으로 조회한 다음 id로 하나의 값을 확인합니다.

bash
curl "https://api.unorouter.com/api/token/?p=1&page_size=20" \
  -H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"

curl -X POST https://api.unorouter.com/api/token/42/key \
  -H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN"

목록에서는 모든 키 값이 가려지므로 값 확인은 별도의 호출입니다. 이 호출에는 요청 제한이 있고 감사 로그에 기록됩니다.

키를 만들면 success만 반환되고 키 자체는 반환되지 않습니다. 먼저 만들고, 목록에서 id를 찾은 다음 실제 값을 확인하세요. 키를 수정하면 수정된 객체가 반환되지만 객체 전체를 보내야 합니다. 생략해도 유지되는 것은 cross_group_retry, group_mapping, auto_groups뿐이며, 그 밖에 생략한 필드는 빈 값으로 덮어써집니다.

본인의 요청 기록은 페이지 단위로 조회하고 필터링할 수 있습니다.

bash
curl -G https://api.unorouter.com/api/log/self \
  -H "Authorization: Bearer $UNOROUTER_ACCESS_TOKEN" \
  -d p=1 \
  -d page_size=100 \
  -d type=2 \
  -d start_timestamp=1789344000 \
  -d model_name=glm-5.3
매개변수의미
type1 충전, 2 사용, 3 관리, 5 오류, 6 환불, 7 로그인. 생략하면 전체가 대상입니다.
start_timestamp, end_timestampUnix 초. 두 값의 간격은 10년을 넘을 수 없습니다.
model_name, token_name, group특정 모델, 특정 키, 특정 공급자 그룹으로 좁힙니다.
request_id, upstream_request_id우리 쪽 id 또는 공급자의 id로 단일 요청을 찾습니다.

페이지 처리에는 p와 page_size를 추가하며, 페이지 크기는 최대 100입니다. 함께 제공되는 엔드포인트 /api/log/self/stat은 같은 필터에 대한 합계만 반환합니다. 지출, 분당 요청 수, 분당 토큰 수입니다.

액세스 토큰 없이 키 하나의 남은 잔액을 읽으려면 그 키 자체로 인증하십시오:

bash
curl https://api.unorouter.com/api/usage/token/ \
  -H "Authorization: Bearer $UNOROUTER_API_KEY"
json
{
  "object": "token_usage",
  "name": "SillyTavern",
  "total_granted": 500000,
  "total_used": 231900,
  "total_available": 268100,
  "unlimited_quota": false,
  "model_limits_enabled": false,
  "expires_at": 0
}

계정 엔드포인트는 페이로드를 한 겹 감쌉니다. 페이지 단위 엔드포인트는 두 겹으로 감쌉니다.

json
{ "success": true, "message": "", "data": { ... } }

{ "success": true, "message": "", "data": {
    "page": 1, "page_size": 20, "total": 137, "items": [ ... ]
} }

공개 카탈로그 엔드포인트는 예외로, 래퍼 없이 객체를 그대로 반환합니다.

대부분의 실패도 HTTP 200으로 응답하며, success가 false가 되고 이유를 설명하는 메시지가 함께 옵니다. 상태 코드가 아니라 이 필드를 확인하십시오.

인증만은 예외로 실제 상태 코드를 반환합니다. 자격 증명이 잘못되면 401과 AUTH_UNAUTHORIZED, 만료되었으면 AUTH_TOKEN_EXPIRED, 로그아웃한 뒤에는 AUTH_SESSION_REVOKED이며, 계정에 해당 라우트를 호출할 권한이 없으면 403과 AUTH_INSUFFICIENT_PRIVILEGE입니다.