SumoRouter
SumoRouter Admin API

Models

Server

The model catalog synced from Sumopod, sell prices, capabilities and availability.


List models

GET
https://ai.brandkamu.id/api/admin
/models

Every model in the catalog (active or not), ordered by owner then slug. Not paginated.

List models › Responses

All models.

id
​string · uuid · required
slug
​string · required

Model id used in API requests, e.g. anthropic/claude-sonnet-4.5.

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

Sell price per 1M prompt tokens, nano-USD.

completion_price_nano
​integer · int64 · required

Sell price per 1M completion tokens, nano-USD.

cache_read_price_nano
​integer | null · int64 · required

Sell price per 1M cached prompt tokens, nano-USD; null bills them at the prompt price.

cost_prompt_price_nano
​integer | null · int64 · required

Sumopod cost per 1M prompt tokens, nano-USD.

cost_completion_price_nano
​integer | null · int64 · required

Sumopod cost per 1M completion tokens, nano-USD.

cost_cache_read_price_nano
​integer | null · int64 · required

Sumopod cost per 1M cached tokens, nano-USD.

is_active
​boolean · required

Offered to users.

upstream_available
​boolean · required

Still listed by Sumopod.

synced_at
​string | null · date-time · required
reasoning
​boolean | null · required

Admin override; null = automatic.

vision
​boolean | null · required

Admin override; null = automatic.

probed_reasoning
​boolean | null · required

Probe result; null = not probed or inconclusive.

probed_vision
​boolean | null · required
probed_at
​string | null · date-time · required
supports_reasoning
​boolean · required

Effective value (override, else automatic).

supports_vision
​boolean · required
auto_reasoning
​boolean · required

What automatic mode resolves to (probe, else name-based).

auto_vision
​boolean · required
mode
​string | null · enum · required

Admin override; null = detected.

Enum values:
chat
embedding
decision
auto_mode
​string · enum · required
Enum values:
chat
embedding
decision
effective_mode
​string · enum · required
Enum values:
chat
embedding
decision

Sync models from Sumopod

POST
https://ai.brandkamu.id/api/admin
/models/sync

Pulls Sumopod's model list and cost prices into the catalog. Models Sumopod no longer lists are marked unavailable and switched off. Capability probes for never-probed models start in the background (see GET /models/probe-status).

Sync models from Sumopod › Responses

Sync result.

total
​integer · required

Models in Sumopod's list.

added
​integer · required
updated
​integer · required
unavailable
​integer · required

Models no longer listed by Sumopod; switched off.


Apply a markup to sell prices

POST
https://ai.brandkamu.id/api/admin
/models/markup

Sets sell prices to Sumopod cost × (1 + percent / 100), rounded, for every model with a known prompt and completion cost (the cache-read price follows the cache-read cost, null if unknown).

Apply a markup to sell prices › Request Body

percent
​number · min: -100 · max: 10000 · required

Markup in percent.

only_unpriced
​boolean

Only touch models whose prompt and completion sell prices are both 0.

Default: false

Apply a markup to sell prices › Responses

Number of models updated.

updated
​integer · required

Enable or disable many models

POST
https://ai.brandkamu.id/api/admin
/models/active

Enables or disables the given models. When enabling, models without a sell price or no longer offered by Sumopod are skipped. Unknown ids count as skipped.

Enable or disable many models › Request Body

ids
​string[] · required
is_active
​boolean · required

Enable or disable many models › Responses

Counts.

updated
​integer · required
skipped
​integer · required

Update a model

PUT
https://ai.brandkamu.id/api/admin
/models/{id}

Sets a model's display name, description, sell prices, active flag and capability/mode overrides. name, both sell prices and is_active are always written; cache_read_price_nano is also always written, so omitting it clears it (cached tokens are then billed at the prompt price). reasoning, vision and mode keep their current value when omitted.

A model can't be enabled with both sell prices at 0, or when Sumopod no longer offers it (400).

Update a model › path Parameters

id
​string · uuid · required

Model id (not the slug).

Update a model › Request Body

name
​string · minLength: 1 · required
prompt_price_nano
​integer · int64 · min: 0 · required

Sell price per 1M prompt tokens, in nano-USD (1 USD = 1_000_000_000).

completion_price_nano
​integer · int64 · min: 0 · required

Sell price per 1M completion tokens, in nano-USD.

is_active
​boolean · required
description
​string
Default:
cache_read_price_nano
​integer | null · int64 · min: 0

Sell price per 1M cached prompt tokens, in nano-USD. null or omitted bills them at the prompt price.

reasoning
​string · enum

Thinking support override; auto uses the probe result, else name-based detection. Omitted keeps the current value.

Enum values:
auto
on
off
vision
​string · enum

Image-input support override. Omitted keeps the current value.

Enum values:
auto
on
off
mode
​string · enum

Which API the model serves; auto detects it from the slug. Omitted keeps the current value.

Enum values:
auto
chat
embedding
decision

Update a model › Responses

The updated model.

id
​string · uuid · required
slug
​string · required

Model id used in API requests, e.g. anthropic/claude-sonnet-4.5.

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

Sell price per 1M prompt tokens, nano-USD.

completion_price_nano
​integer · int64 · required

Sell price per 1M completion tokens, nano-USD.

cache_read_price_nano
​integer | null · int64 · required

Sell price per 1M cached prompt tokens, nano-USD; null bills them at the prompt price.

cost_prompt_price_nano
​integer | null · int64 · required

Sumopod cost per 1M prompt tokens, nano-USD.

cost_completion_price_nano
​integer | null · int64 · required

Sumopod cost per 1M completion tokens, nano-USD.

cost_cache_read_price_nano
​integer | null · int64 · required

Sumopod cost per 1M cached tokens, nano-USD.

is_active
​boolean · required

Offered to users.

upstream_available
​boolean · required

Still listed by Sumopod.

synced_at
​string | null · date-time · required
reasoning
​boolean | null · required

Admin override; null = automatic.

vision
​boolean | null · required

Admin override; null = automatic.

probed_reasoning
​boolean | null · required

Probe result; null = not probed or inconclusive.

probed_vision
​boolean | null · required
probed_at
​string | null · date-time · required
supports_reasoning
​boolean · required

Effective value (override, else automatic).

supports_vision
​boolean · required
auto_reasoning
​boolean · required

What automatic mode resolves to (probe, else name-based).

auto_vision
​boolean · required
mode
​string | null · enum · required

Admin override; null = detected.

Enum values:
chat
embedding
decision
auto_mode
​string · enum · required
Enum values:
chat
embedding
decision
effective_mode
​string · enum · required
Enum values:
chat
embedding
decision

Probe a model's capabilities

POST
https://ai.brandkamu.id/api/admin
/models/{id}/probe

Re-checks one model's reasoning and vision support against Sumopod now. Needs the Sumopod AI API key (400 otherwise).

Probe a model's capabilities › path Parameters

id
​string · uuid · required

Model id (not the slug).

Probe a model's capabilities › Responses

The model with updated probe results.

id
​string · uuid · required
slug
​string · required

Model id used in API requests, e.g. anthropic/claude-sonnet-4.5.

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

Sell price per 1M prompt tokens, nano-USD.

completion_price_nano
​integer · int64 · required

Sell price per 1M completion tokens, nano-USD.

cache_read_price_nano
​integer | null · int64 · required

Sell price per 1M cached prompt tokens, nano-USD; null bills them at the prompt price.

cost_prompt_price_nano
​integer | null · int64 · required

Sumopod cost per 1M prompt tokens, nano-USD.

cost_completion_price_nano
​integer | null · int64 · required

Sumopod cost per 1M completion tokens, nano-USD.

cost_cache_read_price_nano
​integer | null · int64 · required

Sumopod cost per 1M cached tokens, nano-USD.

is_active
​boolean · required

Offered to users.

upstream_available
​boolean · required

Still listed by Sumopod.

synced_at
​string | null · date-time · required
reasoning
​boolean | null · required

Admin override; null = automatic.

vision
​boolean | null · required

Admin override; null = automatic.

probed_reasoning
​boolean | null · required

Probe result; null = not probed or inconclusive.

probed_vision
​boolean | null · required
probed_at
​string | null · date-time · required
supports_reasoning
​boolean · required

Effective value (override, else automatic).

supports_vision
​boolean · required
auto_reasoning
​boolean · required

What automatic mode resolves to (probe, else name-based).

auto_vision
​boolean · required
mode
​string | null · enum · required

Admin override; null = detected.

Enum values:
chat
embedding
decision
auto_mode
​string · enum · required
Enum values:
chat
embedding
decision
effective_mode
​string · enum · required
Enum values:
chat
embedding
decision

Get background probe status

GET
https://ai.brandkamu.id/api/admin
/models/probe-status

Whether background capability probes (started by a sync) are still running.

Get background probe status › Responses

Probe status.

running
​boolean · required