Contents
To use SolCard Inference in Zed, add a solcard-inference provider under language_models.openai_compatible in settings.json with api_url set to https://api.solcardinference.ai/v1, list our three models, and put your sk-si- key in SOLCARD_INFERENCE_API_KEY or Zed’s provider settings. Zed’s API access docs describe this provider type for any service that gives you a base URL, a model ID and an API key. Every Zed field below comes from those docs. We haven’t run Zed ourselves.
What you need
- A SolCard Inference API key. Make one on the dashboard’s API keys page. Keys start with
sk-si-and are shown once. - Some balance or a plan. One prepaid USD balance pays for every key and model; see how billing works.
- Zed with the Agent Panel.
Form or settings.json
Zed gives you two ways in, and settings.json is the one that takes all three models at once. Per Zed’s docs, you can “Look for Add Provider in the LLM Providers section” of the Agent settings “and fill in the provider name, API URL, model ID, and context window.” That’s one model and four fields. Zed’s docs don’t say whether the form sets max_output_tokens or the capability flags, so check settings.json for them afterward either way.
The settings.json block
{
"language_models": {
"openai_compatible": {
"solcard-inference": {
"api_url": "https://api.solcardinference.ai/v1",
"available_models": [
{
"name": "solcard-inference-fast",
"display_name": "SolCard Inference Fast",
"max_tokens": 1048576,
"max_output_tokens": 32768,
"capabilities": {
"tools": true,
"images": false
}
},
{
"name": "solcard-inference-large",
"display_name": "SolCard Inference Large",
"max_tokens": 1000000,
"max_output_tokens": 32768,
"capabilities": {
"tools": true,
"images": false
}
},
{
"name": "solcard-inference-base",
"display_name": "SolCard Inference Base",
"max_tokens": 262144,
"max_output_tokens": 32768,
"capabilities": {
"tools": true,
"images": false
}
}
]
}
}
}
}
What each part does:
| Field | What it’s for |
|---|---|
solcard-inference | The provider ID. Zed builds the key’s variable name from it. |
api_url | The base URL. Ours ends in /v1. |
name | The model id sent to the API. Must match ours exactly. |
max_tokens | The context window, from our models page. |
max_output_tokens | Every model of ours stops at 32,768 tokens per request. |
tools | Tool calls. Zed’s default is true; our Chat Completions reference accepts tools and tool_choice. |
images | Zed’s default is false. Keep it there: our models take text only. |
The other capability flags can stay at Zed’s defaults. Zed lists parallel_tool_calls, prompt_cache_key, interleaved_reasoning and max_tokens_parameter as false and chat_completions as true. The last one keeps Zed on Chat Completions, which our API speaks. max_tokens_parameter only changes which name Zed uses for the output limit, and our reference takes max_completion_tokens with max_tokens “accepted as an alias,” so either works.
The API key
Keys don’t go in settings.json. Zed’s docs give two places for them:
- The provider settings UI. “Keys saved through Zed are stored in the system keychain, not in
settings.json.” - An environment variable, “generated from the configured provider ID as upper snake case plus
_API_KEY.” For the IDsolcard-inference, that’s:
export SOLCARD_INFERENCE_API_KEY=sk-si-...
If you use the variable, set it where Zed’s process can read it, not only in a terminal you opened afterward.
Reasoning
Zed’s reasoning_effort has more levels than our API accepts. Zed’s docs say to set it to “the non-none effort level your endpoint supports,” and list none, minimal, low, medium, high, xhigh and max. Our reasoning guide lists none, low, medium and high for Chat Completions. Stick to those three non-none values.
The block above leaves reasoning_effort out. Our guide says reasoning is “off by default for speed” and that solcard-inference-large “always reasons.” Reasoning tokens are billed as output, so turning it on raises what each turn costs.
Switching models
Start on Fast for agent turns and pick Large in the Agent Panel’s model selector when a change needs planning or a bug won’t budge. Zed’s agent settings docs say the model you pick in a native Zed Agent thread is saved as agent.default_model, so it sticks for the next thread. Fast, Large or Base compares the three.
Watch the compaction model if you mix sizes. Zed’s agent.compaction_model sets which model runs /compact and auto-compaction, and its docs say that model “should have a context window at least as large as the thread’s primary model.” Base’s 262,144 tokens is about a quarter of Fast’s or Large’s, so don’t compact a Fast or Large thread with Base. Leaving the setting unset uses the thread’s own model.
Check it works
Check the key and URL from a terminal first:
curl https://api.solcardinference.ai/v1/models \
-H "Authorization: Bearer $SOLCARD_INFERENCE_API_KEY"
You should see solcard-inference-fast, -large and -base. Then open the Agent Panel, pick “SolCard Inference Fast” in the model selector and ask something small, such as “What does this file do?”
What a turn costs
An agent resends the conversation every turn, mostly at the cached rate. A turn on Fast that sends 60,000 tokens, 55,000 of them cached, and writes 1,200 tokens is about $0.016. The same turn on Large is about $0.047, plus its reasoning tokens. How billing works has the plans and what a request is charged for.
Troubleshooting
These are the API’s codes, from our errors page; Zed may word them differently.
- 401
invalid_api_key: the key is missing, revoked or unknown. Re-enter it in the provider settings, or check the variable’s name matches the provider ID. - 400
model_not_found: anamedoesn’t match. Usesolcard-inference-fast,-largeor-base. - 400
unsupported_content: an image reached the model. Checkimagesisfalse. - 402
insufficient_balance: credits and plan can’t cover the request. Top up and retry. - 429
rate_limited: too many requests a minute for your plan.
FAQ
Can I use Zed’s Anthropic-compatible provider instead?
Zed has an anthropic_compatible type for services that implement the Messages API, and our API speaks that format too. Zed’s docs don’t say which path it adds to api_url, so this guide covers the OpenAI-compatible one.
Does this replace my Zed or Anthropic models?
No. The block adds one more provider under language_models, and the providers you already have keep their own settings.
Does Zed send my prompts anywhere? Zed’s privacy page says that with your own provider, “The provider handles requests under its own terms,” and that “Zed does not retain your prompts or code context by default.” It also says response ratings and feedback “can send a conversation thread to Zed,” so skip the thumbs if that matters. On our side, prompts and responses are never logged or stored; keeps nothing follows one request through.