The three changes
Model id mapping
ByteSpike’s catalog uses model ids that mostly match OpenAI’s, plus ids for non-OpenAI providers:| OpenAI id you were using | ByteSpike id (drop-in) |
|---|---|
gpt-4o | gpt-5-4 |
gpt-4o-mini | gpt-5-4-mini |
gpt-5 (latest) | gpt-5-5 |
gpt-5-nano | gpt-5-4-nano |
gpt-5-mini | gpt-5-4-mini |
o1-preview / o1 | gpt-5-4-mini (closest reasoning capability) — pin to a specific id for repeatability |
gpt-image-1 | gpt-image-2 |
GET /v1/models or
bytespike.ai/pricing.
What you gain
| OpenAI direct | ByteSpike |
|---|---|
| Only OpenAI models | Every frontier model under one key (Claude, Gemini, DeepSeek, …) |
| Per-vendor billing | One wallet, one invoice |
| Per-vendor rate limits | One rate-limit envelope, set per-key |
| Failures bill | Failures don’t bill |
| Stripe + invoice manual | Console + Stripe handled |
What stays the same
- OpenAI SDK — Python, TypeScript, Go, every official client. Just change
base_url. - Request body shape —
messages,tools,tool_choice,response_format,stream, etc. — identical. - Response shape —
choices[].message.content,tool_calls,usage— identical. - Streaming protocol — SSE with
data: {json}+data: [DONE]— byte-for-byte compatible. - Tool use —
toolsarray withfunctionobjects +tool_choice— identical. - Structured output —
response_format: {type: "json_schema", ...}— identical (on GPT-native paths; translated to the model’s native shape on Claude/Gemini routes).
Concrete examples
Chat completion
Tool use
Image generation
Responses API (o-series + GPT-5 + agents)
Things to double-check
Model availability per key
Model availability per key
Each ByteSpike key is bound to one routing group. Pick the
group that includes the models you’ll call. If you need GPT-5
- Claude in the same client, either create two keys (one per group) or pick a multi-group key tier. See Models.
Token counts and prices
Token counts and prices
Token-count math is identical (OpenAI’s tokenizer for OpenAI
models). Prices may differ — usually lower at ByteSpike for
non-OpenAI providers, identical for OpenAI passthroughs. Live
rates: bytespike.ai/pricing.
Organization / project IDs
Organization / project IDs
OpenAI’s
organization and project headers are accepted but
ignored — ByteSpike has its own org model. To attribute spend
per project, create one key per project with its own quota
cap.Files / Assistants / Vector store APIs
Files / Assistants / Vector store APIs
ByteSpike doesn’t expose OpenAI’s stateful APIs (
/files,
/assistants, /vector_stores). If you depend on them, run
them direct against OpenAI; chat completions can still be on
ByteSpike. The two clients coexist fine.Fine-tuning
Fine-tuning
Same as above — no fine-tuning surface on ByteSpike. Fine-tune
direct, deploy direct, do chat through ByteSpike.
Step-by-step
- Sign up at console.bytespike.ai — see Register.
- Top up $5+ for a real test — see Top up.
- Create a key in the group matching your model needs (
default/claude-default/ etc). - Change
base_url+api_keyin one file in your codebase. - Test against
gpt-5-4first (drop-in) to confirm wiring before changing models. - Swap in non-OpenAI ids (
claude-sonnet-4-6,gemini-3-1-pro,deepseek-v4-pro) one at a time. - Compare token counts + latency on a representative sample. ByteSpike usually wins on the non-OpenAI ids; OpenAI passthrough is at parity.
Reverse migration
If you want to move back to OpenAI direct, the same three changes flip the other way. Keep both clients in your codebase if you want A/B routing — the SDK constructor is the only point of divergence.Next
Migrate from Anthropic
Same idea, Anthropic side.
Configure your client
Full per-SDK setup details.
/chat/completions reference
Request / response / streaming protocol.
Models
Full catalog you can call after migrating.