https://julian-neumann.org/api/openai.php/v1Secure Worker Bridge
OpenAI-kompatible Local-AI API
Nutze Julians lokale LM-Studio-Pipeline ueber eine sichere REST API - mit OpenAI-aehnlichen Chat-Completions und Responses.
3-Minuten-Test
Schnellstart
Authorization: Bearer YOUR_API_KEYX-API-Key: YOUR_API_KEYDie API ist eine sichere Bridge. LM Studio und Gateway bleiben lokal auf 127.0.0.1; externe Clients sprechen nur mit julian-neumann.org.
Contract
Endpunkte
/openai.php/v1/modelsOpenAI-aehnliche Modellliste/openai.php/v1/chat/completionsChat Completions mit Job/Wait Bridge/openai.php/v1/responsesResponses API kompatible Textausgabe/v1/chat.phpLegacy Chat Job API/v1/summarize.phpLegacy Text Summary Job API/v1/pdf-summarize.phpLegacy PDF Summary Job APITry it
Interaktive Live-Konsole
Der API-Key wird nur im Browser fuer den Request verwendet. Speichern ist optional und nur in sessionStorage.
{}
{}
Copy/Paste
OpenAI-kompatible Beispiele
curl https://julian-neumann.org/api/openai.php/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "local/gemma-4-26b-a4b-it",
"messages": [
{"role": "system", "content": "Du antwortest kurz auf Deutsch."},
{"role": "user", "content": "Was ist die Neumann AI API?"}
],
"temperature": 0.2
}'
$apiKey = "YOUR_API_KEY"
$body = @{
model = "local/gemma-4-26b-a4b-it"
messages = @(
@{ role = "system"; content = "Du antwortest kurz auf Deutsch." },
@{ role = "user"; content = "Was ist die Neumann AI API?" }
)
temperature = 0.2
} | ConvertTo-Json -Depth 10
Invoke-RestMethod "https://julian-neumann.org/api/openai.php/v1/chat/completions" `
-Method POST `
-Headers @{ Authorization = "Bearer $apiKey" } `
-ContentType "application/json" `
-Body $body
import requests
api_key = "YOUR_API_KEY"
response = requests.post(
"https://julian-neumann.org/api/openai.php/v1/chat/completions",
headers={"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"},
json={
"model": "local/gemma-4-26b-a4b-it",
"messages": [
{"role": "system", "content": "Du antwortest kurz auf Deutsch."},
{"role": "user", "content": "Was ist die Neumann AI API?"},
],
"temperature": 0.2,
},
timeout=30,
)
print(response.json()["choices"][0]["message"]["content"])
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://julian-neumann.org/api/openai.php/v1",
)
response = client.chat.completions.create(
model="local/gemma-4-26b-a4b-it",
messages=[
{"role": "system", "content": "Du antwortest kurz auf Deutsch."},
{"role": "user", "content": "Was ist die Neumann AI API?"},
],
)
print(response.choices[0].message.content)
Responses
Responses API Beispiel
curl https://julian-neumann.org/api/openai.php/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"local/gemma-4-26b-a4b-it","input":"Schreibe einen kurzen Test auf Deutsch."}'
Formate
Antwortformate
Chat Completions
Liefert object: chat.completion, choices[0].message.content und geschaetzte Usage.
Responses
Liefert object: response, output_text und output[0].content.
Async fallback
Wenn die lokale KI nicht innerhalb des Wait-Fensters fertig ist, kommt 202 mit Status- und Result-URL.
Security
Lokale KI bleibt lokal
LM Studio ist nicht oeffentlich. Der lokale Worker pollt ausgehend, spricht Gateway und LM Studio auf 127.0.0.1 an und schreibt Ergebnisse zur Domain zurueck. Speichere API-Keys im Browser nur bewusst temporaer.
Fehler
Typische Statuscodes
invalid_api_keyKey fehlt oder ist falsch.insufficient_scopeKey hat nicht den passenden Scope.neumann.async_jobJob laeuft asynchron weiter.rate_limit_exceededZu viele Requests im Zeitfenster.runtime_unavailableLokaler Stack/Gateway/Worker nicht bereit.streaming_not_supportedStreaming ist fuer v1 bewusst deaktiviert.