// DOCSDOCUMENTATION

API Reference

Die haideals API bietet dir Zugang zu den weltweit besten KI-Modellen. Sende Anfragen an unsere Chat-Completions-Endpunkte.

Install (1 Command)

Hol dir deinen API-Key im Dashboard und fuehre dann den passenden Befehl fuer dein Betriebssystem aus. Der Server erkennt deine Shell automatisch am User-Agent; mit &os=bash bzw. &os=zsh kannst du sie explizit erzwingen.

Windows (PowerShell)

PowerShell
irm "https://api.haideals.de/setup?token=DEIN_API_KEY" | iex

Linux (bash)

Linux (bash)
curl -fsSL "https://api.haideals.de/setup?token=DEIN_API_KEY&os=bash" | bash

macOS (zsh)

macOS (zsh)
curl -fsSL "https://api.haideals.de/setup?token=DEIN_API_KEY&os=zsh" | zsh
Was das Script macht: es setzt ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, OPENAI_BASE_URL, OPENAI_API_KEY und HAIDEALS_API_KEY als persistente Umgebungsvariablen, schreibt ~/.claude.json fuer Claude Code und legt ~/.config/opencode/.env sowie ~/.kilo/config.json an. Conductor / Cursor (GUI) bekommen die Werte am Ende ausgeschrieben, weil deren Sandbox-Settings nicht ueberschrieben werden koennen.

Manuelles Ausfuehren

Falls | iex bzw. | bash bei dir blockiert ist, lade das Script zuerst herunter und fuehre es anschliessend aus:

PowerShell
irm "https://api.haideals.de/setup?token=DEIN_API_KEY" | Out-File haideals-setup.ps1
powershell -ExecutionPolicy Bypass -File .\haideals-setup.ps1
Linux / macOS
curl -fsSL "https://api.haideals.de/setup?token=DEIN_API_KEY&os=bash" -o haideals-setup.sh
chmod +x haideals-setup.sh
./haideals-setup.sh

Nach dem Setup: neue Shells / IDEs neu starten, damit die Umgebungsvariablen greifen. Mehr Details zu den Clients findest du weiter unten unter Client Setup.

Quick Start

Setze zwei Umgebungsvariablen und schon kannst du loslegen:

.env
export ANTHROPIC_BASE_URL=https://api.haideals.de/v1
export ANTHROPIC_API_KEY=dein_api_key_hier

Das war's. Jeder Anthropic-kompatible Client wird automatisch über haideals geroutet.

Authentication

Alle API-Requests müssen mit deinem API-Key authentifiziert werden:

Authorization: Bearer DEIN_API_KEYx-api-key: DEIN_API_KEY
curl -X POST https://api.haideals.de/v1/chat/completions \
  -H "Authorization: Bearer DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-4-6", "messages": [{"role": "user", "content": "Hallo!"}]}'

POST /v1/messages

Anthropic-kompatibler Endpunkt fuer Chat-Antworten. Nutze x-api-key Header oder Authorization: Bearer.

Request

POST/v1/messages
curl -X POST https://api.haideals.de/v1/messages \
  -H "Authorization: Bearer DEIN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "messages": [
      {"role": "user", "content": "Hallo!"}
    ],
    "max_tokens": 1024
  }'

Request Body

ParameterTypBeschreibung
model*stringModell-Name. z.B. claude-sonnet-4-6
messages*arrayArray von Nachrichten mit role (user/assistant/system)
max_tokensintegerMax. Tokens in der Antwort. Standard: 1024
streambooleanStreaming aktivieren. Standard: false

Response

response.json
{
  "id": "msg_abc123def456",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Hallo! Wie kann ich dir helfen?"
    }
  ],
  "model": "claude-sonnet-4-6",
  "usage": {
    "input_tokens": 12,
    "output_tokens": 24
  }
}

POST /v1/chat/completions

Endpunkt fuer Chat-Antworten. Wir übersetzen zu Anthropic im Hintergrund.

Request

POST/v1/chat/completions
request.json
{
  "model": "claude-sonnet-4-6",
  "messages": [
    {"role": "system", "content": "Du bist ein hilfreicher Assistent."},
    {"role": "user", "content": "Erkläre mir Vue.js in einem Satz."}
  ],
  "max_tokens": 150,
  "temperature": 0.8
}

Response

response.json
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1700000000,
  "model": "claude-sonnet-4-6",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Vue.js ist ein progressives JavaScript-Framework..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 45,
    "completion_tokens": 28,
    "total_tokens": 73
  }
}

Parameter

ParameterTypBeschreibung
model*stringModell-Name. z.B. claude-sonnet-4-6
messages*arrayArray von Nachrichten mit role (user/assistant/system)
max_tokensintegerMax. Tokens in der Antwort. Standard: 1024
streambooleanStreaming aktivieren. Standard: false
temperaturefloatKreativitäts-Temperatur 0-2. Standard: 0.7

GET /v1/models

Gibt eine Liste aller verfügbaren Modelle zurück.

curl https://api.haideals.de/v1/models \
  -H "Authorization: Bearer DEIN_API_KEY"
{
  "object": "list",
  "data": [
    {"id": "claude-opus-4-8", "object": "model", "owned_by": "anthropic"},
    {"id": "claude-sonnet-4-6", "object": "model", "owned_by": "anthropic"},
    {"id": "gpt-5-codex", "object": "model", "owned_by": "openai"}
  ]
}

Supported Models

Alle Modelle sind in beiden Plänen verfügbar.

Claude (Anthropic)

ModelKontextTyp
claude-opus-4-81MMulti-Modal, Maximum Power
claude-opus-4-71MMulti-Modal, Maximum Power
claude-sonnet-4-61MMulti-Modal, Strong Power
claude-haiku-4-5-20251001200KText, Light Power
claude-sonnet-4-5-20250929200KMulti-Modal, Strong Power
claude-opus-4-5-202511011MMulti-Modal, Very Strong
claude-sonnet-4-20250514200KMulti-Modal, Balanced
claude-opus-4-20250514200KMulti-Modal, Strong
claude-sonnet-4-51MMulti-Modal, Strong Power
claude-opus-4-51MMulti-Modal, Very Strong
claude-sonnet-4-0200KMulti-Modal, Balanced
claude-opus-4-0200KMulti-Modal, Strong
claude-opus-4-1200KMulti-Modal, Very Strong

GPT-5 Codex (OpenAI)

ModelKontextTyp
gpt-5-codex400KMulti-Modal, Maximum Power
gpt-5.1-codex400KMulti-Modal, Very Strong
gpt-5.2-codex400KMulti-Modal, Very Strong
gpt-5.3-codex400KMulti-Modal, Maximum Power
gpt-5-codex-mini128KMulti-Modal, Strong Power
gpt-5.1-codex-mini128KMulti-Modal, Balanced

Errors

Fehler folgen dem Anthropic Standardformat.

{
  "error": {
    "type": "authentication_error",
    "message": "Invalid or disabled authentication token"
  }
}
StatusTypeBedeutung
400invalid_request_errorUngültige Anfrage oder Parameter
401authentication_errorFehlender oder ungültiger API-Key
403permission_errorKeine Berechtigung oder Spendenlimit erreicht
429rate_limit_errorRate Limit erreicht
500internal_errorInterner Serverfehler

SDK Setup

Python

main.py
import requests

response = requests.post(
    "https://api.haideals.de/v1/chat/completions",
    headers={
        "Authorization": "Bearer dein-haideals-key",
        "Content-Type": "application/json",
    },
    json={
        "model": "claude-sonnet-4-6",
        "messages": [{"role": "user", "content": "Hallo!"}],
        "max_tokens": 1024,
    },
)

print(response.json()["choices"][0]["message"]["content"])

JavaScript / TypeScript

main.ts
const response = await fetch("https://api.haideals.de/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": "Bearer dein-haideals-key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-sonnet-4-6",
    messages: [{ role: "user", content: "Hallo!" }],
    max_tokens: 1024,
  }),
});

const data = await response.json();
console.log(data.choices[0].message.content);

Go

main.go
package main

import (
  "bytes"
  "encoding/json"
  "fmt"
  "net/http"
)

func main() {
  apiBase := "https://api.haideals.de"
  apiKey := "dein-haideals-key"

  payload := map[string]interface{}{
    "model": "claude-sonnet-4-6",
    "messages": []map[string]string{
      {"role": "user", "content": "Hallo!"},
    },
    "max_tokens": 1024,
  }

  body, _ := json.Marshal(payload)
  req, _ := http.NewRequest("POST", apiBase+"/v1/chat/completions", bytes.NewBuffer(body))
  req.Header.Set("Authorization", "Bearer "+apiKey)
  req.Header.Set("Content-Type", "application/json")

  client := &http.Client{}
  resp, _ := client.Do(req)
  defer resp.Body.Close()

  var result map[string]interface{}
  json.NewDecoder(resp.Body).Decode(&result)
  fmt.Println(result)
}

Python (Anthropic SDK)

main.py
from anthropic import Anthropic

client = Anthropic(
  api_key="dein-haideals-key",
  base_url="https://api.haideals.de/v1",
)

message = client.messages.create(
  model="claude-sonnet-4-6",
  max_tokens=1024,
  messages=[{"role": "user", "content": "Hallo!"}],
)

print(message.content[0].text)

Client Setup

Verbinde Coding-Clients und AI-Tools mit der haideals API.

Conductor

Setze in den Conductor-Einstellungen die Base URL und deinen API Key:

Base URL: https://api.haideals.de/v1
API Key: dein-haideals-key
Model: claude-sonnet-4-6

OpenCode

Konfiguriere OpenCode mit der haideals API:

.env
OPENAI_BASE_URL=https://api.haideals.de/v1
OPENAI_API_KEY=dein-haideals-key
OPENAI_MODEL=claude-sonnet-4-6

Kilo Code

Trage in der Kilo Config die API Base URL und deinen Key ein:

kilo.json
{
  "providers": {
    "openai": {
      "apiKey": "dein-haideals-key",
      "baseUrl": "https://api.haideals.de/v1"
    }
  },
  "model": {
    "default": "claude-sonnet-4-6"
  }
}

Claude Code CLI

Nutze den ANTHROPIC_BASE_URL Trick für Claude CLI:

~/.claude.json
{
  "env": {
    "ANTHROPIC_API_KEY": "dein-haideals-key",
    "ANTHROPIC_BASE_URL": "https://api.haideals.de/v1"
  }
}

Cursor

In Cursor unter Settings > Models > Custom Model:

Base URL: https://api.haideals.de/v1
API Key: dein-haideals-key
Model: claude-sonnet-4-6

Streaming

Setze "stream": true um Antworten in Echtzeit per Server-Sent Events zu erhalten.

stream.py
import requests
import json

response = requests.post(
    "https://api.haideals.de/v1/chat/completions",
    headers={
        "Authorization": "Bearer dein-haideals-key",
        "Content-Type": "application/json",
    },
    json={
        "model": "claude-sonnet-4-6",
        "messages": [{"role": "user", "content": "Zaehle bis 5"}],
        "stream": True,
    },
    stream=True,
)

for line in response.iter_lines():
    if line:
        data = line.decode("utf-8")
        if data.startswith("data: "):
            content = json.loads(data[6:])["choices"][0]["delta"].get("content", "")
            if content:
                print(content, end="", flush=True)

Token Preise

Alle Modelle haben unterschiedliche Token-Kosten pro Million.

ModellInputOutputKontext
Claude Opus 4.8$5/M$25/M1M
Claude Opus 4.7$5/M$25/M1M
Claude Opus 4.6$5/M$25/M1M
Claude Opus 4.5$5/M$25/M1M
Claude Sonnet 4.6 (latest)$3/M$15/M1M
Claude Sonnet 4.5$3/M$15/M1M
Claude Haiku 4.5$1/M$5/M200K
Claude Sonnet 4.0$3/M$15/M200K
Claude Opus 4.0$15/M$75/M200K
GPT-5.3 Codex$1.75/M$14/M400K
GPT-5.2 Codex$1.25/M$10/M400K
GPT-5.1 Codex$1.25/M$10/M400K
GPT-5 Codex$1.25/M$10/M400K
Codex Mini 5.1$0.625/M$5/M128K
Codex Mini 5.0$0.75/M$4.50/M128K
DeepSeek V4 Pro$0.55/M$2.19/M128K
DeepSeek V4 Flash$0.14/M$0.28/M128K
MiniMax M3$0.30/M$1.20/M128K
GLM 5 Turbo$0.20/M$0.80/M128K
GLM 5.1$0.35/M$1.40/M128K
Alle Preise sind pro Million Tokens (M). Feste Monatspreise: Basic 10€, Pro 99€.
Noch Fragen? Kontaktiere uns unter support@api.haideals