{% extends "base.html" %} {% block title %}Routing - Janus{% endblock %} {% block routing_active %}bg-gray-700 text-white{% endblock %} {% block content %}

Routing & Rotation

{{ overview.rotation_note }}

Manage keys
{% if overview.cooldown_count > 0 %}
{{ overview.cooldown_count }} account(s) are in cooldown after recent errors and are skipped until the timer expires.
{% endif %}

Provider account pools

{% if overview.providers %} {% for provider in overview.providers %}

{{ provider.prefix }}

Gateway provider {{ provider.id }} · inventory {{ provider.inventory_provider_id }}

{{ provider.account_count }} routable account(s)

{% if provider.models %}

Models: {{ provider.models | join(', ') }}

{% endif %}
{% if provider.accounts %}
    {% for account in provider.accounts %}
  1. {{ account.order }}
    try order
    {{ account.key_masked }} {% if account.key_label %} {{ account.key_label }} {% endif %} priority {{ account.priority }} {% if account.source == 'config' %} static config {% endif %}

    account {{ account.account_id }}

    {% if account.credits_remaining is not none %}

    ${{ "%.2f"|format(account.credits_remaining) }}

    {% endif %} {% if account.cooldown_active %}

    cooldown ~{{ account.cooldown_seconds | int }}s

    {% else %}

    available

    {% endif %}
    {% if account.key_id %} {% endif %}
  2. {% endfor %}
{% else %}
No routable accounts. Add keys in Key Inventory or configure a provider API key.
{% endif %}
{% endfor %} {% else %}
No enabled gateway providers. Add a provider.
{% endif %}

Combo fallback chains

When a client sends model: "combo-name", models are tried left-to-right.

{% if overview.combos %}
{% for combo in overview.combos %}

{{ combo.name }}

    {% for model in combo.models %}
  1. {{ loop.index }} {{ model }} {% if not loop.last %} → fallback {% endif %}
  2. {% endfor %}
{% endfor %}
{% else %}
No combos configured. Create one.
{% endif %}
{% endblock %}