SumoRouter
SumoRouter Customer API

Error

OpenAI-style error body.
​object · required

AnthropicErrorBody

type
​string · const · required
Const value: error
​object · required

PassthroughObject

Provider-compatible JSON object passed through from the upstream (with `model` set to the catalog slug and `usage.cost` added in USD).

ChatMessage

role
​string · enum · required
Enum values:
system
developer
user
assistant
tool
​

Text, or an array of content parts (text, image_url, …).

name
​string
​object[]
tool_call_id
​string

ChatCompletionRequest

OpenAI Chat Completions request. Only the commonly used fields are listed; other OpenAI fields are passed through.
model
​string · required

Model slug from GET /v1/models (a model with mode chat).

​ChatMessage[] · minItems: 1 · required
stream
​boolean

Stream server-sent events. stream_options.include_usage is forced on.

Default: false
max_tokens
​integer

Output limit; lowered automatically when your credit can't cover it.

max_completion_tokens
​integer

Output limit (preferred over max_tokens when both are set); lowered automatically when your credit can't cover it.

temperature
​number
top_p
​number
n
​integer

Number of choices; each is reserved and billed.

​
seed
​integer
presence_penalty
​number
frequency_penalty
​number
​object[]

Function tools. Provider-hosted tools (web search, code interpreter, MCP, …) are refused.

​
parallel_tool_calls
​boolean
​object

{"type":"json_object"} or a json_schema.

reasoning_effort
​string

low, medium or high on models with supports_reasoning.

logprobs
​boolean
top_logprobs
​integer
​object

ChatCompletion

OpenAI `chat.completion` object. `model` is the catalog slug; `usage.cost` is the billed amount in USD.
id
​string
object
​string
created
​integer
model
​string
​object[]
​object

ResponsesRequest

OpenAI Responses request. Other Responses fields are passed through.
model
​string · required
​required

Text, or a list of input items (input_text, input_image, …). Must not be empty.

instructions
​string
stream
​boolean
Default: false
max_output_tokens
​integer

Output limit; lowered automatically when your credit can't cover it.

​object

{"effort": "low"} on reasoning models.

​object[]
tool_choice
​
​object
temperature
​number
top_p
​number
previous_response_id
​string

Only ids of responses previously returned to your own account.

store
​boolean

MessagesRequest

Anthropic Messages request. Fields not listed are ignored.
model
​string · required

Any chat model slug; dated Claude names map to the catalog slug.

​object[] · minItems: 1 · required
max_tokens
​integer

Required by Anthropic SDKs; lowered automatically when your credit can't cover it.

​

System prompt; text blocks may carry cache_control (kept for claude* models).

stream
​boolean
Default: false
temperature
​number
top_p
​number
stop_sequences
​string[]
​object[]

Client tools with name, description, input_schema.

​object

{"type": "auto" | "any" | "none" | "tool", "name"?, "disable_parallel_tool_use"?}

​object

{"type": "enabled", "budget_tokens": N} or {"type": "adaptive"}; used on reasoning models only.

AnthropicMessage

id
​string
type
​string · const
Const value: message
role
​string · const
Const value: assistant
model
​string
​object[]

thinking, text and tool_use blocks.

stop_reason
​string · enum
Enum values:
end_turn
max_tokens
tool_use
refusal
stop_sequence
​null
​object

EmbeddingsRequest

model
​string · required

An embedding model (mode embedding).

​required

One text or a list of texts. Must not be empty.

dimensions
​integer

Shorter vectors, where the model supports it.

encoding_format
​string

DecisionsRequest

model
​string · required
​required

The text to judge, or messages with input_text parts.

​object[] · required

Questions of type predicate, choice (with choices) or score (with levels). Answers come back in the same order.

DecisionsResponse

model
​string
​object[]
​object

SystemOneRequest

model
​string · required
state
​required

The text or state to judge.

​object · required

Named questions, each {"type": "noul" | "choice" | "score", "instructions": …}.

Model

A catalog model (dashboard format). Prices are nano-USD per 1M tokens.
slug
​string · required

The id to send as model.

name
​string · required
description
​string · required
owned_by
​string · required
context_length
​integer · required
prompt_price_nano
​integer · int64 · required

Input price, nano-USD per 1M tokens.

completion_price_nano
​integer · int64 · required

Output price, nano-USD per 1M tokens.

cache_read_price_nano
​integer | null · int64 · required

Cached-input price, nano-USD per 1M tokens; null = same as the input price.

created
​integer · int64 · required

Unix seconds when the model was added.

mode
​string · enum · required

Which endpoints the model works on.

Enum values:
chat
embedding
decision
supports_reasoning
​boolean · required

Accepts reasoning_effort (thinking).

supports_vision
​boolean · required

Accepts image input.

OpenAIModel

id
​string · required
object
​string · const · required
Const value: model
created
​integer · int64 · required
owned_by
​string · required
name
​string · required
description
​string · required
context_length
​integer · required
supports_reasoning
​boolean · required
supports_vision
​boolean · required
mode
​string · enum · required
Enum values:
chat
embedding
decision
​object · required

USD per token, as decimal strings with 12 decimals.

OpenAIModelList

object
​string · const · required
Const value: list
​OpenAIModel[] · required

AnthropicModelList

​object[] · required
has_more
​boolean · required
first_id
​string | null
last_id
​string | null

SessionToken

token
​string · required

Session token (JWT, valid 7 days). Send as Authorization: Bearer <token>.

VerificationRequired

verification_required
​boolean · const · required
Const value:
email
​string · email · required

MfaChallenge

token
​string · required

The mfa_token for /api/auth/mfa/setup and /api/auth/mfa/verify (43 characters, valid 10 minutes).

setup
​boolean · required

True when the user has no 2FA yet and must enrol first (admins).

MfaSetupInfo

secret
​string · required

Base32 secret in groups of 4 characters, for manual entry.

otpauth_uri
​string · required

otpauth://totp/… URI.

qr_svg
​string · required

SVG markup of the QR code for otpauth_uri.

account
​string · required

The user's email.

issuer
​string · required

The site name.

CodeRequest

code
​string · required

6-digit authenticator code (or a recovery code where accepted).

EmailRequest

email
​string · email · required
turnstile_token
​string | null

Cloudflare Turnstile response, when enabled.

AuthMethods

email_password
​boolean · required

Email/password sign-in is enabled.

registration
​boolean · required

New accounts can sign up.

google
​boolean · required

Google sign-in is configured and enabled.

turnstile_site_key
​string | null · required

Cloudflare Turnstile site key when the security check is on; then send turnstile_token on login, register, resend-verification and forgot-password.

Me

id
​string · uuid · required
email
​string · email · required
name
​string · required
is_admin
​boolean · required
balance_nano
​integer · int64 · required

Credit balance in nano-USD (1 USD = 1,000,000,000). Includes credit currently reserved by in-flight requests as already spent.

mfa_enabled
​boolean · required

Two-factor authentication is set up.

has_password
​boolean · required

Can sign in with a password (Google-only accounts can't).

google_linked
​boolean · required
created_at
​string · date-time · required

NotificationPrefs

low_balance_alert
​boolean · required
low_balance_threshold_nano
​integer | null · int64 · required

Custom threshold in nano-USD; null uses the default.

default_threshold_nano
​integer · int64 · required

The default threshold (1 USD = 1000000000).

Branding

site_name
​string · required
site_url
​string · uri · required
icon_url
​string | null · required

Versioned path such as /api/branding/icon?v=3; null = use the built-in logo.

timezone
​string · required

IANA time zone for usage dates and charts.

ApiKeyRequest

Settings for create and update. On update the whole object replaces the current settings.
name
​string · minLength: 1 · maxLength: 100 · required
credit_limit_nano
​integer | null · int64 · min: 0

Spend cap in nano-USD (per budget period, if set). null = no cap beyond the account balance.

budget_period
​string | null · enum

Resets the key's spend each period (in the site time zone). Requires credit_limit_nano.

Enum values:
daily
weekly
monthly
allowed_models
​array | null · maxItems: 200

Model slugs this key may use. null or empty = all models.

expires_at
​string | null · date-time

Must be in the future.

allowed_ips
​array | null · maxItems: 50

IP addresses or CIDR ranges (203.0.113.7, 10.0.0.0/8, 2001:db8::/32). null or empty = any address.

rpm_limit
​integer | null · min: 1

Requests per minute for this key, up to the account limit. null = the default per-key limit.

max_parallel
​integer | null · min: 1 · max: 1000

Requests in progress at once for this key.

redact_secrets
​boolean

Mask credentials (API keys, tokens, …) found in prompts before they are sent to the provider.

Default: false

ApiKey

id
​string · uuid · required
name
​string · required
key_prefix
​string · required

Masked key for display, e.g. sk-****abcd.

credit_limit_nano
​integer | null · int64 · required

Spend cap in nano-USD.

usage_nano
​integer · int64 · required

Spend in nano-USD in the current budget period (or ever, without a period).

allowed_models
​array | null · required
expires_at
​string | null · date-time · required
allowed_ips
​array | null · required
rpm_limit
​integer | null · required
max_parallel
​integer | null · required
budget_period
​string | null · enum · required
Enum values:
daily
weekly
monthly
budget_reset_at
​string | null · date-time · required

When the current budget period ends.

redact_secrets
​boolean · required
last_used_at
​string | null · date-time · required
created_at
​string · date-time · required

UsageLog

id
​string · uuid · required
model_slug
​string · required
provider_slug
​string · required
api_key_name
​string | null · required

null for playground requests.

prompt_tokens
​integer · required
completion_tokens
​integer · required
cached_tokens
​integer · required
cost_nano
​integer · int64 · required

Billed cost in nano-USD (0 for failed requests).

latency_ms
​integer · required
ttft_ms
​integer | null · required

Time to first token (streamed requests).

tps
​number | null · required

Output tokens per second, measured from the first token when streamed.

status_code
​integer · required
streamed
​boolean · required
source
​string · enum · required
Enum values:
api
playground
created_at
​string · date-time · required

UsageLogDetail

id
​string · uuid · required
upstream_id
​string | null · required

The provider's response id.

model_slug
​string · required
provider_slug
​string · required
api_key_name
​string | null · required
source
​string · enum · required
Enum values:
api
playground
streamed
​boolean · required
status_code
​integer · required
finish_reason
​string | null · required
prompt_tokens
​integer · required
completion_tokens
​integer · required
cached_tokens
​integer · required
cache_write_tokens
​integer · required
reasoning_tokens
​integer · required
cost_nano
​integer · int64 · required

Billed cost in nano-USD.

cost_breakdown
​object | null · required

Cost split in nano-USD.

latency_ms
​integer · required
ttft_ms
​integer | null · required
tps
​number | null · required
​object | null · required

Generation parameters and counts (e.g. stream, temperature, max_tokens, messages count, tools count, endpoint), never content.

error_type
​string | null · required

e.g. insufficient_credits, model_not_found, model_not_allowed, invalid_request, rate_limited, upstream_unavailable, stream_interrupted, or the provider's error type.

error_message
​string | null · required
client_ip
​string | null · required
user_agent
​string | null · required
started_at
​string · date-time · required
created_at
​string · date-time · required

When the request finished.

UsageSummary

bucket
​string · enum · required
Enum values:
hour
day
​object · required
​object[] · required
​object[] · required

Top 50 models by cost.

DailyUsage

day
​string · date · required
requests
​integer · int64 · required
tokens
​integer · int64 · required

Prompt + completion tokens.

cost_nano
​integer · int64 · required

nano-USD.

BillingConfig

enabled
​boolean · required

Top-ups can be created.

idr_per_usd
​integer · int64 · required

Rupiah per 1 USD of credit.

min_topup_idr
​integer · int64 · required
max_topup_idr
​integer · int64 · required
payment_method
​string · required

Topup

order_id
​string · required
amount_idr
​integer · int64 · required

Amount paid, whole Rupiah.

credit_nano
​integer · int64 · required

Credit added when paid, nano-USD.

status
​string · enum · required
Enum values:
pending
completed
failed
expired
payment_link_url
​string | null · uri · required

Hosted payment page.

payment_code
​string | null · required

QRIS payload to render as a QR code.

paid_at
​string | null · date-time · required
created_at
​string · date-time · required

TopupPage

​Topup[] · required
total
​integer · int64 · required
​Topup | null · required

Latest pending top-up, whatever page is shown.

completed
​integer · int64 · required

Paid top-ups in total.

Redemption

code
​string · required
credit_nano
​integer · int64 · required

nano-USD.

created_at
​string · date-time · required

Affiliate

enabled
​boolean · required

When false, no other field is present.

code
​string

The user's referral code (8 characters).

link
​string · uri

Sign-up link: <site>/register?ref=<code>.

commission_percent
​number
commission_months
​integer
referee_bonus_percent
​number
referrals
​integer · int64

Users who signed up through the link.

paying_referrals
​integer · int64

Referrals that earned the user a commission.

earned_nano
​integer · int64

Total commission earned, nano-USD.

​object[]

Latest 50 rewards.