TokenAPIAPI-Dokumentation
API-Referenz

In zwei Zeilen integriert: Base URL und API-Schlüssel.

TokenAPI unterstützt die OpenAI-Formate Chat Completions und Responses sowie das Anthropic-Format Messages. Nutzen Sie die offiziellen SDKs unverändert und wählen Sie eine ID aus der Modellliste.

Schnellstart

Base URL

https://tokenapi.biz/v1

Alle Endpoints:

GET/v1/models

Modelle auflisten

Öffentliche Modell-IDs mit Fähigkeiten, Kontextlänge und Preisen.

GET/v1/models/{id}

Modell abrufen

Ein einzelnes Modellobjekt.

POST/v1/chat/completions

Chat Completions

OpenAI-Format Chat Completions, mit und ohne Streaming.

POST/v1/responses

Responses

OpenAI-Format Responses (zustandslos), mit und ohne Streaming.

POST/v1/messages

Messages

Anthropic-Format Messages, für das Anthropic-SDK.

curl
curl https://tokenapi.biz/v1/chat/completions \
  -H "Authorization: Bearer $TOKENAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tokenapi-pro",
    "messages": [{ "role": "user", "content": "Hello!" }]
  }'
Node.js · openai
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://tokenapi.biz/v1",
  apiKey: process.env.TOKENAPI_KEY,
});

const res = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(res.choices[0].message.content);
Python · openai
import os
from openai import OpenAI

client = OpenAI(base_url="https://tokenapi.biz/v1", api_key=os.environ["TOKENAPI_KEY"])

res = client.chat.completions.create(
    model="tokenapi-pro",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(res.choices[0].message.content)
Authentifizierung

Senden Sie Ihren Schlüssel als Bearer-Token.

Authorization: Bearer sk-tk-…

Der Anthropic-typische Header x-api-key wird ebenfalls akzeptiert. Schlüssel beginnen mit sk-tk-, werden bei der Erstellung nur einmal angezeigt und lassen sich einzeln begrenzen (Anfragen pro Minute, Ausgabengrenze, erlaubte Modelle, Ablaufdatum). Bewahren Sie Schlüssel auf dem Server auf und bauen Sie sie nie in Browser- oder Mobile-Code ein. Einen Schlüssel erhalten Sie per E-Mail an hello@tokenapi.biz.

Modelle

Stabile Modell-IDs.

Verwenden Sie die id aus GET /v1/models als model-Parameter. Eine Modell-ID ist ein stabiles Produkt: Wir können das Backend dahinter aktualisieren oder umleiten, um Qualität und Verfügbarkeit hoch zu halten, ohne dass Sie etwas ändern müssen. Antworten melden immer die aufgerufene Modell-ID.

GET /v1/models
{
  "object": "list",
  "data": [
    {
      "id": "tokenapi-pro",
      "object": "model",
      "owned_by": "tokenapi",
      "display_name": "TokenAPI Pro",
      "capabilities": ["streaming", "tools", "json_output"],
      "context_length": 131072,
      "pricing": {
        "currency": "USD",
        "prompt": "0.0000015",
        "completion": "0.000006",
        "input_per_million": 1.5,
        "output_per_million": 6
      }
    }
  ]
}

pricing.prompt / pricing.completion sind USD pro Token (Strings); input_per_million / output_per_million sind USD pro Million Tokens.

POST /v1/chat/completions

Chat Completions

Anfrage und Antwort folgen dem OpenAI-Format: messages mit Text- und Bildanteilen, tools / tool_choice, response_format, temperature, top_p, stop, max_tokens oder max_completion_tokens. Jede Antwort enthält den Header x-request-id; geben Sie ihn bei Support-Anfragen an.

Ohne max_tokens gilt die maximale Ausgabelänge des Modells.

Streaming

Server-Sent Events

Setzen Sie stream: true. Die Teile kommen als data:-Zeilen, und der Stream endet mit data: [DONE]. Mit stream_options.include_usage erhalten Sie den Tokenverbrauch in einem letzten Teil.

Node.js
const stream = await client.chat.completions.create({
  model: "tokenapi-pro",
  messages: [{ role: "user", content: "Write a haiku." }],
  stream: true,
  stream_options: { include_usage: true }, // final chunk carries usage
});

for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}
POST /v1/responses

Responses API

Unterstützt input als String oder Array, instructions, Funktions-Tools, text.format (JSON Schema) und die vollständige Streaming-Ereignisfolge (response.output_text.delta, response.completed, …).

Node.js
const res = await client.responses.create({
  model: "tokenapi-pro",
  instructions: "Answer in one sentence.",
  input: "What is a token?",
});
console.log(res.output_text);
POST /v1/messages

Anthropic Messages

Für Code, der mit dem Anthropic-SDK geschrieben wurde. Unterstützt system, Text- und Bildblöcke, tools mit tool_use / tool_result sowie Streaming-Ereignisse. Fehler folgen dem Anthropic-Format.

Node.js · @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";

const anthropic = new Anthropic({
  baseURL: "https://tokenapi.biz",   // SDK appends /v1/messages
  apiKey: process.env.TOKENAPI_KEY,
});

const msg = await anthropic.messages.create({
  model: "tokenapi-pro",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello!" }],
});
Fehler

Fehlerobjekte im OpenAI-Stil

Beispiel
{
  "error": {
    "message": "The model 'nope' does not exist or is disabled.",
    "type": "invalid_request_error",
    "code": "model_not_found",
    "param": null
  }
}
400invalid_request_error

Fehlerhaftes JSON, fehlendes model/messages oder ein nicht unterstützter Parameter.

401invalid_api_key

API-Schlüssel fehlt, ist falsch, deaktiviert oder abgelaufen.

402insufficient_quota

Das Guthaben deckt die maximalen Kosten dieser Anfrage nicht, oder die Ausgabengrenze des Schlüssels ist erreicht. Laden Sie auf oder senken Sie max_tokens.

403model_not_allowed

Dieser Schlüssel ist auf andere Modelle beschränkt.

404model_not_found

Unbekannte oder deaktivierte Modell-ID. Gültige IDs liefert GET /v1/models.

429rate_limit_exceeded

Das Limit für Anfragen pro Minute dieses Schlüssels ist überschritten. Wiederholen Sie die Anfrage nach der im Retry-After-Header genannten Zeit.

502upstream_unavailable

Alle Backend-Routen dieses Modells sind fehlgeschlagen. Eine Wiederholung ist sicher.

Upstream-Fehler werden automatisch auf einer anderen Route wiederholt, bevor Sie einen Fehler sehen. Ein 502 bedeutet, dass alle Routen fehlgeschlagen sind und nichts berechnet wurde.

Abrechnung & Limits

Prepaid, pro Token, nie im Minus.

  • Preise gelten pro Modell, in USD pro Million Input- und Output-Tokens (siehe Modelle).
  • Vor einer Anfrage werden ihre maximal möglichen Kosten (Prompt plus max_tokens) von Ihrem Guthaben reserviert. Reicht das Guthaben nicht, erhalten Sie einen 402, und nichts wird an den Anbieter gesendet.
  • Nach Abschluss der Anfrage werden die tatsächlichen Tokens berechnet und der Rest der Reservierung sofort freigegeben.
  • Anfragen, die fehlschlagen, bevor das Modell zu antworten beginnt (jede 4xx/5xx-Fehlerantwort), werden nicht berechnet. Wird ein Stream abgebrochen oder unterbrochen, werden nur die bereits erzeugten Tokens berechnet.
  • Ratenlimits gelten pro API-Schlüssel in Anfragen pro Minute; bei Überschreitung erhalten Sie einen 429 mit Retry-After.
Kompatibilität

Noch nicht unterstützt

  • /v1/responses: previous_response_id (senden Sie stattdessen den vollständigen Verlauf), eingebaute Tools wie web_search und file_id-Eingaben.
  • /v1/messages: erweitertes thinking und cache_control werden ignoriert.
  • n > 1 bei Chat Completions.
Fragen? Kontaktieren Sie uns