Continue
Continue is an open-source AI coding assistant for VS Code and JetBrains. Its ~/.continue/config.yaml accepts any OpenAI-compatible endpoint, so you can route Continue’s chat and autocomplete requests through MirAPI with your own key.
What you need
Section titled “What you need”| Element | Value |
|---|---|
| Provider | openai |
| Base URL | https://api.mirapi.ai/v1 (apiBase) |
| API key | Your MirAPI key (sk-...) |
| Model | deepseek-chat |
Create the key in the Platform (https://platform.mirapi.ai) and check the model’s availability and context length on the Models & pricing page.
Configure
Section titled “Configure”- Open
~/.continue/config.yaml(Windows:%USERPROFILE%\.continue\config.yaml). Create it if it does not exist. - Add a model entry under
models:
models: - name: MirAPI DeepSeek provider: openai model: deepseek-chat apiBase: "https://api.mirapi.ai/v1" apiKey: ${MIRAPI_API_KEY} roles: - chat - edit - apply - autocomplete- Export the key so Continue can resolve
${MIRAPI_API_KEY}:
export MIRAPI_API_KEY=sk-...- Reload Continue (or restart the editor) and select MirAPI DeepSeek in the model picker.
The roles list sets which features use this model: chat enables the chat panel, and autocomplete enables inline completions. The apiKey field also accepts a literal key instead of an environment variable, but a shell-exported key is easier to rotate and keeps secrets out of the config file.
Verify with a message
Section titled “Verify with a message”In the Continue chat panel, send:
Reply with exactly: connected to MirAPIThe assistant’s reply should contain connected to MirAPI. If it does not, see Errors and troubleshooting below.
You can also confirm the model is listed before starting:
curl https://api.mirapi.ai/v1/models -H "Authorization: Bearer sk-..."Look for deepseek-chat among the returned id values.
Protocol variants
Section titled “Protocol variants”MirAPI serves three protocols under one key. The openai provider above is the recommended path; if you use Continue’s Anthropic or Gemini provider instead, point it at the matching surface:
| Protocol | Base URL | Auth |
|---|---|---|
| OpenAI-compatible | https://api.mirapi.ai/v1 |
Authorization: Bearer sk-... |
| Anthropic | https://api.mirapi.ai |
x-api-key or Authorization: Bearer |
| Gemini | https://api.mirapi.ai or https://api.mirapi.ai/v1beta |
x-goog-api-key or ?key= |
Whichever protocol you pick, copy the model ID verbatim from GET /v1/models. Requests use the exact id, not the display name.
Errors and troubleshooting
Section titled “Errors and troubleshooting”| Symptom | Cause and fix |
|---|---|
401 |
Key missing, invalid, or unknown. Check that it is copied in full and matches the Platform. |
403 |
Key is valid but rejected: the model is not on the key’s whitelist, the key hit a quota, the caller’s IP is not on the allowlist, or the balance is empty. Top up or adjust the key’s limits, then retry. |
413 |
Payload too large. Trim the context or the attached files. |
429 |
Rate limited. Retry with jittered exponential backoff (1s → 2s → 4s, capping around 30s). MirAPI sends no Retry-After header and does not retry for you. |
500 |
Gateway or upstream failure. Idempotent requests are safe to retry. |
Every error message ends with a request ID; include it in a support ticket. OpenAI-style errors use the envelope {"error": {"message", "type", "param", "code"}}, where type is new_api_error (gateway side) or upstream_error (upstream failure).
Billing
Section titled “Billing”Continue usage is charged to your MirAPI prepaid balance. There is no subscription or monthly fee, and the balance never expires. Chat turns are billed per token in three tiers (input, output, and cache read), priced in USD per 1M tokens, and reasoning tokens count as output. When the balance runs out, MirAPI returns 403; after you top up, the same key works again immediately.