Tool Integrations8 juillet 2026Flatkey

Configuration de l'API Windsurf compatible OpenAI : Acheminez le trafic de l'agent de codage via une seule clé

Acheminez les appels d'applications et de SDK compatibles OpenAI depuis les projets Windsurf via Flatkey, sans avoir besoin d'un écran de fournisseur natif Windsurf.

Configuration de l'API Windsurf compatible OpenAI : Acheminez le trafic de l'agent de codage via une seule clé

Si vous avez recherché une configuration d'API Windsurf compatible OpenAI, vous voulez probablement dire l'une des deux choses suivantes :

  • Vous souhaitez modifier le modèle que Windsurf ou Devin Desktop utilise à l'intérieur de Cascade.
  • Vous souhaitez que le code, les scripts, les outils ou l'application locale que Windsurf vous aide à créer envoient le trafic d'API compatible OpenAI via une seule clé de passerelle partagée.

Ce ne sont pas les mêmes configurations. La documentation publique de Windsurf et Devin Desktop, consultée le 2026-07-08, documente la sélection de modèles Cascade, Devin Local, la comptabilisation de l'utilisation/des crédits et les serveurs MCP pour les outils. Elle ne documente pas d'écran natif de « fournisseur personnalisé compatible OpenAI » où vous pourriez coller une URL de base de LLM tiers pour Cascade lui-même.

C'est important car le modèle sécurisé de Flatkey n'est pas de prétendre que Windsurf dispose d'un champ de fournisseur natif que la documentation ne montre pas. Utilisez Flatkey pour le SDK compatible OpenAI et le trafic applicatif autour d'un projet piloté par Windsurf : scripts de test, outils d'agent, services backend, workflows CLI et code d'application qui appellent déjà un point de terminaison de type Chat Completions.

Flatkey fournit à ce trafic une clé unique, une URL de base compatible OpenAI, le routage des modèles, la visibilité de l'utilisation et la révision de la facturation. Windsurf reste l'environnement de codage ; Flatkey devient la route d'API que votre code de projet utilise.

Réponse rapide pour la configuration de l'API Windsurf compatible OpenAI

Utilisez ce tableau de décision avant de toucher à la configuration.

ObjectifOù le configurerÀ ne pas confondre avec
Changer le modèle utilisé par CascadeUtilisez la sélection de modèle de Windsurf ou Devin Desktop.Ne collez pas une URL de base de LLM Flatkey dans un champ de serveur MCP.
Acheminer les requêtes de votre application au format OpenAIConfigurez votre application, CLI, script de test ou client SDK avec une clé et une URL de base Flatkey.Cela modifie le trafic de l'application, pas le sélecteur de modèle interne de Cascade.
Ajouter des outils externes à CascadeConfigurez les serveurs MCP dans les paramètres de Windsurf ou mcp_config.json.L'URL serverUrl de MCP est une URL de serveur d'outils, pas l'URL de base du LLM Chat Completions.
Prouver l'utilisation et le coût des charges de travail des agents de codageEnregistrez séparément les journaux/l'utilisation des requêtes Flatkey et les enregistrements d'utilisation de Windsurf ou Devin.Ne supposez pas que les ACU ou les crédits Windsurf équivalent à l'utilisation d'une API externe.

La voie pratique pour une API Windsurf compatible OpenAI est la suivante : laissez Windsurf aider à modifier le code, mais acheminez les appels de modèle du code via Flatkey. Cela maintient la configuration de l'API Windsurf compatible OpenAI auditable car l'environnement de codage, la clé d'API et la route de production ont chacun un propriétaire clair.

Ce que la documentation officielle de Windsurf et Devin prend réellement en charge

La documentation publique actuelle soutient trois faits qui façonnent ce guide.

Section de la doc officielleCe que cela signifie pour cette configuration
Sélection de modèle CascadeCascade a son propre sélecteur de modèle. Utilisez-le pour l'assistant à l'intérieur de Windsurf ou Devin Desktop.
Utilisation et créditsLa comptabilisation de l'utilisation de Windsurf/Devin couvre les agents locaux tels que Cascade, Devin CLI et Devin Local. Ceci est distinct des appels que votre propre application envoie à Flatkey.
Serveurs MCPCascade peut utiliser des serveurs MCP via stdio, HTTP ou SSE. Les MCP HTTP distants utilisent un champ serverUrl ou url. Ce champ est destiné aux serveurs d'outils, et non au remplacement du fournisseur de LLM derrière Cascade.

Ainsi, un article sur l'API Windsurf compatible OpenAI ne devrait pas dire : « Ouvrez les paramètres de Windsurf et ajoutez Flatkey comme fournisseur OpenAI personnalisé », à moins que la documentation en ligne ou l'interface utilisateur du produit que vous utilisez ne montre clairement cette capacité. Un guide de production plus sûr consiste à configurer le code et les outils que Windsurf produit.

Étape 1 : Créer une clé Flatkey et choisir la route

Dans Flatkey, créez une clé pour cette charge de travail et choisissez un alias de modèle qui correspond à la famille de points de terminaison que vous prévoyez d'appeler. Pour une route de type Chat Completions, gardez la racine de l'API et le point de terminaison séparés :

FLATKEY_API_KEY=sk-fk-your-key
FLATKEY_BASE_URL=https://router.flatkey.ai/v1
FLATKEY_MODEL=your-current-flatkey-model-alias

Pour les appels curl directs, ajoutez le chemin du point de terminaison :

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": "Répondez avec exactement : flatkey route ok" }
    ]
  }'

Ne donnez pas à un SDK à la fois https://router.flatkey.ai/v1 et /chat/completions comme URL de base. L'URL de base du SDK doit normalement s'arrêter à /v1 ; les requêtes curl directes utilisent le point de terminaison complet.

Étape 2 : Placer la route dans une fabrique de client SDK

La configuration d'API Windsurf compatible OpenAI la plus utile est une petite frontière client que Windsurf peut aider à modifier en toute sécurité. Conservez les secrets dans des variables d'environnement et gardez les alias de modèle configurables.

Modèle Python :

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": "Répondez avec exactement : sdk route ok"}
    ],
)

print(response.choices[0].message.content)
print(response.usage)

Modèle Node :

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);

Considérez ces extraits comme des modèles jusqu'à ce que vous les testiez avec votre version du SDK installée, votre clé Flatkey actuelle, votre alias de modèle actuel et votre famille de points de terminaison. Si votre application dispose déjà d'un wrapper pour l'URL de base, mettez à jour ce wrapper au lieu de disperser les variables Flatkey dans les contrôleurs et les scripts.

Pour des détails de migration spécifiques au SDK, associez ce guide aux guides Flatkey pour la configuration de l'API compatible OpenAI de Cursor et la configuration du routeur d'API de code Claude.

Étape 3 : Demandez à Windsurf d'effectuer la modification du code, pas de détenir le secret

Windsurf est utile pour appliquer la migration sur un dépôt, mais le prompt doit limiter le travail.

Mettez à jour la configuration du client LLM pour que toutes les requêtes de chat compatibles OpenAI utilisent :
- FLATKEY_API_KEY pour le jeton bearer
- FLATKEY_BASE_URL comme racine de l'API
- FLATKEY_MODEL comme alias de modèle

Ne codez pas les secrets en dur.
Ne modifiez pas les prompts, la logique métier ou la politique de nouvelle tentative.
Mettez à jour uniquement la fabrique de clients et le plus petit test nécessaire pour vérifier la route.

Cela maintient le travail de l'API compatible OpenAI de Windsurf limité à la configuration, et non à une refactorisation large.

Étape 4 : Gardez la configuration MCP séparée

C'est l'erreur de configuration la plus courante. La configuration MCP de Windsurf connecte Cascade aux outils. Une entrée MCP distante peut ressembler à ceci :

{
  "mcpServers": {
    "internal-docs": {
      "serverUrl": "https://tools.example.com/mcp"
    }
  }
}

Ce serverUrl n'est pas l'endroit où vous mettez https://router.flatkey.ai/v1. Le serveur MCP peut exposer des outils à Cascade, et ces outils peuvent appeler Flatkey en interne si vous les construisez de cette manière. Mais la configuration du transport MCP et le routage des modèles compatibles OpenAI sont des couches différentes.

Utilisez cette répartition :

CoucheL'URL va iciExemple
Trafic du modèle de l'applicationURL de base de l'API compatible OpenAIhttps://router.flatkey.ai/v1
Requête de point de terminaison directPoint de terminaison de chat complet$FLATKEY_BASE_URL/chat/completions
Intégration d'outil CascadeURL du serveur MCPhttps://tools.example.com/mcp
Assistant interne WindsurfSélection de modèle intégréeMenu des modèles Cascade

Si votre serveur MCP appelle un modèle, placez la clé Flatkey du côté du serveur MCP, et non dans la configuration du client Windsurf, à moins que votre modèle de sécurité n'autorise explicitement une information d'identification de développeur local.

Étape 5 : Enregistrez un paquet de vérification

Une migration de l'API compatible OpenAI de Windsurf n'est prête que lorsque vous pouvez prouver que la route fonctionne et qu'elle peut être annulée. L'objectif d'un paquet de vérification de l'API compatible OpenAI de Windsurf est de rendre le premier changement de route suffisamment petit pour que l'ingénierie, la finance et les opérations puissent l'inspecter ensemble.

VérificationCondition de réussitePreuve à sauvegarder
AuthentificationLa requête renvoie une réponse du modèle, et non 401 ou 403.Commande curl expurgée, statut HTTP, ID de réponse si présent.
URL de basePas de /v1/v1 en double ni de chemin de point de terminaison manquant.URL de base finale résolue et test du point de terminaison direct.
Alias de modèleL'alias demandé correspond à une route Flatkey disponible.Alias de modèle, famille de points de terminaison et note de catalogue visible sur le compte.
UtilisationLa requête apparaît dans les journaux d'utilisation ou de requêtes de Flatkey.Capture d'écran/exportation des champs d'utilisation, de modèle et de jeton ou d'unité.
Examen des coûtsLa finance ou les opérations peuvent tracer les dépenses jusqu'à la clé/charge de travail.Ligne d'utilisation, impact sur le solde, chemin de la facture ou journal des requêtes.
AnnulationUne seule modification de configuration ramène le trafic à la route précédente.URL de base précédente, propriétaire de la clé précédent, alias de modèle précédent.

Pour des champs d'utilisation plus détaillés, utilisez le guide du tableau de bord d'utilisation des jetons après que le premier test de fumée a fonctionné.

Étape 6 : Testez le streaming et les outils après le chat simple

Ne commencez pas par la route la plus difficile. Prouvez d'abord qu'une requête de chat sans streaming fonctionne. Testez ensuite le streaming et les appels d'outils comme des contrats distincts.

Preuve du 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." }
    ]
  }'

La preuve d'appel d'outil doit utiliser un schéma de fonction minuscule avant d'essayer un ensemble d'outils de production :

{
  "type": "function",
  "function": {
    "name": "lookup_ticket",
    "description": "Return a test ticket status.",
    "parameters": {
      "type": "object",
      "properties": {
        "ticket_id": { "type": "string" }
      },
      "required": ["ticket_id"]
    }
  }
}

Si le chat simple passe mais que le streaming ou les outils échouent, vous ne déboguez plus l'URL de base. Vous vérifiez la capacité de la route, la prise en charge du modèle, l'analyse du SDK ou le comportement de la passerelle pour cette fonctionnalité.

Tableau de dépannage

SymptômeCause probableÉléments à vérifier
401 ou 403Clé incorrecte, en-tête bearer manquant, clé révoquée ou mauvais environnement.Affichez quelle variable d'environnement est chargée, n'affichez jamais le secret.
404Chemin de point de terminaison incorrect ou chemin de base en double.Comparez l'URL de base du SDK avec le point de terminaison curl direct.
Modèle non trouvéL'alias n'existe pas pour cette clé ou cette famille de points de terminaison.Confirmez l'alias du modèle dans le catalogue actuel de Flatkey et dans votre compte.
Cascade ignore FlatkeyVous avez modifié le code de l'application, pas le sélecteur de modèle interne de Cascade.Décidez si l'objectif est le trafic de l'application ou l'assistant propre à Windsurf.
MCP fonctionne mais pas les appels de modèleL'URL du serveur MCP et l'URL de base de l'API LLM ont été mélangées.Gardez la configuration de transport MCP séparée de la configuration d'appel de modèle.
L'utilisation est manquanteLa requête a contourné Flatkey ou les journaux sont filtrés par clé/projet/date.Recherchez par horodatage, clé, alias de modèle et environnement.

Liste de contrôle finale

Avant d'augmenter le trafic, confirmez :

  1. L'objectif est le trafic d'application, de script ou d'outil autour de Windsurf, et non un paramètre de fournisseur natif non documenté de Cascade.
  2. FLATKEY_API_KEY, FLATKEY_BASE_URL et FLATKEY_MODEL sont configurées en dehors du contrôle de code source.
  3. Le curl direct fonctionne sur $FLATKEY_BASE_URL/chat/completions.
  4. La fabrique SDK de l'application utilise la même clé, la même URL de base et le même alias de modèle.
  5. Le streaming et les outils sont testés séparément du chat simple.
  6. Les journaux d'utilisation ou de requêtes de Flatkey affichent la requête de test.
  7. Les valeurs de restauration sont notées avant le déplacement du trafic de production.

Une configuration d'API Windsurf compatible OpenAI est utile lorsqu'elle est transparente sur la délimitation : Windsurf vous aide à créer et à modifier le code, tandis que Flatkey achemine les appels compatibles OpenAI que ce code effectue. Lorsque vous êtes prêt à acheminer ces appels via une seule clé, obtenez une clé Flatkey et commencez par un test de fumée à faible risque.