[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-5-ways-windsurfapi-speaks-openai-and-anthropic-en":3,"article-related-5-ways-windsurfapi-speaks-openai-and-anthropic-en":35,"series-industry-482c5d70-0f13-4a14-935c-99faaa2c0837":89},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":27,"views":31,"created_at":32,"published_at":33,"topic_cluster_id":34},"482c5d70-0f13-4a14-935c-99faaa2c0837","5-ways-windsurfapi-speaks-openai-and-anthropic-en","5 ways WindsurfAPI speaks OpenAI and Anthropic","\u003Cp data-speakable=\"summary\">WindsurfAPI exposes \u003Ca href=\"\u002Ftag\u002Fwindsurf\">Windsurf\u003C\u002Fa> models through \u003Ca href=\"\u002Ftag\u002Fopenai\">OpenAI\u003C\u002Fa> and \u003Ca href=\"\u002Ftag\u002Fanthropic\">Anthropic\u003C\u002Fa>-compatible endpoints.\u003C\u002Fp>\n\u003Cp>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, \u003Ca href=\"\u002Fnews\u002Fclaude-code-dynamic-workflows-new-primitive-en\">Claude Code\u003C\u002Fa>, Cline, or Cursor, these five parts explain how it works and how to run it.\u003C\u002Fp>\n\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Item\u003C\u002Fth>\u003Cth>Endpoint or mode\u003C\u002Fth>\u003Cth>Notable detail\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>OpenAI-compatible chat\u003C\u002Ftd>\u003Ctd>\u002Fv1\u002Fchat\u002Fcompletions\u003C\u002Ftd>\u003Ctd>Works with OpenAI SDKs and JSON or SSE\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Anthropic-compatible messages\u003C\u002Ftd>\u003Ctd>\u002Fv1\u002Fmessages\u003C\u002Ftd>\u003Ctd>Connects Claude Code, Cline, and Cursor\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Model support\u003C\u002Ftd>\u003Ctd>100+ models\u003C\u002Ftd>\u003Ctd>Includes Claude, GPT, Gemini, Grok, Qwen, and more\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Runtime\u003C\u002Ftd>\u003Ctd>Node.js\u003C\u002Ftd>\u003Ctd>No npm dependency required\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>Service port\u003C\u002Ftd>\u003Ctd>3003\u003C\u002Ftd>\u003Ctd>Dashboard and API run on the same service\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\n\n\u003Ch2>1. Dual API endpoints\u003C\u002Fh2>\n\u003Cp>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 \u003Ccode>\u002Fv1\u002Fchat\u002Fcompletions\u003C\u002Fcode> and tools that expect \u003Ccode>\u002Fv1\u002Fmessages\u003C\u002Fcode>, without making you run two separate proxies.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780649276223-qh2y.png\" alt=\"5 ways WindsurfAPI speaks OpenAI and Anthropic\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\n\u003Cp>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.\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Ccode>POST \u002Fv1\u002Fchat\u002Fcompletions\u003C\u002Fcode> for OpenAI SDKs\u003C\u002Fli>\n  \u003Cli>\u003Ccode>POST \u002Fv1\u002Fmessages\u003C\u002Fcode> for Anthropic clients\u003C\u002Fli>\n  \u003Cli>OpenAI JSON plus SSE streaming support\u003C\u002Fli>\n  \u003Cli>Anthropic SSE support for Claude-style tools\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>2. Broad model access\u003C\u002Fh2>\n\u003Cp>The project advertises 100+ models across several families, including \u003Ca href=\"\u002Ftag\u002Fclaude\">Claude\u003C\u002Fa>, 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.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Claude 4.5, 4.6, Opus 4.7\u003C\u002Fli>\n  \u003Cli>GPT-5, 5.1, 5.2, 5.4\u003C\u002Fli>\n  \u003Cli>Gemini 2.5, 3.0, 3.1\u003C\u002Fli>\n  \u003Cli>Cursor-friendly aliases like \u003Ccode>opus-4.6\u003C\u002Fcode> and \u003Ccode>sonnet-4.6\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>3. Client compatibility\u003C\u002Fh2>\n\u003Cp>One reason this repo is useful is that it targets real clients, not just generic API consumers. The README calls out \u003Ca href=\"https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">OpenAI\u003C\u002Fa> SDKs, \u003Ca href=\"https:\u002F\u002Fclaude.ai\u002Fcode\" target=\"_blank\" rel=\"noopener noreferrer\">Claude Code\u003C\u002Fa>, \u003Ca href=\"https:\u002F\u002Fcline.bot\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">Cline\u003C\u002Fa>, and \u003Ca href=\"https:\u002F\u002Fcursor.com\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">Cursor\u003C\u002Fa> as direct consumers of the proxy.\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780649275201-b0is.png\" alt=\"5 ways WindsurfAPI speaks OpenAI and Anthropic\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\n\u003Cp>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.\u003C\u002Fp>\n\u003Ccode>Base URL: http:\u002F\u002Fyour-ip:3003\u002Fv1\nAPI Key: your key\nModel: opus-4.6 or sonnet-4.6\u003C\u002Fcode>\n\n\u003Ch2>4. Local setup and deployment\u003C\u002Fh2>\n\u003Cp>The setup path is intentionally low-friction. You can clone the repo, run \u003Ccode>bash setup.sh\u003C\u002Fcode>, and start the service with \u003Ccode>node src\u002Findex.js\u003C\u002Fcode>. For Docker users, the repository ships with \u003Ccode>docker-compose.yml\u003C\u002Fcode> and a persistent data layout under \u003Ccode>.\u002F.docker-data\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Ccode>bash install-ls.sh\u003C\u002Fcode> to fetch the Language Server\u003C\u002Fli>\n  \u003Cli>\u003Ccode>docker compose up -d --build\u003C\u002Fcode> for containerized use\u003C\u002Fli>\n  \u003Cli>\u003Ccode>DATA_DIR\u003C\u002Fcode> to move persistent state elsewhere\u003C\u002Fli>\n  \u003Cli>\u003Ccode>LS_BINARY_PATH\u003C\u002Fcode> and \u003Ccode>LS_DATA_DIR\u003C\u002Fcode> for binary control\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>5. Account pooling and routing\u003C\u002Fh2>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Dashboard login at \u003Ccode>\u002Fdashboard\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>Token-based account import from Windsurf\u003C\u002Fli>\n  \u003Cli>Batch account upload via JSON\u003C\u002Fli>\n  \u003Cli>Account pool rotation and failover\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Ch2>How to decide\u003C\u002Fh2>\n\u003Cp>Pick WindsurfAPI if you want one backend that can satisfy both OpenAI-shaped and Anthropic-shaped clients, especially if you already use \u003Ca href=\"\u002Ftag\u002Fclaude-code\">Claude Code\u003C\u002Fa>, 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.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>","5 ways WindsurfAPI exposes Windsurf models through OpenAI and Anthropic APIs, with 100+ models and Node.js setup details.","github.com","https:\u002F\u002Fgithub.com\u002Fdwgx\u002FWindsurfAPI",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780649276223-qh2y.png","industry","en","35e635cf-98d8-448e-9ea8-80d184c256da",[17,18,19,20,21,22,23,24,25,26],"WindsurfAPI","Windsurf","OpenAI compatible API","Anthropic compatible API","Claude Code","Cline","Cursor","Node.js proxy","API proxy","Language Server",[28,29,30],"One service exposes both OpenAI and Anthropic endpoints.","The proxy supports 100+ models across major model families.","It includes setup paths for local Node.js and Docker deployments.",0,"2026-06-05T08:47:23.740529+00:00","2026-06-05T08:47:23.731+00:00","d19fc184-5852-4c4d-9ec0-db0c4841ac17",{"tags":36,"relatedLang":48,"relatedPosts":52},[37,39,41,43,45],{"name":18,"slug":38},"windsurf",{"name":17,"slug":40},"windsurfapi",{"name":20,"slug":42},"anthropic-compatible-api",{"name":21,"slug":44},"claude-code",{"name":46,"slug":47},"OpenAI-compatible API","openai-compatible-api",{"id":15,"slug":49,"title":50,"language":51},"5-ways-windsurfapi-speaks-openai-and-anthropic-zh","5 種 WindsurfAPI 對接方式","zh",[53,59,65,71,77,83],{"id":54,"slug":55,"title":56,"cover_image":57,"image_url":57,"created_at":58,"category":13},"1b11c991-1388-4426-93e8-cc81e5cce5f9","5-reasons-risc-v-is-winning-new-chip-designs-en","5 reasons RISC-V is winning new chip designs","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780657364895-h6zo.png","2026-06-05T11:02:21.081404+00:00",{"id":60,"slug":61,"title":62,"cover_image":63,"image_url":63,"created_at":64,"category":13},"f46e43de-c0ed-4329-b2ee-b8e2a42ac111","why-anthropic-is-right-ai-successors-en","Why Anthropic Is Right to Warn About AI Building Its Successors","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780652885803-i4x8.png","2026-06-05T09:47:20.594108+00:00",{"id":66,"slug":67,"title":68,"cover_image":69,"image_url":69,"created_at":70,"category":13},"4b92a758-c91b-42eb-a154-93a8324897de","why-gpu-financing-is-the-real-ai-moat-en","Why GPU financing is the real AI moat","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780644781490-kb5e.png","2026-06-05T07:32:27.135537+00:00",{"id":72,"slug":73,"title":74,"cover_image":75,"image_url":75,"created_at":76,"category":13},"4395d934-7fcf-4b76-a68f-faa4249950ee","big-tech-borrowing-to-pay-for-ai-buildout-en","Big Tech is borrowing to pay for AI buildout","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780643876610-jvuv.png","2026-06-05T07:17:29.426259+00:00",{"id":78,"slug":79,"title":80,"cover_image":81,"image_url":81,"created_at":82,"category":13},"5e089d3e-2ad3-45e7-97a5-6cc3cfa5af83","5-stock-market-views-for-2024-en","5 stock market views for 2024","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780641180777-fh9c.png","2026-06-05T06:32:26.154988+00:00",{"id":84,"slug":85,"title":86,"cover_image":87,"image_url":87,"created_at":88,"category":13},"ea9b72fe-4163-459f-b7d3-7c939a5d45bc","4-reasons-agnes-ai-free-full-modal-api-en","4 reasons Agnes AI的免费全模态API值得试","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780640274944-k5b7.png","2026-06-05T06:17:27.330691+00:00",[90,95,100,105,110,115,120,125,130,135],{"id":91,"slug":92,"title":93,"created_at":94},"d35a1bd9-e709-412e-a2df-392df1dc572a","ai-impact-2026-developments-market-en","AI's Impact in 2026: Key Developments and Market Shifts","2026-03-25T16:20:33.205823+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"5ed27921-5fd6-492e-8c59-78393bf37710","trumps-ai-legislative-framework-en","Trump's AI Legislative Framework: What's Inside?","2026-03-25T16:22:20.005325+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"e454a642-f03c-4794-b185-5f651aebbaca","nvidia-gtc-2026-key-highlights-innovations-en","NVIDIA GTC 2026: Key Highlights and Innovations","2026-03-25T16:22:47.882615+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"0ebb5b16-774a-4922-945d-5f2ce1df5a6d","claude-usage-diversifies-learning-curves-en","Claude Usage Diversifies, Learning Curves Emerge","2026-03-25T16:25:50.770376+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"69934e86-2fc5-4280-8223-7b917a48ace8","openclaw-ai-commoditization-concerns-en","OpenClaw's Rise Raises Concerns of AI Model Commoditization","2026-03-25T16:26:30.582047+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"b4b2575b-2ac8-46b2-b90e-ab1d7c060797","google-gemini-ai-rollout-2026-en","Google's Gemini AI Rollout Extended to 2026","2026-03-25T16:28:14.808842+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"6e18bc65-42ae-4ad0-b564-67d7f66b979e","meta-llama4-fabricated-results-scandal-en","Meta's Llama 4 Scandal: Fabricated AI Test Results Unveiled","2026-03-25T16:29:15.482836+00:00",{"id":126,"slug":127,"title":128,"created_at":129},"bf888e9d-08be-4f47-996c-7b24b5ab3500","accenture-mistral-ai-deployment-en","Accenture and Mistral AI Team Up for AI Deployment","2026-03-25T16:31:01.894655+00:00",{"id":131,"slug":132,"title":133,"created_at":134},"5382b536-fad2-49c6-ac85-9eb2bae49f35","mistral-ai-high-stakes-2026-en","Mistral AI: Facing High Stakes in 2026","2026-03-25T16:31:39.941974+00:00",{"id":136,"slug":137,"title":138,"created_at":139},"9da3d2d6-b669-4971-ba1d-17fdb3548ed5","cursors-meteoric-rise-pressures-en","Cursor's Meteoric Rise Faces Industry Pressures","2026-03-25T16:32:21.899217+00:00"]