Dokumentation

Schnellstart

JoinGonka Gateway unterstützt OpenAI- und Anthropic-APIs für den Zugriff auf Gonka-Modelle. Ersetzen Sie base_url in Ihrem Client – und alles funktioniert.

Basis-URL: https://gate.joingonka.ai/v1

Modell: MiniMaxAI/MiniMax-M2.7

Autorisierung: Bearer YOUR_API_KEY

Python (OpenAI SDK)

python
from openai import OpenAI

client = OpenAI(
    base_url="https://gate.joingonka.ai/v1",
    api_key="YOUR_API_KEY",
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is Gonka?"},
    ],
    temperature=0.7,
    max_tokens=1024,
)

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

TypeScript (OpenAI SDK)

typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://gate.joingonka.ai/v1",
  apiKey: "YOUR_API_KEY",
});

const response = await client.chat.completions.create({
  model: "MiniMaxAI/MiniMax-M2.7",
  messages: [
    { role: "system", content: "You are a helpful assistant." },
    { role: "user", content: "What is Gonka?" },
  ],
  temperature: 0.7,
  max_tokens: 1024,
});

console.log(response.choices[0].message.content);

cURL

bash
curl https://gate.joingonka.ai/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "system", "content": "You are a helpful assistant."},
      {"role": "user", "content": "What is Gonka?"}
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

Anthropic API (Claude Code)

JoinGonka Gateway unterstützt nativ die Anthropic Messages API (/v1/messages). Claude Code, Anthropic SDK und alle Tools, die das Anthropic-Format verwenden, funktionieren direkt – ohne Proxy.

Claude Code

Recommended — set it up with one command (also configures OpenClaw and Cline):

bash
npx @joingonka/setup

Or configure it manually:

bash
export ANTHROPIC_BASE_URL=https://gate.joingonka.ai
export ANTHROPIC_API_KEY=YOUR_API_KEY
claude

Python (Anthropic SDK)

python
import anthropic

client = anthropic.Anthropic(
    base_url="https://gate.joingonka.ai",
    api_key="YOUR_API_KEY",
)

message = client.messages.create(
    model="MiniMaxAI/MiniMax-M2.7",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "What is Gonka?"},
    ],
)

print(message.content[0].text)

cURL (Anthropic format)

bash
curl https://gate.joingonka.ai/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "What is Gonka?"}
    ]
  }'

Streaming (Python)

python
import anthropic

client = anthropic.Anthropic(
    base_url="https://gate.joingonka.ai",
    api_key="YOUR_API_KEY",
)

with client.messages.stream(
    model="MiniMaxAI/MiniMax-M2.7",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain Gonka"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

Tool Use (cURL)

bash
curl https://gate.joingonka.ai/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "max_tokens": 1024,
    "tools": [{
      "name": "get_weather",
      "description": "Get current weather",
      "input_schema": {
        "type": "object",
        "properties": {"city": {"type": "string"}},
        "required": ["city"]
      }
    }],
    "messages": [{"role": "user", "content": "Weather in Moscow?"}]
  }'

Beide Formate (OpenAI und Anthropic) verwenden denselben API-Schlüssel und dasselbe Guthaben.

API-Endpunkte

Inference

POST/v1/chat/completions

Antwortgenerierung – OpenAI-Format (Streaming wird unterstützt)

json
{
  "id": "chatcmpl-abc123...",
  "object": "chat.completion",
  "model": "MiniMaxAI/MiniMax-M2.7",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "Hello! How can I help you?",
      "tool_calls": []
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 12,
    "completion_tokens": 8,
    "total_tokens": 20
  },
  "x_joingonka": {
    "cost_ngonka": "24",
    "balance_ngonka": "11999976"
  }
}
POST/v1/messages

Antwortgenerierung – Anthropic-Format (Streaming, tool_use)

json
{
  "id": "msg_abc123...",
  "type": "message",
  "role": "assistant",
  "content": [{"type": "text", "text": "Hello!"}],
  "model": "MiniMaxAI/MiniMax-M2.7",
  "stop_reason": "end_turn",
  "usage": {"input_tokens": 12, "output_tokens": 8}
}
GET/v1/models

Liste der verfügbaren Modelle

json
{
  "object": "list",
  "data": [{
    "id": "MiniMaxAI/MiniMax-M2.7",
    "object": "model",
    "owned_by": "gonka-network",
    "context_length": 200000,
    "pricing": {
      "prompt": "0.00000007",
      "completion": "0.0000001"
    },
    "architecture": {
      "modality": "text->text"
    },
    "top_provider": {
      "context_length": 200000,
      "max_completion_tokens": 8192,
      "is_moderated": false
    },
    "supported_parameters": [
      "temperature", "top_p", "tools",
      "tool_choice", "max_tokens", "stop"
    ],
    "x_gonka": {
      "v_ram": 320,
      "context_window": 200000,
      "max_output": 8192,
      "actual_cost_ngonka": 1.2
    }
  }]
}

Plugins

Plugins erweitern die API-Funktionalität. Übergeben Sie ein Plugin-Array in der Anfrage, um sie zu aktivieren.

GET/v1/plugins

Liste der verfügbaren Plugins

json
{
  "plugins": [
    {"id": "web", "description": "Web search — inject fresh results with citations"},
    {"id": "response-healing", "description": "Auto-fix truncated JSON"},
    {"id": "privacy-sanitization", "description": "Mask sensitive data"},
    {"id": "file-parser", "description": "Extract text from PDF"}
  ]
}

Verwendung in der Anfrage

json
{
  "model": "MiniMaxAI/MiniMax-M2.7",
  "messages": [{"role": "user", "content": "..."}],
  "plugins": ["response-healing", "privacy-sanitization"]
}

web

Websuche direkt innerhalb der Gonka-Modelle. Die Modelle selbst (Kimi, MiniMax, DeepSeek) verfügen über keine Suchfunktion; das gateway fügt frische Ergebnisse aus dem Internet in den Kontext ein und gibt Quellenverweise zurück. Funktioniert im stream- und non-stream-Modus. Das Backend ist self-hosted: Anfragen werden nicht über Ihr Konto an Such-APIs von Drittanbietern gesendet.

Methode 1 – das Web-Objekt im Plugins-Array (Ergebnisinjektion mit Optionen):

json
{
  "model": "MiniMaxAI/MiniMax-M2.7",
  "messages": [{"role": "user", "content": "What's new in the Gonka network?"}],
  "plugins": [{
    "id": "web",
    "max_results": 5,
    "search_prompt": "Relevant web search results:"
  }]
}

Methode 2 – Agentenmodus (mode: "agent"): Das Modell ruft web_search nur auf, wenn eine Suche erforderlich ist:

json
{
  "model": "MiniMaxAI/MiniMax-M2.7",
  "messages": [{"role": "user", "content": "What's new in the Gonka network?"}],
  "plugins": [{ "id": "web", "mode": "agent", "max_searches": 3 }]
}

Optionen: max_results — Anzahl der Ergebnisse (Standard 5, Limit 10); search_prompt — Ihr eigener Grounding-Prompt vor den Suchergebnissen.

Die Antwort wird durch annotations[].url_citation (url, title) ergänzt — OpenRouter-Standard:

json
{
  "choices": [{
    "message": {
      "role": "assistant",
      "content": "...",
      "annotations": [{
        "type": "url_citation",
        "url_citation": {
          "url": "https://gonka.ai/...",
          "title": "Gonka Network"
        }
      }]
    }
  }]
}

Tarifierung: Modus plugins:[{ "id": "web" }] — nur für Token (die beigemischten Ergebnisse zählen als normale prompt-Token). Agenten-Modus (mode: "agent") — Token aller Zyklusschritte plus ein Aufschlag von 1000 nGNK pro web_search-Aufruf (≈ $0.0001 pro 1000 Suchen zum Kurs von ~$0.15 pro GNK).

Inkompatibel mit privacy-sanitization: wenn beides kombiniert wird, wird 400 zurückgegeben.

response-healing

Automatische Reparatur von abgeschnittenen JSON/strukturierten Ausgaben. Funktioniert nur für Nicht-Streaming-Anfragen mit JSON-Inhalt.

privacy-sanitization

Maskierung sensibler Daten (API-Schlüssel, E-Mail-Adressen, IP-Adressen, JWT, Kartennummern) in Nachrichten vor dem Senden an das Modell.

Modi: redact (Ersetzung durch [REDACTED]) oder tokenize (Ersetzung durch [TOKEN_001]). Übergeben Sie privacy_mode im Body.

file-parser

Textextraktion aus PDF-Dokumenten. Unterstützung von data:application/pdf;base64,... und raw base64.

Management Keys

Hierarchische API-Schlüssel für SaaS-Integrationen. Ein Management Key (gm-) erstellt Child Keys (gc-) mit Limits und TTL.

POST/api/management/keys

Erstellen Sie einen Management Key (Präfix gm-). Wird nur zur Verwaltung von Child Keys verwendet.

POST/api/management/keys/:id/children

Erstellen Sie einen Child Key (Präfix gc-) mit optionalen Limits. Die Abrechnung erfolgt über das Guthaben des Inhabers des Management Keys.

json
{
  "name": "Client A",
  "limit_daily_ngonka": "1000000000",
  "limit_monthly_ngonka": "10000000000",
  "expires_at": "2026-04-01T00:00:00Z",
  "rate_limit_rpm": 30
}
GET/api/management/keys/:id/children

Liste der Child Keys mit Nutzungsstatistiken.

PUT/api/management/keys/:id/children/:childId

Aktualisieren Sie Limits, RPM oder den Status eines Child Keys.

DELETE/api/management/keys/:id/children/:childId

Deaktivieren Sie einen Child Key (Soft Delete).

Account

GET/api/balance

Aktuelles Guthaben

json
{
  "balance_ngonka": "11999976",
  "balance_usd": 0.008,
  "cost_per_token_ngonka": 1,
  "tokens_remaining": 11999976
}
GET/api/keys

Liste der API-Schlüssel

POST/api/keys

API-Schlüssel erstellen

DELETE/api/keys/:id

API-Schlüssel löschen

Billing

GET/api/usage

Nutzungsstatistik

Query: period=day|week|month&tz=-180

json
{
  "period": "month",
  "usage": [{
    "date": "2026-03-20",
    "requests": 42,
    "tokens": 18500,
    "costNgonka": "22200"
  }]
}
GET/api/deposits

Einzahlungsverlauf

Query: limit=50&offset=0&from=2026-03-01&to=2026-03-21

json
{
  "deposits": [{
    "id": "abc-123",
    "type": "DEPOSIT_GNK",
    "amountNgonka": "10000000",
    "description": "GNK deposit via memo",
    "createdAt": "2026-03-20T12:00:00Z"
  }],
  "total": 3
}
GET/api/transactions

Transaktionsverlauf

Query: limit=50&offset=0&type=INFERENCE&from=2026-03-01&to=2026-03-21

json
{
  "transactions": [{
    "id": "def-456",
    "type": "INFERENCE",
    "amountNgonka": "-1200",
    "feeNgonka": "120",
    "description": null,
    "createdAt": "2026-03-20T14:30:00Z"
  }],
  "total": 128
}
GET/api/pricing

Tarife und Gebühren (öffentlich, ohne Autorisierung)

json
{
  "deposit_usdt_fee_percent": 5,
  "deposit_gnk_fee_percent": 0,
  "usage_fee_percent": 10,
  "withdrawal_fee_percent": 5,
  "gnk_usd_price": 0.3465
}

Streaming & Errors

Wenn stream: true, wird die Antwort in Chunks über SSE (Server-Sent Events) geliefert.

OpenAI (stream: true)

text
data: {"choices":[{"delta":{"content":"Hello"}}]}

data: {"choices":[{"delta":{"content":"!"}}]}

data: {"choices":[],"x_joingonka":{"cost_ngonka":"24"}}

data: [DONE]

Anthropic (stream: true)

text
event: message_start
data: {"type":"message_start","message":{...}}

event: content_block_delta
data: {"type":"content_block_delta","delta":{"type":"text_delta","text":"Hello"}}

event: message_stop
data: {"type":"message_stop"}

Fehler

json
// 400 — неверный запрос
{"error": {"message": "...", "type": "invalid_request_error"}}

// 401 — не авторизован
{"error": {"message": "...", "type": "authentication_error"}}

// 402 — недостаточный баланс
{"error": {"message": "...", "type": "insufficient_funds", "balance_ngonka": "0"}}

// 429 — rate limit
{"error": {"message": "...", "type": "rate_limit_error"}}

// 502 — ошибка сети Gonka
{"error": {"message": "...", "type": "api_error"}}

Modelle

Das Gonka-Netzwerk stellt mehrere Modelle über eine einzige API bereit – eine aktuelle Liste kann jederzeit über eine GET /v1/models-Anfrage abgerufen werden. Um ein Modell auszuwählen, übergeben Sie dessen ID im Feld model des Request-Bodys.

ModellAnbieterKontextMaximale AusgabeVRAMStatus
MiniMax M2.7MiniMax195K8K320 GBVerfügbar
Kimi K2.6Moonshot AI195K8K720 GBVerfügbar
DeepSeek V4 FlashDeepSeek371K32K280 GBVerfügbar

Standardmäßig (wenn model nicht angegeben ist) wird das Flaggschiff-Modell des Netzwerks verwendet. Die aktuelle Liste mit Metadaten – GET /v1/models.

Die aktuelle Liste der Modelle mit allen Metadaten – GET /v1/models. Vision und multimodale Eingabe (image_url) werden vom Upstream-Gonka-Netzwerk noch nicht unterstützt.

Tarife und Gebühren

Volle Transparenz: Unten finden Sie alle Gateway-Gebühren. Aktuelle Werte werden live aus der API geladen — der öffentliche Endpoint GET /api/pricing ist ohne Autorisierung verfügbar.

OperationGebührHinweis
Aufschlag für Inference10%Plattform-Aufschlag über dem Gonka-Netzwerkpreis — die Haupteinnahmequelle des Gateways. Wird von jeder Anfrage zusammen mit den Kosten für die Token abgezogen.
Einzahlung über USDT5%Wird vom Zahlungsanbieter bei Zahlung mit Krypto (USDT) einbehalten.
Einzahlung über GNKkostenlosDirekte GNK-on-chain-Überweisung wird ohne Gateway-Gebühr gutgeschrieben.
Auszahlung5%Wird bei Auszahlung von GNK an eine externe Adresse einbehalten. Die Auszahlung wird manuell innerhalb von 24–48 Stunden bearbeitet.
Aktueller GNK-Preis$0.147GNK/USD-Kurs, nach dem Einzahlungen und Salden berechnet werden. Wird automatisch aktualisiert.

GET /api/pricing

Limits

Modelle: Alle Gonka-Netzwerkmodelle (DevShards Multi-Modell-Architektur)

Anfrage-Limit: Mit einem API-Key ist die Anzahl der Anfragen nicht starr limitiert (begrenzt durch die Netzwerkkonkurrenz); ohne Key — 20/Tag pro IP (Spam-Schutz)

Max. Tokens: bis zu 32.768 Token pro Anfrage für DeepSeek V4 Flash und bis zu 8.192 für andere Modelle (Werte, die das Limit überschreiten, werden vom gateway gekürzt). Für lange Antworten verwenden Sie stream:true, um Timeouts zu vermeiden.

Streaming: unterstützt (SSE, stream: true)

Netzwerk-Timeout: Wenn das Gonka-Netzwerk die Anfrage akzeptiert hat, aber nicht innerhalb von 300 Sekunden antwortet, endet die Anfrage mit einem 504-Fehler und die Prompt-Verarbeitung wird basierend auf der Schätzung abgerechnet: Eine vom Netzwerk akzeptierte Anfrage kann nicht storniert werden, der Node verarbeitet sie in jedem Fall. Completion wird bei einem Timeout nicht berechnet. Für lange Generationen verwenden Sie stream:true.