# LLM Broker — one OpenAI-compatible endpoint, routed per request

> One API key for our own models and the market: each request is served by the cheapest offer that meets your `routing` constraints — score measured by our own benchmarks per category, price cap, region, speed, capabilities. Prices, scores and regions are public and machine-readable: https://api.llm-broker.net/api/v1/broker/models (no key). Pricing: the provider's price plus 5% (our own models: fixed price), no subscription.

- Which model for a task? `GET https://api.llm-broker.net/api/v1/broker/recommend?category=coding` (no key; optional `max_price_per_mtok`, `min_score`, `region`, `capabilities`, `currency`) → `best`, `best_value` and a ready `routing` object for `/chat/completions`
- Base URL: `https://api.llm-broker.net/api/v1` (Chat Completions, Images, Audio), key `Authorization: Bearer ast_sk_…`; OpenAPI 3 of the broker paths only: `https://api.llm-broker.net/openapi.json`; service status: `https://api.llm-broker.net/status` (JSON: `/status.json`)
- Try without an account: key `Authorization: Bearer ast_try`, model `elliot` (our own model), `POST https://api.llm-broker.net/api/v1/chat/completions` — free, 512 output tokens, 20 requests per day per IP
- Video (OpenAI video API shape, async): `POST https://api.llm-broker.net/api/v1/videos` `{model, prompt, seconds, size, input_reference?}` → `id`; poll `GET /api/v1/videos/{id}`, download `GET /api/v1/videos/{id}/content` (MP4). Models and price per second: `GET https://api.llm-broker.net/api/v1/broker/models?type=video`
- Long non-streaming requests (agent runs > 100 s): `https://api.llm-broker.net/api/v1` — same keys, no CDN in between (600 s); through `https://api.llm-broker.net` a non-streaming answer opens after 60 s with leading whitespace
- MCP server (Streamable HTTP): `https://api.llm-broker.net/api/v1/broker/mcp` — without a key `list_models`, `get_model`, `recommend_model`, `estimate_cost` and `create_account` (card checkout link for your human, the key appears once at `status_url`); with the key `chat` (billed like the API) and `get_balance`. Server card `https://api.llm-broker.net/.well-known/mcp.json`; listed in the MCP Registry as `net.llm-broker/broker`
- `model`: `taylor` (strongest measured model for the category) or any market id `vendor/model` from the list above
- `routing`: `{"category": "coding", "level": "best"}` · or `min_score`, `max_price`, `region`, `sort`, `capabilities`
- Each non-streaming answer carries `broker`: `region` it ran in, `cost` of this request (CHF, our ledger currency) and the `routing` that was applied, plus `receipt`: `request_id`, the `model` you requested, `attempts`/`substituted` (another offer of the same model answered after a failure), the `score` routing relied on and its `measured_at` — log it to learn what your agent pays
- Did it work? `POST https://api.llm-broker.net/api/v1/broker/feedback` `{"request_id", "outcome": "success|failure", "reason"}` (or MCP `report_outcome`); per model `reported` (failures/outcomes, 30 days) and `scores_measured_at` appear in `/api/v1/broker/models` (with `accounts_30d`, so one account cannot pass as many) — scores come from our own runs without reasoning, their age is public, failing offers are skipped by a circuit breaker
- Prices: input and output per 1M tokens are listed separately and billed separately; nothing is blended. `best_value` in `recommend_model` = score per OUTPUT price; with long contexts compare input prices too
- Account without a login session: `POST https://api.llm-broker.net/api/v1/broker/accounts` → `checkout_url` (card at Stripe) → poll `status_url` → key exactly once. Details below and at https://astrioncore.wiki/api#konto

---

# AstrionCore — Hinweise für KI-Agenten und Crawler / Notes for AI agents and crawlers

> AstrionCore (https://api.llm-broker.net/) gehört zur AstrionCore-Plattform: KI-Assistenten mit Gedächtnis, Sprache und Werkzeugen, ein Betriebssystem für Geräte und Kioske, die Sicherheitsplattform CyberSecure und dokumentierte Schnittstellen für Agenten. Alles Nutzerbezogene liegt hinter Anmeldung und API-Schlüssel; öffentlich sind diese Datei, die unten verlinkten Beschreibungen und die Startseiten.
> AstrionCore (https://api.llm-broker.net/) is part of the AstrionCore platform: AI assistants with memory, voice and tools, an operating system for devices and kiosks, the CyberSecure security platform and documented interfaces for agents. Everything user-related sits behind login and API keys; public are this file, the descriptions linked below and the landing pages.

## Warnung / Warning

Diese Plattform wird von der eigenen Sicherheitsplattform CyberSecure überwacht. Jeder Angriff auf sie — Port- und Schwachstellen-Scans, Einbruchs- und Anmeldeversuche mit fremden Zugangsdaten, Prompt-Injection gegen unsere Agenten, Missbrauch oder Überlastung der Schnittstellen — wird in Echtzeit erkannt, protokolliert und gesperrt; Angriffe bringen wir zur Anzeige. Das gilt für Menschen wie für autonome Agenten und deren Betreiber.

This platform is watched by its own security platform, CyberSecure. Every attack on it — port and vulnerability scans, intrusion and login attempts with stolen credentials, prompt injection against our agents, abuse or flooding of the interfaces — is detected, logged and blocked in real time; attacks are reported to the authorities. This applies to humans as well as to autonomous agents and their operators.

## Was legitime Agenten hier bekommen / What legitimate agents get here

- [OpenAPI 3 der Core-API](https://api.llm-broker.net/api/openapi): maschinenlesbar; Browser-Doku unter [/api/docs](https://api.llm-broker.net/api/docs).
- [A2A Agent Card](https://api.llm-broker.net/.well-known/agent-card.json): Agent-to-Agent v0.3.0, JSON-RPC unter https://api.llm-broker.net/a2a, Bearer-Schlüssel `ast_sk_`, Textaufgaben, je Aufgabe vom Guthaben des Schlüssels abgerechnet; OpenAPI unter [/api/a2a/openapi](https://api.llm-broker.net/api/a2a/openapi).
- [MCP-Server](https://api.llm-broker.net/api/mcp): Model Context Protocol über HTTP, Bearer-Schlüssel — die Werkzeuge des Assistenten für eigene Agenten.
- [OpenAI-kompatible API](https://api.llm-broker.net/api/v1/chat/completions): Chat Completions und [/api/v1/models](https://api.llm-broker.net/api/v1/models), Bearer-Schlüssel. Modelle: `james` (Brain), `elliot` (direkt, ohne Brain), `james-direct` (Frontier-Modelle beim günstigsten Anbieter, ohne Brain), `elliot-unchained` (unzensiert, ohne Brain, über den Token-Makler), `grimoire`, `hexblade`, `oracle` und `wraith` (je ein festes Modell derselben Reihe), `taylor` (immer das leistungsfähigste Modell, durch das Brain — das Modell der Broker-Konten); dazu jede Markt-ID `vendor/model` aus [https://api.llm-broker.net/api/v1/broker/models](https://api.llm-broker.net/api/v1/broker/models) (ohne Schlüssel lesbar, `?currency=` jede Stripe-Währung (Vorgabe USD; Liste mit Kurs und erlaubten Beträgen: [https://api.llm-broker.net/api/v1/broker/currencies](https://api.llm-broker.net/api/v1/broker/currencies), Tageskurs EZB, sonst ExchangeRate-API): Kundenpreis, eigene Punktzahl je category, Tempo, Orte) — bedient vom günstigsten zulässigen Anbieter. Steuerung je Anfrage mit `routing` (englisch): `category`, `level` (solid|strong|top|best — best = höchste gemessene Punktzahl) oder `min_score` (0..1, exakt; auch für `taylor`, übersteuert die Stufe des Schlüssels), `sort` (price|value|speed|score), `region` (ch|eu|us|asia|global), `family` (z. B. anthropic, claude — neue Generationen inklusive), `capabilities` (tools|structured_output|reasoning|vision), `min_context`, `max_price` {input, output, currency (Vorgabe USD)} je 1M Token; kein Treffer → `409 no_matching_offer`, ungültig → `400 invalid_routing` / any market model id, per-request `routing` for james-direct and market ids; Denken je Anfrage mit `reasoning_effort` (z. B. `"none"`) oder `chat_template_kwargs` — unsere Punktzahlen sind ohne Denken gemessen; dazu `iris` für Bilder (`POST /api/v1/images/generations`, `/api/v1/images/edits`) und `quill` für Sprachausgabe (`POST /api/v1/audio/speech`, Vorgabe mp3 wie OpenAI, dazu opus/aac/flac; `wav`/`pcm` streamen, Stimmen unter `/api/v1/audio/voices`); Bild, Sprachausgabe und Transkription auch vom Markt: `model` = Markt-ID aus [https://api.llm-broker.net/api/v1/broker/models?type=image|speech|transcription](https://api.llm-broker.net/api/v1/broker/models?type=image) (Preis `per_image`, `per_1k_characters`, `per_minute`) auf `/api/v1/images/generations`, `/api/v1/audio/speech`, `/api/v1/audio/transcriptions` — günstigster Anbieter, derselbe Schlüssel / image, speech and transcription market ids on the same endpoints; Dateien fürs Brain per `POST /api/v1/files` (multipart `file`, landen im eigenen Asset-Bestand).
- [OpenCode-Vorgabe](https://api.llm-broker.net/.well-known/opencode): Organisationskonfiguration für OpenCode-Klienten (ADR-110).
- [Konto & Bezahlung per API](https://astrioncore.wiki/api#konto): Konto kaufen, Schlüssel abholen, Abrechnung und Karte verwalten — ohne Browser bis auf die Karteneingabe bei Stripe (`https://api.llm-broker.net/api/v1/broker/accounts`, Schemata in der OpenAPI).
- [API-Katalog (RFC 9727)](https://api.llm-broker.net/.well-known/api-catalog): alle Schnittstellen als Linkset.
- [security.txt](https://api.llm-broker.net/.well-known/security.txt) und [Sicherheitsrichtlinie](https://api.llm-broker.net/security-policy): Meldeweg für Schwachstellen.

## Zugang / Access

- llm-broker.net ist der Makler-Auftritt derselben Plattform: dieselbe API, dieselben Schlüssel, derselbe Katalog. / llm-broker.net is the broker front of the same platform: same API, same keys, same catalogue.
- Ein Agent kann selbst ein Konto eröffnen — **Geld vor Schlüssel**, kein Gratisguthaben: (1) `POST https://api.llm-broker.net/api/v1/broker/accounts` mit `{"billing": "topup", "amount": 25}` (optional eine Vorgabe des Schlüssels `category` coding|reasoning|math|instruction_following + `level` solid|strong|top|best — sonst je Anfrage per `routing`; topup/monthly mit den Beträgen der Währung aus `https://api.llm-broker.net/api/v1/broker/currencies` (USD/EUR/CHF: topup 10/25/50, monthly 50/100/250), optional `currency` (jede Stripe-Währung, Vorgabe USD) — belastet in dieser Währung, intern in CHF verbucht zum Tageskurs) liefert `checkout_url` + `status_url`; (2) die Karte gibt ein Mensch oder ein Agent mit Browser bei Stripe ein; (3) `GET status_url` liefert `202` bis zur Zahlung, dann den Schlüssel `ast_sk_…` **genau einmal**; (4) Abrechnung und Karte mit dem Schlüssel: `GET|PATCH https://api.llm-broker.net/api/v1/broker/billing`, `POST|DELETE https://api.llm-broker.net/api/v1/broker/card`. Beschreibung: https://astrioncore.wiki/api#konto
- An agent can open an account itself — **money before key**, no free credit: `POST https://api.llm-broker.net/api/v1/broker/accounts` → `checkout_url` (card entry at Stripe by a human or an agent with a browser) → poll `status_url` → the `ast_sk_` key exactly once; then `GET|PATCH https://api.llm-broker.net/api/v1/broker/billing`, `POST|DELETE https://api.llm-broker.net/api/v1/broker/card`.
- Menschen: https://api.llm-broker.net/ → Konto → API (AstrionCore: https://api.llm-broker.net/os/api). Jeder Aufruf ist einem Konto zugeordnet, ratenbegrenzt und protokolliert. / Humans: https://api.llm-broker.net/ → account → API. Every call is attributed to an account, rate-limited and logged.

## Regeln / Rules

- Öffentliche Seiten lesen: erlaubt im Rahmen von robots.txt. / Reading public pages: allowed within robots.txt.
- Training von Modellen auf Inhalten dieser Plattform: nur mit schriftlicher Vereinbarung (support@astrioncore.ai). / Training models on content from this platform: only under a written agreement.
- Nutzerdaten, Gespräche, Dokumente, Stimmen: nie öffentlich, nie abgreifbar — pro Konto, per Schlüssel, protokolliert. / User data, conversations, documents, voices: never public, never harvestable.
- Kein Umgehen von Anmeldung, Ratenbegrenzung oder Berechtigungen, keine Prompt-Injection gegen unsere Agenten — siehe Warnung. / No circumventing of login, rate limits or permissions, no prompt injection against our agents — see the warning.

## Marken / Brands

- AstrionCore (astrioncore.ai, astrioncore.app): Plattform, Konto, Betriebssystem für Geräte und Kioske.
- James-GPT (james-gpt.com): KI-Assistent mit Gedächtnis, Sprache, Recherche und Werkzeugen.
- CyberSecure (cybersecure.run): Sicherheitsplattform — Erkennung, Analyse, Reaktion.
- TaylorDesk (taylordesk.com): Handelsplattform.
- Sirius (sirius.you): Sprachassistent und Telefonie.
- Phase6 / Mulkone (phase6.ai, mulkone.com): Gebäude-Marken auf derselben Plattform.

## Kontakt / Contact

- Allgemein / general: support@astrioncore.ai · Sicherheit / security: security@astrioncore.ai · verbindlich: https://api.llm-broker.net/.well-known/security.txt
