Documentation
Démarrage rapide
JoinGonka Gateway prend en charge les API OpenAI et Anthropic pour l'accès aux modèles Gonka. Remplacez base_url dans votre client — et tout fonctionne.
URL de base : https://gate.joingonka.ai/v1
Modèle : MiniMaxAI/MiniMax-M2.7
Authentification : Bearer YOUR_API_KEY
Python (SDK OpenAI)
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 (SDK OpenAI)
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
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 prend en charge nativement l'API Anthropic Messages (/v1/messages). Claude Code, Anthropic SDK et tous les outils utilisant le format Anthropic fonctionnent directement — sans proxy.
Claude Code
Recommended — set it up with one command (also configures OpenClaw and Cline):
npx @joingonka/setup
Or configure it manually:
export ANTHROPIC_BASE_URL=https://gate.joingonka.ai export ANTHROPIC_API_KEY=YOUR_API_KEY claude
Python (Anthropic SDK)
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)
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)
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)Utilisation d'outils (cURL)
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?"}]
}'Les deux formats (OpenAI et Anthropic) utilisent une seule clé API et un seul solde.
Points de terminaison API
Inference
/v1/chat/completionsGénération de réponse — format OpenAI (streaming pris en charge)
{
"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"
}
}/v1/messagesGénération de réponse — format Anthropic (streaming, tool_use)
{
"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}
}/v1/modelsListe des modèles disponibles
{
"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
Les plugins étendent les capacités de l'API. Passez un tableau de plugins dans la requête pour l'activation.
/v1/pluginsListe des plugins disponibles
{
"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"}
]
}Utilisation dans la requête
{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [{"role": "user", "content": "..."}],
"plugins": ["response-healing", "privacy-sanitization"]
}web
Recherche web directement au sein des modèles Gonka. Les modèles eux-mêmes (Kimi, MiniMax, DeepSeek) ne disposent pas de recherche ; le gateway injecte les résultats récents d'Internet dans le contexte et renvoie les citations des sources. Fonctionne en mode stream et non-stream. Le backend est self-hosted : les requêtes ne sont pas envoyées à des API de recherche tierces via votre compte.
Méthode 1 — objet web dans le tableau de plugins (injection de résultats avec options) :
{
"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:"
}]
}Méthode 2 — Mode Agent (mode: "agent") : le modèle lui-même appelle web_search uniquement lorsque la recherche est nécessaire :
{
"model": "MiniMaxAI/MiniMax-M2.7",
"messages": [{"role": "user", "content": "What's new in the Gonka network?"}],
"plugins": [{ "id": "web", "mode": "agent", "max_searches": 3 }]
}Options : max_results — nombre de résultats (par défaut 5, max 10) ; search_prompt — votre propre prompt de grounding encadrant les résultats.
La réponse est enrichie de annotations[].url_citation (url, title) — norme OpenRouter :
{
"choices": [{
"message": {
"role": "assistant",
"content": "...",
"annotations": [{
"type": "url_citation",
"url_citation": {
"url": "https://gonka.ai/...",
"title": "Gonka Network"
}
}]
}
}]
}Tarification : mode plugins:[{ "id": "web" }] — uniquement par tokens (les résultats intégrés comptent comme des prompt-tokens normaux). Mode agent (mode: "agent") — tokens de toutes les étapes de la boucle plus un supplément de 1000 nGNK pour chaque appel web_search (≈ $0.0001 pour 1000 recherches à un taux de ~$0.15 par GNK).
Incompatible avec privacy-sanitization : une demande combinée retournera 400.
response-healing
Réparation automatique des sorties JSON/structurées tronquées. Fonctionne uniquement pour les requêtes non-streaming avec contenu JSON.
privacy-sanitization
Masquage des données sensibles (clés API, adresses e-mail, adresses IP, JWT, numéros de carte) dans les messages avant de les envoyer au modèle.
Modes : redact (remplacement par [REDACTED]) ou tokenize (remplacement par [TOKEN_001]). Passez privacy_mode dans le corps.
file-parser
Extraction de texte des documents PDF. Prise en charge de data:application/pdf;base64,... et base64 brut.
Clés de gestion
Clés API hiérarchiques pour les intégrations SaaS. Une clé de gestion (gm-) crée des clés enfant (gc-) avec des limites et un TTL.
/api/management/keysCréer une clé de gestion (préfixe gm-). Utilisée uniquement pour gérer les clés enfant.
/api/management/keys/:id/childrenCréer une clé enfant (préfixe gc-) avec des limites optionnelles. La facturation est débitée du solde du propriétaire de la clé de gestion.
{
"name": "Client A",
"limit_daily_ngonka": "1000000000",
"limit_monthly_ngonka": "10000000000",
"expires_at": "2026-04-01T00:00:00Z",
"rate_limit_rpm": 30
}/api/management/keys/:id/childrenListe des clés enfant avec statistiques d'utilisation.
/api/management/keys/:id/children/:childIdMettre à jour les limites, RPM ou le statut de la clé enfant.
/api/management/keys/:id/children/:childIdDésactiver la clé enfant (suppression logicielle).
Account
/api/balanceSolde actuel
{
"balance_ngonka": "11999976",
"balance_usd": 0.008,
"cost_per_token_ngonka": 1,
"tokens_remaining": 11999976
}/api/keysListe des clés API
/api/keysCréer une clé API
/api/keys/:idSupprimer une clé API
Billing
/api/usageStatistiques d'utilisation
Query: period=day|week|month&tz=-180
{
"period": "month",
"usage": [{
"date": "2026-03-20",
"requests": 42,
"tokens": 18500,
"costNgonka": "22200"
}]
}/api/depositsHistorique des dépôts
Query: limit=50&offset=0&from=2026-03-01&to=2026-03-21
{
"deposits": [{
"id": "abc-123",
"type": "DEPOSIT_GNK",
"amountNgonka": "10000000",
"description": "GNK deposit via memo",
"createdAt": "2026-03-20T12:00:00Z"
}],
"total": 3
}/api/transactionsHistorique des transactions
Query: limit=50&offset=0&type=INFERENCE&from=2026-03-01&to=2026-03-21
{
"transactions": [{
"id": "def-456",
"type": "INFERENCE",
"amountNgonka": "-1200",
"feeNgonka": "120",
"description": null,
"createdAt": "2026-03-20T14:30:00Z"
}],
"total": 128
}/api/pricingTarifs et commissions (public, sans authentification)
{
"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
Pour stream: true, la réponse arrive par morceaux via SSE (Server-Sent Events).
OpenAI (stream: true)
data: {"choices":[{"delta":{"content":"Hello"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: {"choices":[],"x_joingonka":{"cost_ngonka":"24"}}
data: [DONE]Anthropic (stream: true)
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"}Erreurs
// 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"}}Modèles
Le réseau Gonka prend en charge plusieurs modèles via une API unique ; la liste actuelle peut toujours être récupérée par une requête GET /v1/models. Pour sélectionner un modèle, passez son ID dans le champ model du corps de la requête.
| Modèle | Fournisseur | Contexte | Sortie maximale | VRAM | Statut |
|---|---|---|---|---|---|
| MiniMax M2.7 | MiniMax | 195K | 8K | 320 GB | Disponible |
| Kimi K2.6 | Moonshot AI | 195K | 8K | 720 GB | Disponible |
| DeepSeek V4 Flash | DeepSeek | 371K | 32K | 280 GB | Disponible |
Par défaut (si model n'est pas spécifié), le modèle phare du réseau est utilisé. La liste actuelle avec les métadonnées — GET /v1/models.
La liste actuelle des modèles avec toutes les métadonnées - GET /v1/models. La vision et l'entrée multimodale (image_url) ne sont pas encore prises en charge par le réseau Gonka en amont.
Tarifs et frais
Transparence totale : ci-dessous tous les frais du gateway. Les valeurs réelles sont chargées en direct depuis l'API — le point de terminaison public GET /api/pricing est disponible sans authentification.
| Opération | Commission | Note |
|---|---|---|
| Marge sur l'inference | 10% | Marge de la plateforme au-dessus du prix du réseau Gonka — principale source de revenus du gateway. Facturé avec chaque requête en plus du coût des tokens. |
| Dépôt via USDT | 5% | Retenu par le fournisseur de paiement lors d'un paiement en crypto (USDT). |
| Dépôt via GNK | gratuit | Le transfert direct de GNK on-chain est crédité sans frais de gateway. |
| Retrait de fonds | 5% | Retenu lors du retrait de GNK vers une adresse externe. Le retrait est traité manuellement dans un délai de 24 à 48 heures. |
| Prix actuel de GNK | $0.147 | Le taux GNK/USD utilisé pour le calcul des dépôts et du solde. Mis à jour automatiquement. |
GET /api/pricing
Limites
Modèles: Tous les modèles du réseau Gonka (architecture multi-modèle DevShards)
Limite de requêtes : avec une clé API, le nombre de requêtes n'est pas limité de manière fixe (limité par la concurrence du réseau) ; sans clé — 20/jour par IP (anti-spam)
Max. jetons : jusqu'à 32 768 tokens par requête pour DeepSeek V4 Flash et jusqu'à 8 192 pour les autres modèles (les valeurs dépassant la limite sont tronquées par le gateway). Pour les réponses longues, utilisez stream:true afin d'éviter les timeouts.
Streaming : pris en charge (SSE, stream: true)
Délai d'attente réseau : Si le réseau Gonka a accepté la requête mais n'a pas répondu dans les 300 secondes, la requête se termine par une erreur 504 et le traitement du prompt est déduit selon l'estimation : une requête acceptée par le réseau ne peut être annulée, le nœud la traite de toute façon. La Completion n'est pas facturée en cas de timeout. Pour les générations longues, utilisez stream:true.