9router / wiki
Models & providers

Sumopod with 9Router: keys and API setup

Prepare a Sumopod AI key, check balance and model restrictions, and evaluate an OpenAI-compatible connection in 9Router with clear authentication and billing checks.

5 min readSources reviewed Independent guide

Connect Sumopod to 9Router as a custom OpenAI-compatible Chat Completions provider at https://ai.sumopod.com/v1. First obtain a Sumopod AI key and an allowed model, then save both in the router connection. Sumopod’s documentation requires an AI Balance to create a key; 9Router does not supply that balance.

This guide covers text chat. Sumopod’s current compatibility page describes text generation; it does not establish image support or every coding-agent feature. The steps were source-reviewed on October 23, 2026, without a paid inference test.

Get an AI key with access to the selected model

In Sumopod, open AI → API Keys → + API Key. Give the key a recognizable name. Review any per-key credit limit and model restrictions, then select a model that the key is allowed to call. Copy its exact API identifier from the AI dashboard, not just its display name.

Before adding funds, check the provider’s current charges. A positive account balance does not override a lower per-key limit. Keep the key private; the router stores this upstream credential, while clients use a separate router key.

Make a direct text request

For this Bash/zsh example install curl and jq, set SUMOPOD_API_KEY locally and set SUMOPOD_MODEL to the allowed identifier. The OpenAI-compatible SDK convention uses a Bearer API key; consult your account’s AI Quick Start if its generated authorization differs.

jq -n --arg model "$SUMOPOD_MODEL" \
  '{model:$model,messages:[{role:"user",content:"Write one short sentence about rain."}],stream:false}' \
  > /tmp/sumopod-direct-probe.json
curl --fail-with-body -i https://ai.sumopod.com/v1/chat/completions \
  -H "Authorization: Bearer $SUMOPOD_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @/tmp/sumopod-direct-probe.json

This request can consume balance. Look for a successful chat body with choices and check account usage. If it fails, inspect the returned reason: invalid credential, depleted balance, per-key restriction and unknown model require different changes. Fix that direct failure before configuring the gateway.

Configure and persist the Sumopod connection

In 9Router choose Providers → Custom Providers (OpenAI/Anthropic Compatible) → Add OpenAI Compatible.

FieldValue
NameSumopod AI
Prefixsumopod-local (example; keep it unique)
API TypeChat Completions
Base URLhttps://ai.sumopod.com/v1
API Key (for Check)Sumopod key, only if checking now
Model ID for checkThe same allowed ID used in the direct test

Choose API Type before entering the URL, because changing type resets it. Check can send a model request when /models discovery fails and may consume balance. It is optional, and its key field is not persisted by Create.

After Create, open the node and click Add API Key. Enter a connection Name, the actual Sumopod API Key, and Default Model matching SUMOPOD_MODEL, then Save. In the node’s model section, try Import from /models. If the provider does not expose a usable list, enter the exact allowed model ID and click Add. Copy that row’s full local ID, including the sumopod-local/ prefix.

Repeat the same request locally

Set NINEROUTER_API_KEY to the router-issued key and ROUTER_MODEL to that copied ID. Change only the model identifier, endpoint and authentication from the direct test:

curl --fail-with-body --noproxy '*' http://localhost:20128/v1/models \
  -H "Authorization: Bearer $NINEROUTER_API_KEY"
jq --arg model "$ROUTER_MODEL" '.model = $model' \
  /tmp/sumopod-direct-probe.json > /tmp/sumopod-router-probe.json
curl --fail-with-body --noproxy '*' -i \
  http://localhost:20128/v1/chat/completions \
  -H "Authorization: Bearer $NINEROUTER_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @/tmp/sumopod-router-probe.json

Success means a complete chat response and a matching Sumopod route in the router’s request record. A listed model alone does not prove inference or billing success. Match the account usage timestamp when checking charges.

Resolve the first difference

Direct/local resultNext action
Direct fails with a balance or key-limit errorResolve the named Sumopod limit; restarting 9Router does not replenish it
Direct works, local 401Determine whether local authentication or the saved upstream key was rejected
Direct works, local model errorCompare Default Model with the upstream ID and the client request with the copied prefixed ID
Node created but no active routeFinish Add API Key → Save and add/import a model
Both text probes work, coding client failsCompare the client’s API shape and tool parameters; chat compatibility alone does not prove Responses support

Test streaming and one harmless tool task separately before enabling an unattended agent. Add Sumopod to a fallback combo only after its standalone route works. To undo the test, restore the client’s previous base URL, key and model together; revoke the dedicated Sumopod test key if it is no longer needed.

CHECK THE SOURCE

References for this guide

Steps were checked against the linked documentation and source. Provider access and model availability depend on your account. We do not claim a completed live model test unless explicitly stated.

Continue from here

Find the failing layerDiagnose a failed request9Router proxy: endpoints, keys, and errors9Router proxy: endpoints, keys, and errorsOpenRouter with 9Router: connect or use directlyOpenRouter with 9Router: connect or use directly

Search the Wiki

Search stays in your browser. Press Escape to close.