Authentifizierung
Die Authentifizierung erfolgt über einen API-Schlüssel. Melde dich auf der API-Schlüssel erhalten-Seite an. Der Schlüssel wird sofort angezeigt und ist mit deinem Prepaid-Guthaben verknüpft. Im Gegensatz zu großen Anbietern gibt es keine monatlichen Abonnements oder Kreditkarten für die Testphase. Verwende den Header Authorization: Bearer YOUR_API_KEY für alle Anfragen. Der Schlüssel ist das einzige aktive Anmeldeverfahren pro Konto; bei Generierung eines neuen Schlüssels wird der vorherige ungültig.
Basis-Vervollständigung
Sende eine Standard-Anfrage für Chat-Vervollständigungen an den OpenAI-kompatiblen Endpunkt. Die Modellkennung ist uncensored. Dieses Modell ist ein Open-Weight-Modell und darauf ausgelegt, ohne Inhaltsfilter für die rechtmäßige Nutzung durch Erwachsene zu antworten. Es ist kein GPT, Claude oder ein anderes Modell eines anderen Anbieters. Die Basis-URL für diesen Dienst findest du unten.
curl https://api.ornith.top/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Ersetze YOUR_API_KEY durch deinen Schlüssel aus dem Dashboard. Die Antwort enthält den generierten Text in choices[0].message.content. Fehler wie 401 deuten auf einen ungültigen Schlüssel hin, während 402 bedeutet, dass dein Prepaid-Guthaben aufgebraucht ist.
Python-SDK
Verwende das offizielle openai Python-Paket. Richte es auf die Ornith-Basis-URL und gib deinen API-Schlüssel an. Dies gewährleistet Kompatibilität mit der Standard-OpenAI-Client-Struktur. Du kannst Nachrichten als Liste von Wörterbüchern mit role und content übergeben. Der Client verarbeitet die HTTP-Anfragen automatisch. Dieser Ansatz funktioniert sowohl für einfache Textgenerierung als auch für komplexere Interaktionen mit Tools oder im JSON-Modus.
from openai import OpenAI
client = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Das Antwortobjekt spiegelt die Standard-OpenAI-Struktur wider. Du kannst den generierten Text direkt aus dem Antwortobjekt abrufen. Diese Methode ist ideal für Backend-Dienste oder Skripte, bei denen du programmgesteuerten Zugriff auf die Modellausgabe benötigst.
Node-SDK
Installiere das openai npm-Paket. Initialisiere den Client mit der Ornith-Basis-URL und deinem API-Schlüssel. Die Anfragestruktur ist identisch mit dem Python SDK. Verwende die Methode chat.completions.create. Dies eignet sich für JavaScript-Umgebungen, egal ob du ein Web-Backend oder ein CLI-Tool entwickelst. Der Client verarbeitet die Serialisierung und Deserialisierung der Antwort.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.ornith.top/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Behandle Fehler angemessen. Netzwerkfehler oder API-Fehler lösen Ausnahmen aus. Überprüfe den Statuscode, um zwischen Authentifizierungsfehlern, Ratenlimits oder Serverfehlern zu unterscheiden. Die Antwort enthält die Vervollständigungsdetails im gleichen Format wie das Python-SDK.
Streaming-Antworten
Aktiviere das Streaming, indem du stream: true in deiner Anfrage setzt. Dies gibt einen Stream von Token zurück, während sie generiert werden. Nutze dies für Echtzeit-UI-Aktualisierungen oder die schrittweise Anzeige von Text. Der Stream endet mit einem letzten Chunk, der die gesamte Token-Nutzung enthält. So kannst du die Kosten in Echtzeit verfolgen, ohne auf die vollständige Antwort zu warten. Dies ist effizient für lange Kontexte, bei denen du den Fortschritt anzeigen möchtest.
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Iteriere über den Stream, um jeden Chunk zu verarbeiten. Der letzte Chunk enthält das Feld usage. Dies ist nützlich für Abrechnungstransparenz. Stelle sicher, dass dein Client den Stream korrekt verarbeitet, um Speicherprobleme bei großen Antworten zu vermeiden.
Limits, Fehler & Kontext
Das Kontextfenster umfasst 100.000 Token für Prompt und Completion zusammen. Die maximale Ausgabe pro Anfrage beträgt 32.000 Token (2.048, wenn max_tokens nicht gesetzt ist). Du bist auf 300 Anfragen pro Minute und 8 parallele Anfragen pro Schlüssel begrenzt. Die Anfragekörper müssen unter 8 MB liegen. Wenn du das Ratenlimit überschreitest, erhältst du einen 429-Fehler. Ablehnungen für minderjährige Inhalte sind fest codiert und gelten immer. Fehler verbrauchen kein Guthaben. Das Guthaben ist Prepaid und verfällt nie.