guide · migration

Migrate from OpenAI to GPU Flow in 15 minutes

GPU Flow speaks the same protocol as OpenAI. If your code already uses the OpenAI SDK, migrating means changing two lines (the base URL and the API key) and picking an equivalent model from the catalogue. Nothing else changes: messages, streaming, function calling and parameters all work the same.

In return, your data is processed in Spain (never leaving the EU), you invoice in euros and you start with 5 € of free credit. This guide takes you from the first curl to production.

1. Create your account and API key

Sign up with email or Google. When you create your account you get 5 € of free credit, no card. From the dashboard you create an API key in the gpf-… format, copy it, it is shown only once.

2. Change the base URL and API key

Point the OpenAI client at api.gpuflow.ai/v1 with your new key. The rest of your code stays untouched.

# Before
client = OpenAI(api_key="sk-...")

# After
client = OpenAI(
    base_url="https://api.gpuflow.ai/v1",
    api_key="gpf-..."
)

3. Pick the equivalent model

GPU Flow serves 8 open-source models. Swap your OpenAI model for the catalogue equivalent based on your case: fast and cheap, or maximum capability.

If you used (OpenAI)Use (GPU Flow)For
gpt-4o-miniqwen-3.5-9b · gemma-4-e2bfast chat, high volume, low cost
gpt-4odeepseek-v4-pro · glm-5.2-fp8demanding reasoning and code
o-series (reasoning)deepseek-v4-pro + reasoning.effortlong chains of thought

4. Streaming, tools and reasoning: same as before

SSE streaming (stream: true) and function calling (tools) work with the same OpenAI format. You can also control the reasoning budget with reasoning.effort ("low" | "medium" | "high" | "none").

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Solve it step by step"}],
    stream=True,
    extra_body={"reasoning": {"effort": "high"}},
)

5. Using the Anthropic SDK? That too

If your stack uses the Anthropic SDK, point baseURL at api.gpuflow.ai and use /v1/messages with the same models. No need to maintain two integrations.

What to keep in mind

You consume against your prepaid euro balance: if it runs out, the API returns 402 (top up from the dashboard). Under heavy spikes it may return 429/503 with a Retry-After header; retry with backoff. Exact model names and prices are on the pricing page and in /docs.

Try it with 5 € free

Create your account, change the base URL and run the first curl against any catalogue model. No card, with your data in Europe.

start free