Wenn Sie nach einem Windsurf OpenAI-kompatiblen API-Setup gesucht haben, meinen Sie wahrscheinlich eines von zwei verschiedenen Dingen:
- Sie möchten das Modell ändern, das Windsurf oder Devin Desktop innerhalb von Cascade verwendet.
- Sie möchten, dass der Code, die Skripte, die Tools oder die lokale App, die Windsurf Ihnen beim Erstellen hilft, OpenAI-kompatiblen API-Traffic über einen einzigen gemeinsamen Gateway-Schlüssel sendet.
Das sind nicht die gleichen Setups. Die öffentlichen Dokumente von Windsurf und Devin Desktop, die am 08.07.2026 geprüft wurden, dokumentieren die Modellauswahl von Cascade, Devin Local, die Nutzungs-/Guthabenabrechnung und MCP-Server für Tools. Sie dokumentieren keinen nativen Bildschirm für „benutzerdefinierte OpenAI-kompatible Anbieter“, auf dem Sie eine Basis-URL eines Drittanbieter-LLM für Cascade selbst einfügen.
Das ist wichtig, denn das sichere Flatkey-Muster besteht nicht darin, so zu tun, als hätte Windsurf ein natives Anbieterfeld, das die Dokumentation nicht zeigt. Verwenden Sie Flatkey für den OpenAI-kompatiblen SDK- und App-Traffic rund um ein von Windsurf gesteuertes Projekt: Testskripte, Agent-Tools, Backend-Dienste, CLI-Workflows und Anwendungscode, der bereits einen Endpunkt im Stil von Chat Completions aufruft.
Flatkey gibt diesem Traffic einen einzigen Schlüssel, eine OpenAI-kompatible Basis-URL, Modell-Routing, Einblick in die Nutzung und eine Überprüfung der Abrechnung. Windsurf bleibt die Programmierumgebung; Flatkey wird zur API-Route, die Ihr Projektcode verwendet.
Schnelle Antwort für das Windsurf OpenAI-kompatible API-Setup
Verwenden Sie diese Entscheidungstabelle, bevor Sie die Konfiguration ändern.
| Ziel | Wo zu konfigurieren | Womit es nicht zu verwechseln ist |
|---|---|---|
| Das von Cascade verwendete Modell ändern | Verwenden Sie die Modellauswahl von Windsurf oder Devin Desktop. | Fügen Sie keine Flatkey LLM-Basis-URL in ein MCP-Serverfeld ein. |
| Die Anfragen Ihrer App im OpenAI-Format weiterleiten | Konfigurieren Sie Ihre App, CLI, Ihr Testskript oder Ihren SDK-Client mit einem Flatkey-Schlüssel und einer Basis-URL. | Dies ändert den App-Traffic, nicht die interne Modellauswahl von Cascade. |
| Externe Tools zu Cascade hinzufügen | Konfigurieren Sie MCP-Server in den Windsurf-Einstellungen oder mcp_config.json. | MCP serverUrl ist eine Tool-Server-URL, nicht die LLM Chat Completions Basis-URL. |
| Nutzung und Kosten für Coding-Agent-Workloads nachweisen | Speichern Sie Flatkey-Anforderungsprotokolle/-nutzung plus Windsurf- oder Devin-Nutzungsdatensätze separat. | Gehen Sie nicht davon aus, dass Windsurf ACUs oder Guthaben der externen API-Nutzung entsprechen. |
Der praktische Weg für eine Windsurf OpenAI-kompatible API ist: Lassen Sie Windsurf beim Bearbeiten des Codes helfen, aber leiten Sie die Modellaufrufe des Codes über Flatkey. Das hält das Windsurf OpenAI-kompatible API-Setup überprüfbar, da die Programmierumgebung, der API-Schlüssel und die Produktionsroute jeweils einen klaren Besitzer haben.
Was die offiziellen Dokumente von Windsurf und Devin tatsächlich unterstützen
Die aktuellen öffentlichen Dokumente unterstützen drei Fakten, die diesen Leitfaden prägen.
| Bereich der offiziellen Doku | Was es für dieses Setup bedeutet |
|---|---|
| Cascade-Modellauswahl | Cascade hat eine eigene Modellauswahl. Verwenden Sie diese für den Assistenten innerhalb von Windsurf oder Devin Desktop. |
| Nutzung und Guthaben | Die Nutzungsabrechnung von Windsurf/Devin deckt lokale Agenten wie Cascade, Devin CLI und Devin Local ab. Dies ist getrennt von den Aufrufen, die Ihre eigene App an Flatkey sendet. |
| MCP-Server | Cascade kann MCP-Server über stdio, HTTP oder SSE verwenden. Remote-HTTP-MCPs verwenden ein serverUrl- oder url-Feld. Dieses Feld ist für Tool-Server gedacht, nicht um den LLM-Anbieter hinter Cascade zu ersetzen. |
Ein Artikel über eine Windsurf OpenAI-kompatible API sollte also nicht sagen: „Öffnen Sie die Windsurf-Einstellungen und fügen Sie Flatkey als benutzerdefinierten OpenAI-Anbieter hinzu“, es sei denn, die Live-Dokumentation oder die Produkt-Benutzeroberfläche, die Sie verwenden, zeigt diese Fähigkeit deutlich. Ein sichererer Leitfaden für die Produktion ist es, den Code und die Tools zu konfigurieren, die Windsurf erzeugt.
Schritt 1: Einen Flatkey-Schlüssel erstellen und die Route wählen
Erstellen Sie in Flatkey einen Schlüssel für diesen Workload und wählen Sie einen Modell-Alias, der zur Endpunkt-Familie passt, die Sie aufrufen möchten. Für eine Route im Stil von Chat Completions halten Sie den API-Stamm und den Endpunkt getrennt:
FLATKEY_API_KEY=sk-fk-your-key
FLATKEY_BASE_URL=https://router.flatkey.ai/v1
FLATKEY_MODEL=your-current-flatkey-model-aliasFügen Sie für direkte curl-Aufrufe den Endpunktpfad hinzu:
curl "$FLATKEY_BASE_URL/chat/completions" \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$FLATKEY_MODEL"'",
"messages": [
{ "role": "user", "content": "Reply with exactly: flatkey route ok" }
]
}'Geben Sie einem SDK nicht sowohl https://router.flatkey.ai/v1 als auch /chat/completions als Basis-URL an. Die SDK-Basis-URL sollte normalerweise bei /v1 enden; direkte curl-Anfragen verwenden den vollständigen Endpunkt.
Schritt 2: Die Route in eine SDK-Client-Factory einfügen
Das nützlichste Windsurf OpenAI-kompatible API-Setup ist eine kleine Client-Schnittstelle, die Windsurf sicher bearbeiten kann. Bewahren Sie Geheimnisse in Umgebungsvariablen auf und halten Sie Modell-Aliase konfigurierbar.
Python-Vorlage:
import os
from openai import OpenAI
def make_llm_client() -> OpenAI:
return OpenAI(
api_key=os.environ["FLATKEY_API_KEY"],
base_url=os.environ.get("FLATKEY_BASE_URL", "https://router.flatkey.ai/v1"),
)
client = make_llm_client()
response = client.chat.completions.create(
model=os.environ["FLATKEY_MODEL"],
messages=[
{"role": "user", "content": "Reply with exactly: sdk route ok"}
],
)
print(response.choices[0].message.content)
print(response.usage)Node-Vorlage:
import OpenAI from "openai";
export function makeLlmClient() {
return new OpenAI({
apiKey: process.env.FLATKEY_API_KEY,
baseURL: process.env.FLATKEY_BASE_URL ?? "https://router.flatkey.ai/v1",
});
}
const client = makeLlmClient();
const response = await client.chat.completions.create({
model: process.env.FLATKEY_MODEL!,
messages: [
{ role: "user", content: "Reply with exactly: sdk route ok" },
],
});
console.log(response.choices[0]?.message?.content);
console.log(response.usage);Behandeln Sie diese Snippets als Vorlagen, bis Sie sie mit Ihrer installierten SDK-Version, dem aktuellen Flatkey-Schlüssel, dem aktuellen Modell-Alias und der Endpunkt-Familie getestet haben. Wenn Ihre App bereits einen Base-URL-Wrapper hat, aktualisieren Sie diesen Wrapper, anstatt Flatkey-Variablen über Controller und Skripte zu verteilen.
Für SDK-spezifische Migrationsdetails kombinieren Sie diesen Leitfaden mit den Flatkey-Leitfäden für das Cursor OpenAI-kompatible API-Setup und das Claude Code API-Router-Setup.
Schritt 3: Bitten Sie Windsurf, die Codeänderung vorzunehmen, nicht das Geheimnis zu speichern
Windsurf ist nützlich, um die Migration über ein gesamtes Repository anzuwenden, aber der Prompt sollte die Arbeit einschränken.
Aktualisieren Sie das LLM-Client-Setup, sodass alle OpenAI-kompatiblen Chat-Anfragen Folgendes verwenden:
- FLATKEY_API_KEY für das Bearer-Token
- FLATKEY_BASE_URL als API-Stammverzeichnis
- FLATKEY_MODEL als Modell-Alias
Keine Geheimnisse hartcodieren.
Ändern Sie keine Prompts, Geschäftslogik oder Wiederholungsrichtlinien.
Aktualisieren Sie nur die Client-Factory und den kleinstmöglichen Test, der zur Überprüfung der Route erforderlich ist.Dadurch bleibt die Arbeit an der Windsurf OpenAI-kompatiblen API auf die Konfiguration beschränkt und wird nicht zu einem umfassenden Refactoring.
Schritt 4: Halten Sie die MCP-Konfiguration getrennt
Dies ist der häufigste Einrichtungsfehler. Die MCP-Konfiguration von Windsurf verbindet Cascade mit Tools. Ein entfernter MCP-Eintrag kann so aussehen:
{
"mcpServers": {
"internal-docs": {
"serverUrl": "https://tools.example.com/mcp"
}
}
}Diese serverUrl ist nicht der Ort, an dem Sie https://router.flatkey.ai/v1 eintragen. Der MCP-Server kann Tools für Cascade bereitstellen, und diese Tools können Flatkey intern aufrufen, wenn Sie sie so erstellen. Aber die MCP-Transportkonfiguration und das OpenAI-kompatible Modell-Routing sind unterschiedliche Schichten.
Verwenden Sie diese Aufteilung:
| Schicht | URL gehört hierher | Beispiel |
|---|---|---|
| App-Modell-Traffic | OpenAI-kompatible API-Basis-URL | https://router.flatkey.ai/v1 |
| Direkte Endpunkt-Anfrage | Vollständiger Chat-Endpunkt | $FLATKEY_BASE_URL/chat/completions |
| Cascade-Tool-Integration | MCP-Server-URL | https://tools.example.com/mcp |
| Interner Windsurf-Assistent | Integrierte Modellauswahl | Cascade-Modellmenü |
Wenn Ihr MCP-Server ein Modell aufruft, platzieren Sie den Flatkey-Schlüssel auf der MCP-Serverseite und nicht in der Windsurf-Client-Konfiguration, es sei denn, Ihr Sicherheitsmodell erlaubt explizit eine lokale Entwickler-Anmeldeinformation.
Schritt 5: Speichern Sie ein Verifizierungspaket
Eine Migration der Windsurf OpenAI-kompatiblen API ist erst dann bereit, wenn Sie nachweisen können, dass die Route funktioniert und zurückgesetzt werden kann. Der Zweck eines Verifizierungspakets für die Windsurf OpenAI-kompatible API besteht darin, die erste Routenänderung klein genug zu halten, damit Technik, Finanzen und Betrieb sie gemeinsam überprüfen können.
| Prüfung | Bedingung für Erfolg | Zu speichernder Nachweis |
|---|---|---|
| Authentifizierung | Anfrage gibt eine Modellantwort zurück, nicht 401 oder 403. | Geschwärzter curl-Befehl, HTTP-Status, Antwort-ID falls vorhanden. |
| Basis-URL | Kein doppeltes /v1/v1 oder fehlender Endpunkt-Pfad. | Endgültig aufgelöste Basis-URL und direkter Endpunkt-Test. |
| Modell-Alias | Der angeforderte Alias verweist auf eine verfügbare Flatkey-Route. | Modell-Alias, Endpunkt-Familie und im Konto sichtbarer Kataloghinweis. |
| Nutzung | Die Anfrage erscheint in den Flatkey-Nutzungs- oder Anfrageprotokollen. | Screenshot/Export der Nutzungs-, Modell- und Token- oder Einheitenfelder. |
| Kostenüberprüfung | Finanz- oder Betriebsabteilung kann Ausgaben dem Schlüssel/Arbeitslast zuordnen. | Nutzungszeile, Auswirkung auf den Saldo, Rechnungspfad oder Anfrageprotokoll. |
| Rollback | Eine Konfigurationsänderung leitet den Traffic zur vorherigen Route zurück. | Vorherige Basis-URL, vorheriger Schlüsselbesitzer, vorheriger Modell-Alias. |
Für detailliertere Nutzungsfelder verwenden Sie den Leitfaden zum Token-Nutzungs-Dashboard, nachdem der erste Smoke-Test funktioniert.
Schritt 6: Testen Sie Streaming und Tools nach dem einfachen Chat
Beginnen Sie nicht mit der schwierigsten Route. Weisen Sie zuerst eine nicht-streamende Chat-Anfrage nach. Testen Sie dann Streaming und Tool-Aufrufe als separate Verträge.
Nachweis für Streaming:
curl -N "$FLATKEY_BASE_URL/chat/completions" \
-H "Authorization: Bearer $FLATKEY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "'"$FLATKEY_MODEL"'",
"stream": true,
"messages": [
{ "role": "user", "content": "Count from one to five." }
]
}'Der Nachweis für Tool-Aufrufe sollte ein winziges Funktionsschema verwenden, bevor Sie ein Produktions-Toolset ausprobieren:
{
"type": "function",
"function": {
"name": "lookup_ticket",
"description": "Gibt den Status eines Test-Tickets zurück.",
"parameters": {
"type": "object",
"properties": {
"ticket_id": { "type": "string" }
},
"required": ["ticket_id"]
}
}
}Wenn einfacher Chat funktioniert, aber Streaming oder Tools fehlschlagen, debuggen Sie nicht mehr die Basis-URL. Sie überprüfen die Routenfähigkeit, die Modellunterstützung, das SDK-Parsing oder das Gateway-Verhalten für diese Funktion.
Tabelle zur Fehlerbehebung
| Symptom | Wahrscheinliche Ursache | Was zu überprüfen ist |
|---|---|---|
401 oder 403 | Falscher Schlüssel, fehlender Bearer-Header, widerrufener Schlüssel oder falsche Umgebung. | Geben Sie aus, welche Umgebungsvariable geladen wird, geben Sie niemals das Geheimnis aus. |
404 | Falscher Endpunktpfad oder doppelter Basispfad. | Vergleichen Sie die SDK-Basis-URL mit dem direkten curl-Endpunkt. |
| Modell nicht gefunden | Alias existiert für diesen Schlüssel oder diese Endpunktfamilie nicht. | Bestätigen Sie den Modell-Alias im aktuellen Katalog von Flatkey und in Ihrem Konto. |
| Cascade ignoriert Flatkey | Sie haben den App-Code geändert, nicht den internen Modellselektor von Cascade. | Entscheiden Sie, ob das Ziel der App-Traffic oder der eigene Assistent von Windsurf ist. |
| MCP funktioniert, aber Modellaufrufe nicht | MCP-Server-URL und LLM-API-Basis-URL wurden verwechselt. | Halten Sie die MCP-Transportkonfiguration von der Modellaufrufkonfiguration getrennt. |
| Nutzung fehlt | Anfrage hat Flatkey umgangen oder Protokolle werden nach Schlüssel/Projekt/Datum gefiltert. | Suchen Sie nach Zeitstempel, Schlüssel, Modell-Alias und Umgebung. |
Abschließende Checkliste
Bevor Sie den Traffic erhöhen, bestätigen Sie:
- Das Ziel ist App-, Skript- oder Tool-Traffic rund um Windsurf, nicht eine undokumentierte native Cascade-Provider-Einstellung.
FLATKEY_API_KEY,FLATKEY_BASE_URLundFLATKEY_MODELsind außerhalb der Quellcodeverwaltung konfiguriert.- Direkter curl-Aufruf funktioniert gegen
$FLATKEY_BASE_URL/chat/completions. - Die SDK-Factory der App verwendet denselben Schlüssel, dieselbe Basis-URL und denselben Modell-Alias.
- Streaming und Tools werden getrennt vom einfachen Chat getestet.
- Die Nutzungs- oder Anforderungsprotokolle von Flatkey zeigen die Testanforderung an.
- Rollback-Werte werden notiert, bevor der Produktions-Traffic umgeleitet wird.
Ein Windsurf OpenAI-kompatibles API-Setup ist nützlich, wenn es die Grenzen klar aufzeigt: Windsurf hilft Ihnen beim Erstellen und Ändern des Codes, während Flatkey die OpenAI-kompatiblen Aufrufe weiterleitet, die dieser Code tätigt. Wenn Sie bereit sind, diese Aufrufe über einen einzigen Schlüssel zu leiten, holen Sie sich einen Flatkey-Schlüssel und beginnen Sie mit einem risikoarmen Smoke-Test.



