One API Channel Update Memo (2026-07-31, revised)
What changed
Channel id=13 in One API (http://x162-43-92-249.tail9c4209.ts.net:3000/) was reconfigured.
| Field | Before | After |
|---|---|---|
name |
Nvidia-arcee-ai/trinity-large-thinking |
Nvidia-deepseek-ai/deepseek-v4-pro |
models |
arcee-ai/trinity-large-thinking |
deepseek-ai/deepseek-v4-pro |
model_mapping |
{trinity-large-thinking: …} |
{deepseek-v4pro: …} |
status |
2 (disabled) | 1 (enabled) |
type / base_url / key / group |
unchanged | unchanged |
This is now a third deepseek-ai/deepseek-v4-pro channel alongside ids 46 and 47. Reason: arcee-ai/trinity-large-thinking was unused (only 1 channel) and the deepseek-v4-pro routing needed extra capacity after photogeomap AI integration increased demand.
Subsequent migrations this session
After the channel 13 update, four model consolidations were performed in the same session, all via direct sqlite writes followed by a One API docker restart to flush the in-memory model cache.
1. All DeepSeek variants → deepseek-ai/deepseek-v4-pro (11 channels)
Migrated 9 channels (cid 17, 39-45, 47) from deepseek-ai/deepseek-v3.2 and the legacy alias deepseek-v4-pro to the canonical deepseek-ai/deepseek-v4-pro. Each channel has its own Nvidia API key, so this multiplies v4-pro capacity 3×→11×.
For the abilities table (One API’s per-channel model registry), channel 13’s row was also re-enabled — it had a stale arcee-ai/trinity-large-thinking entry with enabled=0.
2. minimaxai/minimax-m2.5 + minimaxai/minimax-m2.7 → minimaxai/minimax-m3 (13 channels)
Migrated 13 channels: cid 22 (m2.5) and cid 23-28, 30, 48-50, 56 (m2.7). Channel 29 (previously disabled m2.7) was re-enabled as m3 per explicit user instruction. m2.5 and m2.7 are now retired from the platform.
3. z-ai/glm-5.1 → z-ai/glm-5.2 (13 channels)
Migrated 13 channels (cid 31-38, 51-55). glm-5.2 was previously a single-channel outlier; now properly diversified across 14 channels.
4. qwen/qwen3-coder-480b-a35b-instruct → minimaxai/minimax-m3 (4 channels)
Migrated 4 channels (cid 15, 18, 19, 20). The qwen code-specialist model is no longer exposed via One API.
Current One API LLM inventory (final)
4 unique models across 53 enabled channels, all Nvidia NIM (integrate.api.nvidia.com/v1):
| Model | Channels | Notes |
|---|---|---|
minimaxai/minimax-m3 |
27 | primary workhorse |
z-ai/glm-5.2 |
14 | only glm variant now |
deepseek-ai/deepseek-v4-pro |
11 | unified from v3.2 + legacy alias |
nvidia/nemotron-3-super-120b-a12b |
1 | specialty model, unchanged |
Total disabled channels: 1 (the Groq channel with llama-3.3-70b-versatile, type=29). Total channels in db: 54.
How the updates were performed
Direct sqlite write, not the admin API. Reason: One API admin login was throttled after several failed /api/user/login attempts (rate-limit returns 用户名或密码错误,或用户已被封禁 even with correct password oneapi938). The bcrypt hash was verified correct against the sqlite row, so it was a lockout, not a wrong password.
Procedure (channel migration):
UPDATE channels
SET name = 'Nvidia-NEW-MODEL',
models = 'NEW-MODEL-ID',
model_mapping = '{\n "alias": "NEW-MODEL-ID"\n}',
status = 1
WHERE id = ?
UPDATE abilities
SET model = 'NEW-MODEL-ID', enabled = 1
WHERE channel_id = ?
For the channel 13 case, only the channels table needed updating. For the four subsequent migrations, the abilities table also had to be updated — see “Key discovery” below.
Key discovery: the abilities table
One API exposes models at /v1/models from the abilities table, not from channels.models. The channels.models field is for routing inbound requests to the correct channel; the abilities table controls what’s visible in the model listing and whether a model is enabled for a channel.
Initially after the channel 13 update, /v1/models continued to expose deepseek-ai/deepseek-v3.2 and the legacy deepseek-v4-pro alias — even though the container had been restarted and the channels table was correct. The abilities table was the culprit.
Even after a docker restart, One API’s /v1/models caches the abilities snapshot in memory. Each migration requires docker restart one-api after both tables are updated. Always update both channels and abilities in the same session, then restart.
Token cleanup
photogeomap-ai token (id=54, key xhLw…063c) had drifted into status=4 (quota exhausted) with remain_quota=0 and empty name=''. Reset via:
UPDATE tokens
SET remain_quota = 10000000,
used_quota = 0,
status = 1,
name = 'photogeomap-ai'
WHERE id = 54
Model-limits whitelist was also disabled (an empty whitelist was causing /v1/models to return 0 results for this token).
Related work this session
- Created
scripts/ai_caption.py— LLM enrichment wrapper used byphoto_geo_map_auto.py - Wired AI enrichment into the photogeomap auto-uploader; Kinkaku-ji (post 24289) and Fushimi Inari (post 24290) both fell back to deterministic content due to transient upstream 429/410 errors
- Created skill
skills/oneapi-admin/SKILL.mddocumenting the channel/token update procedure - Created
scripts/check_photogeomap_quota.pyfor daily quota monitoring (cron not yet scheduled)
Notes for future ops
- Always update both
channelsandabilitiesin the same session for model swaps; docker restart required to flush/v1/modelscache. - One API admin login throttles aggressively after ~3-5 failed attempts. Lockout window appears to be >30 minutes. When locked out, sqlite direct-write is the only path for config changes.
/home/user/one-api/one-api.dbis bind-mounted from the docker container, safe to read but writes contend with the container’s connection. Usetimeout=30on the connection to avoid spurious errors.- Token
status=4is auto-set when quota hits 0; needs manual reset. - Channel
typecodes (partial):1=OpenAI,29=Groq,38=Gemini,50=Nvidia NIM,100=Custom.
