Developer Hub

One API for
100+ AI models

OpenAI compatible, integrated in seconds. Switch models without code changes — hosted in the EU, GDPR compliant.

Quick Start

Get started in minutes

Our API is OpenAI compatible. Just change the base URL and use your API key.

Chat Completion POST /v1/chat/completions
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
  }'
Chat Completion pip install openai
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="")
Chat Completion npm install openai
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 || "");
}
Chat Completion composer require openai-php/client
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;
Compatible with: OpenAI SDK LangChain LlamaIndex Vercel AI SDK Cursor Continue.dev OpenCode
Configuration

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

Endpoints

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 }
  }
}
Features

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.

// Stream response
for await (const chunk of stream) {
process.stdout.write(chunk);
}

OpenAI compatible

Drop-in replacement for OpenAI, Ollama and all compatible SDKs. Simply swap the base URL.

// Just change the base URL
base_url = "https://api.eugpt.eu/v1"

Sanctum Auth

Secure token-based authentication via Laravel Sanctum. Create and manage API keys directly in your dashboard.

// Authorization Header
"Bearer eugpt-IhrKeyHier..."

GDPR by Design

Self-hosted GPU infrastructure in Frankfurt, documented data processing and EU AI Act governance for your own risk assessment.

GDPR EU AI Act Frankfurt
Coding agent

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.

opencode.json Download
{
  "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. 1 Download opencode.json and place it in the project or in ~/.config/opencode/
  2. 2 Create an API key under Settings → API tokens and export it as EUGPT_API_KEY
  3. 3 Run opencode in 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.

Billing

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.

from €5 Credits, one-off
| Subscription optional, credits never expire View all pricing

Ready to get started?

Create your API key and integrate GDPR-compliant AI into your application -- in just a few minutes.