[IND] 5 min readOraCore Editors

5 ways WindsurfAPI speaks OpenAI and Anthropic

5 ways WindsurfAPI exposes Windsurf models through OpenAI and Anthropic APIs, with 100+ models and Node.js setup details.

Share LinkedIn
5 ways WindsurfAPI speaks OpenAI and Anthropic

WindsurfAPI exposes Windsurf models through OpenAI and Anthropic-compatible endpoints.

This project turns Windsurf’s model access into two API styles at once, with support for 100+ models and a plain Node.js runtime. If you want to plug the same backend into OpenAI SDKs, Claude Code, Cline, or Cursor, these five parts explain how it works and how to run it.

ItemEndpoint or modeNotable detail
OpenAI-compatible chat/v1/chat/completionsWorks with OpenAI SDKs and JSON or SSE
Anthropic-compatible messages/v1/messagesConnects Claude Code, Cline, and Cursor
Model support100+ modelsIncludes Claude, GPT, Gemini, Grok, Qwen, and more
RuntimeNode.jsNo npm dependency required
Service port3003Dashboard and API run on the same service

1. Dual API endpoints

Get the latest AI news in your inbox

Weekly picks of model releases, tools, and deep dives — no spam, unsubscribe anytime.

No spam. Unsubscribe at any time.

WindsurfAPI’s main trick is simple: one service exposes both OpenAI-style and Anthropic-style endpoints. That means the same backend can satisfy tools that expect /v1/chat/completions and tools that expect /v1/messages, without making you run two separate proxies.

5 ways WindsurfAPI speaks OpenAI and Anthropic

The repo describes this as a single HTTP service on port 3003 that translates requests before sending them upstream. In practice, that gives you one place to configure auth, model access, logging, and account rotation.

  • POST /v1/chat/completions for OpenAI SDKs
  • POST /v1/messages for Anthropic clients
  • OpenAI JSON plus SSE streaming support
  • Anthropic SSE support for Claude-style tools

2. Broad model access

The project advertises 100+ models across several families, including Claude, GPT, Gemini, Grok, Qwen, Kimi, GLM, MiniMax, SWE, and Arena. That matters if you want one proxy for a mixed toolchain instead of a separate gateway for each vendor.

It also notes that newer model availability depends on the Language Server binary. If you want the latest entries, the repo suggests using the Windsurf desktop app’s binary when the public release lags behind.

  • Claude 4.5, 4.6, Opus 4.7
  • GPT-5, 5.1, 5.2, 5.4
  • Gemini 2.5, 3.0, 3.1
  • Cursor-friendly aliases like opus-4.6 and sonnet-4.6

3. Client compatibility

One reason this repo is useful is that it targets real clients, not just generic API consumers. The README calls out OpenAI SDKs, Claude Code, Cline, and Cursor as direct consumers of the proxy.

5 ways WindsurfAPI speaks OpenAI and Anthropic

It also explains a practical Cursor workaround: some model names are blocked by the client before the request reaches the backend. The repo suggests aliasing those names so the request can pass through.

Base URL: http://your-ip:3003/v1 API Key: your key Model: opus-4.6 or sonnet-4.6

4. Local setup and deployment

The setup path is intentionally low-friction. You can clone the repo, run bash setup.sh, and start the service with node src/index.js. For Docker users, the repository ships with docker-compose.yml and a persistent data layout under ./.docker-data.

There is also a separate Language Server install step, because the proxy depends on Windsurf’s binary to talk to the cloud backend. The repo supports auto-download, local binary paths, and Docker-first deployment.

  • bash install-ls.sh to fetch the Language Server
  • docker compose up -d --build for containerized use
  • DATA_DIR to move persistent state elsewhere
  • LS_BINARY_PATH and LS_DATA_DIR for binary control

5. Account pooling and routing

WindsurfAPI is not only a translation layer. It also manages a pool of Windsurf accounts, with auto-rotation, rate-limit separation, and failover. That gives the proxy a way to spread load and keep requests moving when one account slows down or hits limits.

The README says the service strips upstream Windsurf identity details before returning results, so the client sees the expected model identity instead of the internal source. It also supports dashboard login, token import, and bulk account loading.

  • Dashboard login at /dashboard
  • Token-based account import from Windsurf
  • Batch account upload via JSON
  • Account pool rotation and failover

How to decide

Pick WindsurfAPI if you want one backend that can satisfy both OpenAI-shaped and Anthropic-shaped clients, especially if you already use Claude Code, Cline, or Cursor. It is a good fit when you need model variety, local control, and a single service that can sit in front of Windsurf accounts.

If you only need a basic OpenAI proxy, this may be more than you need. But if you want dual compatibility, account pooling, and a path to 100+ models from one Node.js service, this repo gives you a lot in one place.