신규어떤 에이전트든 UberLLM에 연결하세요. 키 하나로 모든 모델을 공식 가격 이하로 사용할 수 있습니다.
UberLLM

모델 및 라우팅

UberLLM은 요청하신 모델에 대해 각 요청을 사용 가능한 타사 제공업체로 보냅니다. 제공업체가 응답을 시작하기 전에 실패하면 요청은 재시도되며, 여전히 실패하는 요청은 청구되지 않습니다. 각 요청은 제공업체가 청구한 금액으로 청구되며, UberLLM 수수료는 추가되지 않고 대시보드 → 활동에 비용과 함께 표시됩니다. 제공업체가 아닌 모델을 선택합니다.

모델 ID

카탈로그에서 모델 ID를 사용하세요. 예를 들어 deepseek/deepseek-v4-flash, anthropic/claude-sonnet-5 또는 z-ai/glm-5.3입니다. 지금 바로 호출할 수 있는 목록입니다:

  • GET https://api.uberllm.dev/v1/models: 지금 바로 요청을 보낼 수 있는 채팅 모델입니다. 따라서 이 목록에서 모델 메뉴를 채우는 도구(SillyTavern, LibreChat, n8n, Cline)는 채팅 가능한 모델만 표시합니다. 다른 종류의 경우 ?type=video (또는 image, music, speech, transcription, audio (둘 다 해당), chat, 쉼표로 연결된 여러 개)를 추가하거나, 모든 모델의 경우 ?type=all을 추가하세요. 채팅 먼저, 그 다음 이미지, 비디오, 음악, 음성 및 전사 순입니다. 각 항목에는 type (chat, image, video, music, speech, transcription), endpoints (이를 제공하는 경로) 및 pricing이 있습니다.
  • 각 채팅 모델은 또한 무엇을 할 수 있는지 알려줍니다: context_length, max_output_tokens, input_modalities (image = 그림을 읽습니다), supports_tools, supports_reasoning, supports_vision 및 supported_parameters (존중하는 요청 필드). 동일한 정보는 OpenRouter의 이름으로도 제공됩니다 (architecture.input_modalities, top_provider.context_length, top_provider.max_completion_tokens, 그리고 토큰당 pricing.prompt / pricing.completion 달러). 따라서 OpenRouter 목록용으로 구축된 도구는 저희 목록을 그대로 읽습니다.
  • GET https://api.uberllm.dev/v1/models/<model id>: 하나의 모델, 가격, 컨텍스트(채팅) 그리고 미디어 모델의 경우 parameters: 요청 본문의 JSON Schema (비디오 또는 이미지 만들기] 참조).
  • 두 답변의 모든 항목에는 다음도 포함됩니다:
    • available: 요청이 지금 바로 처리될 수 있을 때 true. false은 현재 아무도 서비스를 제공하고 있지 않음을 의미하므로, 요청은 no_available_provider로 거부됩니다. 다른 모델을 선택하거나 나중에 다시 시도하세요.
    • input_modalities: 모델이 받는 입력. 그림이 필요한 모델 (이미지-비디오, 참조-비디오, 그림 편집)은 "text" 옆에 "image"을 나열합니다. 비디오를 받는 모델(업스케일링)은 "video"을 나열합니다.
    • nsfw: 성인 또는 필터링되지 않은 콘텐츠용으로 제작된 모델(Lustify, "검열되지 않은" 모델 등)의 경우 true. 제품이 업무에 안전해야 하는 경우 이 모델들은 건너뛰세요.
  • 공개, 키 없음: GET https://api.uberllm.dev/api/v1/public/models (가격 및 동일한 available, input_modalities, nsfw 필드 포함)
  • 웹: uberllm.dev/#models], 그리고 uberllm.dev/models/<model id>의 모델별 페이지

모든 요청에서 발생하는 일

  1. UberLLM은 모델이 존재하는지, 프롬프트가 컨텍스트 창에 맞는지, 그리고 요청에 도구가 사용될 경우 해당 도구를 지원하는지 확인합니다.
  2. 잔액에서 예상 비용을 예약하고 요청을 전달합니다.
  3. 요청은 해당 모델에 사용 가능한 제공업체로 전송됩니다. 각 호출마다 제공업체가 다시 선택됩니다: 프롬프트 크기에 맞춰 충분히 빠르게 응답을 시작하는 가장 저렴한 제공업체(측정된 가장 빠른 속도에서 2x 이내이거나 1초 미만). 긴 스트리밍 프롬프트는 첫 번째 제공업체가 시작이 느릴 경우 두 번째 빠른 제공업체로도 전송됩니다. 사용자는 하나의 응답을 받고 비용을 지불합니다. provider.only, ignore 또는 order에 제공업체를 지정하거나 sort을 설정하면 이 선택이 대체됩니다. 작동 방식: smart routing.
  4. 응답이 완료되면, UberLLM은 해당 호출에 대해 마켓플레이스가 보고하는 가격으로 정산하고 나머지 예약 금액을 해제합니다.

자동 재시도

콘텐츠가 사용자에게 도달하기 전에 호출이 실패하는 경우, UberLLM이 자동으로 재시도합니다. 마켓플레이스는 매 시도마다 판매자를 다시 매칭하며, 라우팅되기 전에 실패한 호출에 대해서는 요금을 청구하지 않으므로, 재시도는 시간만 소요됩니다.

  • 재시도됨: 현재 모델에 대한 판매자 없음 (no_sellers_for_model, no_healthy_sellers), 마켓플레이스가 라우팅할 시간을 초과함 (route_deadline_exceeded), 5초 이하로 기다리도록 요청하는 429, 모든 5xx, 연결 오류, 자체 공급자 키 또는 계정이 실패한 판매자, 또는 제때 첫 바이트를 받지 못함.
  • 재시도되지 않음: 모델이 존재하지 않거나, 요청이 유효하지 않거나, 결제 또는 인증 문제. 이러한 오류는 즉시 반환됩니다.
  • 일정: 최대 4회 시도, 시도 사이에 0.3초, 0.9초, 그리고 2.7초 대기 (또는 마켓플레이스가 보낸 Retry-After가 5초 이하인 경우). 아무도 모델을 판매하지 않을 경우, 몇 초 내에 응답이 반환됩니다.
  • 첫 바이트 대기: 스트림은 10초를 받습니다 (긴 프롬프트의 경우 더 길고, 일반적으로 느린 모델의 경우 더 깁니다). "stream": true가 없는 응답은 완료될 때까지 아무것도 도착하지 않으므로 85초를 받습니다. 전체 85초를 소진한 시도는 두 번째로 기다리지 않습니다. 150초 이후에는 재시도가 시작되지 않습니다.

스트리밍이 시작되면 아무것도 재시도되지 않습니다. 스트림 중간의 실패는 스트림을 종료시키며, 생성된 내용에 대해서만 요금이 청구됩니다.

모든 시도가 실패하면 응답 대신 오류가 발생하며, 예약은 완전히 해제됩니다. 일반적인 오류는 다음과 같습니다.

HTTP code 발생 시점
503 no_available_provider 재시도 후에도 현재 해당 모델을 제공할 수 있는 판매자가 없습니다. 판매자 없음, 모든 판매자가 실패하거나 시작이 너무 느림, 또는 provider 옵션으로 라우팅할 곳이 남아있지 않은 경우입니다. 메시지에 모델 이름이 명시됩니다. 잠시 후 다시 시도하거나 다른 모델을 선택하세요.
503 service_unavailable UberLLM 측의 일시적인 문제입니다. 몇 분 후에 다시 시도하세요.
404 model_not_found 모델 ID를 사용할 수 없습니다.

전체 목록은 오류]를 참조하세요.

대체 모델

첫 번째 모델을 제공할 수 없을 때, 시도할 다른 모델 ID 목록과 함께 models을(를) 순서대로 보내세요:

{ "model": "deepseek/deepseek-v4-flash",
  "models": ["z-ai/glm-5.3", "qwen/qwen3.6-plus"],
  "messages": [{ "role": "user", "content": "hi" }] }

다음 모델은 이전 모델을 지금 당장 제공할 수 있는 사람이 없을 때 (no_available_provider) 또는 provider.max_price 내에서 아무도 해당 모델을 판매하지 않을 때만 시도됩니다. 요청 오류(잘못된 본문, 두 필드 중 하나에 알 수 없는 모델 ID) 및 결제 거부(잔액, 키 제한)는 즉시 응답되며 목록 아래로 전달되지 않습니다. model와 models를 합쳐서 최대 5개의 모델. 응답의 model 필드와 활동(Activity) 행은 응답한 모델의 이름을 표시합니다. models은 /v1/chat/completions에서 작동하며 이미지, 비디오, 음악 및 음성 요청에서도 작동합니다. /v1/messages와 /v1/audio/transcriptions은 이를 읽지 않습니다.

모델 별칭

모델 ID 대신 필요한 것을 이름으로 지정할 수 있으며, UberLLM은 모든 요청에서 모델을 선택합니다:

  • best-price:<job>: 일반적인 요청 하나에 대해 가장 저렴한 가격의 사용 가능한 모델. 채팅 모델은 출력 토큰을 세 배로 계산한 백만 토큰당 가격으로 비교됩니다. 이미지 모델은 이미지 하나(메가픽셀당 가격이 책정될 경우 1024×1024 이미지 하나)로 비교됩니다. 비디오 모델은 가장 짧은 클립으로 비교됩니다. 음악 모델은 트랙 하나로 비교됩니다. 음성 모델은 1K자로 비교됩니다. 전사(transcription) 모델은 1분으로 비교됩니다.
  • fastest:<job>: 지난 7일 동안 UberLLM에서 성공적인 요청에 대한 중앙값 시간이 가장 짧은 모델(채팅의 경우 첫 토큰까지의 시간, 미디어의 경우 완료된 파일까지의 시간). 이러한 요청이 최소 5개 이상인 모델만 계산합니다. 충분한 모델이 없을 경우, 요청은 503 no_timing_data로 거부되며, best-price:은 여전히 작동합니다.

둘 다 현재 사용 가능한 모델 중에서만 선택합니다: 실시간 시장에 해당 모델의 건전한 판매자가 있고, 지난 10분 동안 UberLLM이 해당 모델에 보낸 마지막 요청에서 모든 판매자가 바쁘거나 다운되지 않았습니다(/v1/models의 available와 동일한 규칙입니다). 미디어 경로에서, 별칭이 선택한 모델이 결국 아무도 요청을 처리할 수 없다고 응답하면, 동일한 요청은 해당 별칭이 나타내는 다음 모델로 이동하며(최대 3개 모델), 응답의 model은 응답한 모델의 이름을 지정합니다. 작업에 사용할 수 있는 모델이 없을 경우, 응답은 503 no_available_provider이며 요금은 부과되지 않습니다.

<job>은 chat, image, image-edit, text-to-video, image-to-video, music, speech, transcription 중 하나입니다. 채팅 별칭은 /v1/chat/completions 또는 /v1/messages로 보내고, 미디어 별칭은 해당 미디어 경로로 보냅니다. 응답의 model 필드는 해결된 모델의 이름을 지정합니다. GET /v1/models/aliases은 현재 해결되는 모든 별칭과 해당 모델을 나열합니다. GET /v1/models/best-price:chat은 alias가 설정된 상태로 해당 모델을 설명합니다.

라우팅 옵션

provider 객체는 /v1/chat/completions에서 읽습니다. UberLLM이 적용할 수 없는 옵션은 400 unsupported_routing_option로 거부되며 요금이 부과되지 않습니다. 따라서 설정이 조용히 무시된 채로 요청이 실행되는 일은 없습니다.

옵션 설명
only / allow 이 라우트 또는 제공업체만 사용합니다. uberllm (UberLLM의 마켓플레이스 라우트) 및 seller (판매자 자체 제공)는 당사의 라우트 중에서 선택합니다. openai 또는 api.venice.ai과 같은 다른 이름은 마켓플레이스의 제공업체입니다. 이 경우 요청은 해당 제공업체의 제안만 사용하는 uberllm 라우트를 통해 진행됩니다.
ignore / deny 이것들은 절대 사용하지 않습니다. 라우트 이름은 위와 같습니다. 제공업체 이름(최대 32개)은 마켓플레이스에서 거부되며, 요청은 uberllm 라우트를 통해 진행됩니다.
order 선호하는 순서입니다. 라우트 이름은 당사의 라우트 순서를 정하고, 제공업체 이름은 마켓플레이스의 시도 순서를 설정합니다. 이는 제공업체를 적격 또는 부적격으로 만들지 않습니다.
sort price (기본값), latency (가격 대역 내에서 가장 빠른 것을 먼저), 또는 uptime (동일 대역 내에서 가장 신뢰할 수 있는 것을 먼저)입니다. throughput은 당사의 라우트만 정렬합니다.
max_price 백만 토큰당 지불하는 최대 금액(미국 달러): { "prompt": 1.0, "completion": 3.0 }. 이보다 비싼 라우트는 건너뜁니다. 마켓플레이스 라우트는 모델의 정가보다 사용자의 상한선이 필요한 만큼 낮게 판매자에게 유지됩니다. 남은 것이 없으면 요청은 400 max_price_exceeded로 거부되며 요금이 부과되지 않습니다. prompt와 completion을 모두 설정하면, 요청은 사용된 토큰에 대해 이 금액을 초과하여 청구되지 않습니다.
allow_fallbacks false는 위의 자동 재시도를 끕니다. 첫 번째 실패가 사용자에게 반환됩니다.
data_collection "allow" (기본값)만 허용됩니다.
zdr, require_parameters false만 허용됩니다.

:floor 및 :nitro 모델 접미사는 허용되며 모델 ID에서 제거됩니다. :floor은 가격별로 정렬하고 :nitro는 처리량별로 정렬합니다.

이미지, 비디오, 음악 및 음성의 경우, 각 요청은 모델에 대해 사용 가능한 타사 제공업체로 전송됩니다. provider.max_price는 한 단위(이미지, 초, 메가픽셀, 분, 1K자 또는 요청)가 비용으로 지불될 수 있는 최대 금액을 숫자로 나타냅니다: { "max_price": 0.05 }; 이는 또한 청구 금액을 제한합니다. 다른 모든 provider 옵션은 미디어에 대해 거부됩니다.

태그

모든 요청에 metadata을(를) 보내세요. 이는 최대 16개의 텍스트 값(콜론 없이 최대 64자까지의 키, 최대 512자까지의 값)으로 구성된 객체입니다.

{ "model": "deepseek/deepseek-v4-flash", "messages": [...],
  "metadata": { "project": "spring-ads", "run": "42" } }

태그는 요청과 함께 저장되며, 공급자에게는 절대 전송되지 않습니다. 이 태그는 대시보드 → 활동의 요청, 비디오 또는 음악 작업 상태, 그리고 CSV 내보내기(metadata 열)에 표시됩니다. GET /api/v1/usage/activity?tag=project:spring-ads을(를) 사용하여 태그별로 활동을 필터링할 수 있습니다(여러 개를 지정하려면 tag을(를) 반복하세요). CSV 링크에도 동일한 필터가 적용됩니다. /v1/messages에서는 Anthropic 자체의 metadata({"user_id": "…"})이(가) 동일한 방식으로 저장됩니다.