Prerequisites
- A ByteSpike account + a key. Choose the group based on which
models you want inside Cursor —
claude-defaultfor Claude, ordefaultto route everything. See Models. - Cursor
0.42+(older versions don’t have the custom provider UI).
Configure
- Open Cursor → Settings → Models (
Cmd/Ctrl + ,) - Scroll to OpenAI API Key section
- Click Override OpenAI Base URL and paste:
- Set OpenAI API Key to your ByteSpike key (
sk-byts-...) - Click Verify — Cursor pings
/v1/chat/completionsto confirm
Enable specific models
Cursor lets you toggle which model ids show up in the picker:- Same Models settings page
- Scroll to Models list
- Click Add model for each ByteSpike id you want exposed:
claude-opus-4-8claude-sonnet-4-6claude-haiku-4-5gpt-5-5gpt-5-4gemini-3-1-prodeepseek-v4-pro- …add any other id from Models
Cursor Agent + ByteSpike
Cursor’s Agent feature runs as multi-turn tool-use loops. The ByteSpike gateway preserves tool definitions across protocols, so Agent works the same against translated routes (Claude via OpenAI shape, Gemini via OpenAI shape) as it does against native paths. If you see “tool calls returning malformed json”, that’s typically the model’s native tool format mapping to OpenAI’s strict schema. Switch the Agent’s model to a native OpenAI id (gpt-5-5,
gpt-5-4) — those have the cleanest schema fidelity.
Streaming, image inputs, vision
All three work via ByteSpike — the gateway forwards streaming events 1:1 and proxies image inputs (data URLs or http URLs) without re-encoding. Cursor’s vision features againstclaude-sonnet-4-6 or
gemini-3-1-pro work identically to going direct.
Tab-complete
Cursor’s tab-complete is a separate, lighter request shape that typically uses a smaller / faster model. Pin a low-latency model (claude-haiku-4-5, gpt-5-4-mini, gemini-2-5-flash) for that
slot — the chat panel can stay on a bigger model.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Verify returns 401 | Wrong key | Copy a fresh value from console |
| Verify returns 402 | Key has $0 budget | Top up |
| Models dropdown empty | Cursor version doesn’t have custom-provider support | Upgrade Cursor to 0.42+ |
| Inline edit returns “model unavailable” | Cursor uses a built-in model name not in your group | Add a working ByteSpike id to the Models list and select it explicitly |
| Slow first token | Cold start on cross-protocol translation routes | Warm with a small request first, or pin to a native id for hot-path features |
Other editor integrations
The samehttps://llm.bytespike.ai/v1 + sk-byts-... recipe works
for any OpenAI-compatible editor:
| Editor / IDE | Config path |
|---|---|
| Continue.dev (VS Code) | ~/.continue/config.json → "apiBase": "https://llm.bytespike.ai/v1" |
| Cline (VS Code) | Settings → API Provider → OpenAI Compatible → Base URL |
| Aider (CLI) | aider --openai-api-base https://llm.bytespike.ai/v1 --openai-api-key sk-byts-... |
| Zed | Settings → AI → custom OpenAI endpoint |
| JetBrains AI Assistant | Settings → Tools → AI Assistant → custom endpoint |
base_url + your ByteSpike key.
Next
Claude Code CLI
The terminal-side alternative.
Codex CLI
OpenAI’s CLI — works with the same key.
/chat/completions reference
The protocol Cursor speaks.
Models
Catalog Cursor can pick from.