One API for
100+ AI models
OpenAI compatible, integrated in seconds. Switch models without code changes — hosted in the EU, GDPR compliant.
Get started in minutes
Our API is OpenAI compatible. Just change the base URL and use your API key.
curl https://api.eugpt.eu/v1/chat/completions \
-H "Authorization: Bearer eugpt-IhrKeyHier..." \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3.3-70b-instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the GDPR?"}
],
"stream": true
}'
from openai import OpenAI
client = OpenAI(
base_url="https://api.eugpt.eu/v1",
api_key="eugpt-IhrKeyHier...",
)
# Streaming response
stream = client.chat.completions.create(
model="llama-3.3-70b-instruct",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is the GDPR?"},
],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.eugpt.eu/v1",
apiKey: "eugpt-IhrKeyHier...",
});
// Streaming response
const stream = await client.chat.completions.create({
model: "llama-3.3-70b-instruct",
messages: [
{ role: "system", content: "You are a helpful assistant." },
{ role: "user", content: "What is the GDPR?" },
],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
use OpenAI;
$client = OpenAI::factory()
->withBaseUri('https://api.eugpt.eu/v1')
->withApiKey('eugpt-IhrKeyHier...')
->make();
$response = $client->chat()->create([
'model' => 'llama-3.3-70b-instruct',
'messages' => [
['role' => 'user', 'content' => 'What is the GDPR?'],
],
]);
echo $response->choices[0]->message->content;
API overview
Base URL
https://api.eugpt.eu
OpenAI compatible under /v1/
Authentication
Bearer eugpt-...
Laravel Sanctum token in the Authorization header
Content-Type
application/json
Streaming responses via Server-Sent Events
API reference
All endpoints are OpenAI compatible. Existing integrations work immediately.
Request Body
{
"model": "llama-3.3-70b-instruct",
"messages": [
{
"role": "user",
"content": "Hallo!"
}
],
"stream": true,
"temperature": 0.7
}
Response (SSE Chunk)
{
"id": "chatcmpl-abc123",
"object": "chat.completion.chunk",
"choices": [{
"index": 0,
"delta": {
"content": "Hallo"
}
}]
}
Request Body
{
"model": "llama-3.3-70b-instruct",
"prompt": "Erklaere KI in 3 Saetzen",
"stream": false
}
Response
{
"model": "llama-3.3-70b-instruct",
"response": "KI ist...",
"done": true,
"total_duration": 1243000000
}
Request
// No body required
// Also available as:
// GET /v1/models (OpenAI compatible)
Response
{
"models": [
{
"name": "llama-3.3-70b-instruct",
"provider": "eugpt",
"capabilities": [...]
}
]
}
Response
{
"chats": [
{
"uuid": "550e8400-e29b-41d4-a716-446655440000",
"title": "DSGVO Erklaerung",
"model": "llama-3.3-70b-instruct",
"created_at": "2026-04-08T12:00:00Z"
}
]
}
Request Body
{
"model": "llama-3.3-70b-instruct",
"title": "My new chat"
}
Response
{
"uuid": "550e8400-...",
"title": "My new chat",
"model": "llama-3.3-70b-instruct"
}
Response
{
"credit_balance_cents": 4250,
"self_hosted": {
"has_plan": true,
"plan_name": "Pro",
"usage_units_4h": { "used": 128000, "limit": 500000 },
"usage_units_week": { "used": 540000, "limit": 2500000 }
}
}
Built for developers
Everything you need to integrate AI into your applications.
Streaming SSE
Real-time streaming via Server-Sent Events. Token by token, just as you know it from ChatGPT. Works with all OpenAI SDKs.
OpenAI compatible
Drop-in replacement for OpenAI, Ollama and all compatible SDKs. Simply swap the base URL.
Sanctum Auth
Secure token-based authentication via Laravel Sanctum. Create and manage API keys directly in your dashboard.
GDPR by Design
Self-hosted GPU infrastructure in Frankfurt, documented data processing and EU AI Act governance for your own risk assessment.
Using EuGPT in OpenCode
OpenCode is an open-source AI coding agent for the terminal. Since EuGPT is OpenAI compatible — including tool calling — it can be used as a GDPR-compliant provider. Chat, streaming and file tools are verified against real OpenCode sessions.
{
"provider": {
"eugpt": {
"npm": "@ai-sdk/openai-compatible",
"name": "EuGPT",
"options": {
"baseURL": "https://api.eugpt.eu/v1",
"apiKey": "{env:EUGPT_API_KEY}"
},
"models": {
"qwen/qwen3.6-35b-a3b": {
"name": "Qwen 3.6 35B (A3B)",
"limit": { "context": 131072, "output": 8192 }
},
"qwen/qwen3.5-9b": {
"name": "Qwen 3.5 9B (schnell)",
"limit": { "context": 32768, "output": 8192 }
}
}
}
},
"model": "eugpt/qwen/qwen3.6-35b-a3b",
"small_model": "eugpt/qwen/qwen3.5-9b"
}
Setup in 3 steps
- 1 Download opencode.json and place it in the project or in
~/.config/opencode/ - 2 Create an API key under Settings → API tokens and export it as
EUGPT_API_KEY - 3 Run
opencodein the project
Billing
By default, usage runs on your credit balance (pay-as-you-go). If you have a subscription, enable the “Use for subscription” option when creating the API key — OpenCode usage then counts against your subscription window instead of your credits.
Check model IDs first: GET /v1/models — more endpoints in the API reference above.
Credits & quotas
Credits for flexible usage and optional self-hosted subscriptions with transparent quotas.
Credits & self-hosted subscription
By default, you top up credits in EUR and pay per request. An optional self-hosted subscription covers EuGPT's own models within a rolling usage window; external providers are always billed transparently via credits.
Usage endpoint
Check your balance, subscription status and quotas at any time via GET /v1/usage. The endpoint returns your credit balance, self-hosted subscription, usage units and limits.
Transparent pricing
Model costs are available on the pricing page No hidden fees, no surprise bills.
Ready to get started?
Create your API key and integrate GDPR-compliant AI into your application -- in just a few minutes.