I think it would be best if we could just copy the configuration example json from the token plan provider and it just work.
Example for Claude code, which use ANTHROPIC_BASE_URL:
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "<ARK_API_KEY>",
"ANTHROPIC_BASE_URL": "https://ark.cn-beijing.volces.com/api/plan",
"ANTHROPIC_MODEL": "<MODEL_NAME>",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "<MODEL_NAME>",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "<MODEL_NAME>",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "<MODEL_NAME>",
"CLAUDE_CODE_SUBAGENT_MODEL": "<MODEL_NAME>"
}
}
Opencode, which use openai compatible URL:
{
“$schema”: “https://opencode.ai/config.json”,
“model”: “volcengine-agent-plan/ark-code-latest”,
“provider”: {
"volcengine-agent-plan": {
"npm": "@ai-sdk/openai",
"name": "Volcano Engine(Responses API)",
"options": {
"baseURL": "https://ark.cn-beijing.volces.com/api/plan/v3",
"apiKey": "<ARK_API_KEY>"
},
"models": {
"ark-code-latest": {
"name": "ark-code-latest",
"limit": {
"context": 256000,
"output": 32000
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"doubao-seed-2.1-turbo": {
"name": "doubao-seed-2.1-turbo",
"limit": {
"context": 256000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"doubao-seed-evolving": {
"name": "doubao-seed-evolving",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"glm-5.2": {
"name": "glm-5.2",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text"
\],
"output": \[
"text"
\]
}
},
"glm-latest": {
"name": "glm-latest",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text"
\],
"output": \[
"text"
\]
}
},
"deepseek-v4-flash": {
"name": "deepseek-v4-flash",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text"
\],
"output": \[
"text"
\]
}
},
"deepseek-v4-pro": {
"name": "deepseek-v4-pro",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text"
\],
"output": \[
"text"
\]
}
},
"doubao-seed-2.0-lite": {
"name": "doubao-seed-2.0-lite",
"limit": {
"context": 256000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"doubao-seed-2.0-mini": {
"name": "doubao-seed-2.0-mini",
"limit": {
"context": 256000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"minimax-m2.7": {
"name": "minimax-m2.7",
"limit": {
"context": 200000,
"output": 65536
},
"modalities": {
"input": \[
"text"
\],
"output": \[
"text"
\]
}
},
"minimax-m3": {
"name": "minimax-m3",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"kimi-k2.6": {
"name": "kimi-k2.6",
"limit": {
"context": 256000,
"output": 32000
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"kimi-k2.7-code": {
"name": "kimi-k2.7-code",
"limit": {
"context": 256000,
"output": 32000
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
},
"kimi-k3": {
"name": "kimi-k3",
"limit": {
"context": 1024000,
"output": 65536
},
"modalities": {
"input": \[
"text",
"image"
\],
"output": \[
"text"
\]
}
}
}
}
}
}
So that we can just let CC swich to generate/switch the model providers/models, then let it generate the json, paste to Elements and it just works.