Agnai + minirouter

Draft configuration for Agnai's third-party OpenAI-compatible preset, self-hosted or on agnai.chat.

Base URLhttps://api.minirouter.sh/v1
Get a keyhttps://minirouter.sh/key
Get a key — no account

Settings

Settings → AI Settings → third-party / OpenAI-compatible preset

In order

  1. ServiceThird Party / OpenAI compatible
  2. Third Party URLhttps://api.minirouter.sh/v1

    Never append /chat/completions — Agnai adds the path itself.

  3. Third Party Key / Passwordmr-live-… (your key)
  4. Modelmeta/llama-3.3-70b
Verify outside Agnai first — one request, literal values
curl https://api.minirouter.sh/v1/chat/completions \
  -H "Authorization: Bearer $MINIROUTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"meta/llama-3.3-70b","messages":[{"role":"user","content":"ping"}]}'

Draft candidates · 4 models

All models →
  • Modelnousresearch/hermes-4-70b
    WhyInstruction-following candidate that holds a persona across a long thread.
  • Modelsao10k/l3.3-euryale-70b
    WhyProse-oriented candidate. Single upstream — see the note on the roleplay facet.
  • Modelmeta/llama-3.3-70b
    WhyGeneral-purpose prose candidate.
  • Modelmistral/mistral-small-3.2
    WhySmaller-model candidate for frequent regeneration.

Only rows confirmed in the current live catalog are linked. A plain row is a draft recommendation, not a claim that the model is currently available. Paste ids exactly as written, author/name.

When it fails

  • Symptom404, HTML, or a parse error on every request
    Codeinvalid_request

    Almost always the base URL. Use https://api.minirouter.sh/v1 — the bare host without /v1 also works, but never append /chat/completions to the base URL field; the client adds that path itself. docs/errors#invalid_request

  • Symptom401 on every request
    Codeinvalid_api_key

    Wrong or rotated key. Keys start with mr-live-; after a rotation the old key keeps working for 24 hours, then dies. docs/errors#invalid_api_key

  • SymptomWorks self-hosted, fails on the hosted instance
    Codeclient-side

    The hosted app makes the request from its own servers. Nothing on our side distinguishes the two — check the preset is actually selected for the character you are chatting with, since Agnai stores a preset per character.

  • SymptomResponse stops mid-sentence with a credits message
    Codeinsufficient_credits

    Balance hit $0 mid-stream. The stream ends with a terminal error naming the exact charge for tokens delivered — never a silent close. docs/errors#insufficient_credits

Every API error string carries a URL resolving to /docs/errors.

Other roleplay frontends

Why this workload bills the way it does, what it costs to contain, and which models suit it: /use/roleplay.

Agent setup: /setup · API reference: /docs