API Dokumentation

OpenAI-kompatibel — dein bestehendes Setup funktioniert sofort

Quickstart

In 3 Schritten loslegen.

  1. Account erstellen
    Registriere dich auf smartllm.at/portal/register
  2. API-Key generieren
    Im Portal unter API Keys einen neuen Key erstellen.
  3. Ersten Request senden
# Chat Completion curl https://smartllm.at/v1/chat/completions \ -H "Authorization: Bearer DEIN-API-KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nemotron-3-super:latest", "messages": [{"role": "user", "content": "Hallo!"}], "temperature": 0.7, "max_tokens": 1000 }'

Base URL

https://smartllm.at/v1

Ersetze einfach https://api.openai.com/v1 durch https://smartllm.at/v1 in deinem bestehenden Code.

Endpoints

POST /v1/chat/completions

Chat mit dem Modell. Unterstützt Streaming.

{ "model": "nemotron-3-super:latest", "messages": [ {"role": "system", "content": "Du bist ein hilfreicher Assistent."}, {"role": "user", "content": "Wie ist das Wetter?"} ], "temperature": 0.7, "max_tokens": 1000, "stream": false }

GET /v1/models

Liste aller verfügbaren Modelle.

POST /v1/completions

Legacy Text-Completion Endpoint.

POST /v1/embeddings

Embedding-Vektoren für Text. Nur Modelle mit embedding-Capability. Chat-Modelle auf diesem Endpoint → 400; unbekannte Modelle → 404.

curl https://smartllm.at/v1/embeddings \ -H "Authorization: Bearer DEIN-API-KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nomic-embed-text:latest", "input": "Hallo Welt" }'

input akzeptiert einen String oder ein Array von Strings (Batch). Verfügbare Embedding-Modelle: nomic-embed-text:latest.

Vision-Support

Zwei Modelle akzeptieren Bilder als Input via image_url-Content-Block (OpenAI-kompatibel).

ModellKategorieEmpfohlenes max_tokensEinsatz
Qwen/Qwen3.5-122B-A10B-FP8 Flagship 200–500 Komplexe Bildanalyse, Detail-Extraction, Dokumentenanalyse, Rechnungsklassifikation
gemma4-nothink:26b / gemma4-think:26b Allgemein ≥ 2000 OCR, Bildklassifikation, kurze Beschreibungen
qwen3.6:27b Allgemein 500–1000 Bildanalyse im Tagesgeschäft, gute Balance aus Latenz und Qualität
nemotron3:33b Multimodal (Omni) 500–1500 Bild und Audio in einem Request, gemischte Anfragen

Beispiel

curl https://smartllm.at/v1/chat/completions \ -H "Authorization: Bearer DEIN-API-KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "Qwen/Qwen3.5-122B-A10B-FP8", "messages": [{ "role": "user", "content": [ {"type": "text", "text": "Was siehst du auf diesem Bild?"}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,..."}} ] }], "max_tokens": 500 }'

Hinweise pro Modell

Qwen 3.5 122B

  • Nativ multimodal, schnelle Antwortgenerierung.
  • Empfohlen für mehrschichtige visuelle Aufgaben und niedrige Latenz bei Vision.
  • max_tokens zwischen 200 und 500 reicht in der Regel.

Gemma 4 26B

  • Führt bei Vision-Requests ausführliches internes Reasoning durch — typisch 1500–2000 Tokens, bevor die Antwort geschrieben wird.
  • max_tokens mindestens 2000 setzen, sonst kommt leerer Content zurück (Budget wird im Reasoning aufgebraucht).
  • Für niedrige Latenz Qwen 3.5 122B bevorzugen.

Audio BETA

nemotron3:33b akzeptiert zusätzlich Audio-Inputs.

Beta-Hinweis: Pricing und API-Schema für Audio-Inputs können sich ändern. Verfügbarkeit ist nicht SLA-garantiert.

Schema

OpenAI-kompatibler Content-Block mit Typ input_audio. Daten als Base64.

curl https://smartllm.at/v1/chat/completions \ -H "Authorization: Bearer DEIN-API-KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nemotron3:33b", "messages": [{ "role": "user", "content": [ {"type": "text", "text": "Was sagt diese Aufnahme?"}, {"type": "input_audio", "input_audio": {"data": "BASE64...", "format": "wav"}} ] }], "max_tokens": 1000 }'

Format-Beschränkungen

ModalitätFormateEmpfohlene DauerToken-Verbrauch (ca.)
AudioWAV, MP3, M4Abis 60 Sek.~32 Token/Sek.

Pricing

Einheitliches Token-Pricing. Audio wird vom Modell intern tokenisiert und in usage.prompt_tokens mitgemeldet — es gibt aktuell keine separate Audio-Gebühr. Zur Orientierung bei €10/M Tokens:

InputToken-RateKosten/SekundeKosten/Minute
Textvariabel
Audio~32 Token/Sek.~€0.00032~€0.019

Token-Raten sind Orientierungswerte basierend auf vergleichbaren Omni-Modellen. Tatsächlicher Verbrauch ergibt sich aus usage.prompt_tokens der jeweiligen Antwort. Endabrechnung immer auf realen Token-Counts.

Parameter-Referenz

ParameterTypDefaultBeschreibung
modelstringrequiredModell-ID (siehe GET /v1/models)
messagesarrayrequiredChat-Verlauf als Array von {role, content}
temperaturefloat0.7Kreativität (0.0 = deterministisch, 1.0 = kreativ)
max_tokensint1000Maximale Antwortlänge in Tokens
streamboolfalseStreaming-Antwort (Server-Sent Events)
top_pfloat1.0Nucleus Sampling
stopstring/arraynullStop-Sequenzen

Smart-Modus vs Direct

Smart-Modus

55+ Tools automatisch verfügbar. Checkin-Modell prüft ob Tools nötig sind. Ideal für Chat, Assistenten, Recherche.

Direct-Modus

Request geht 1:1 ans Modell. Kein Checkin, keine Tools. Für Coding-Agents, eigenes Tool-Calling, OpenCode.

Modus pro API-Key einstellbar im Portal.

Integration

Python (OpenAI SDK)

import openai client = openai.OpenAI( api_key="DEIN-KEY", base_url="https://smartllm.at/v1" ) response = client.chat.completions.create( model="nemotron-3-super:latest", messages=[{"role": "user", "content": "Hallo!"}] ) print(response.choices[0].message.content)

JavaScript (fetch)

const response = await fetch("https://smartllm.at/v1/chat/completions", { method: "POST", headers: { "Authorization": "Bearer DEIN-KEY", "Content-Type": "application/json" }, body: JSON.stringify({ model: "nemotron-3-super:latest", messages: [{role: "user", content: "Hallo!"}] }) }); const data = await response.json(); console.log(data.choices[0].message.content);

Rate Limits

LimitDefaultBeschreibung
RPM60Requests pro Minute
TPD1.000.000Tokens pro Tag (Input + Output)
Concurrent3Gleichzeitige Requests

Limits pro API-Key konfigurierbar. Bei Überschreitung: HTTP 429.

Fehler-Codes

CodeBedeutungLösung
401Invalid API KeyKey prüfen, neuen Key erstellen
429Rate LimitWarten oder Limits erhöhen lassen
502Backend offlineModell wird geladen, kurz warten
504TimeoutKleineres Modell oder weniger Tokens

Im Playground testen

Probiere die API direkt im Browser aus — ohne Setup.

Zum Playground