{"id":3693,"date":"2026-06-15T16:41:27","date_gmt":"2026-06-15T16:41:27","guid":{"rendered":"https:\/\/aiopsschool.com\/blog\/?p=3693"},"modified":"2026-06-15T16:42:40","modified_gmt":"2026-06-15T16:42:40","slug":"how-to-use-alibaba-cloud-qwen-with-claude-code-using-the-30-token-plan-fix-api-key-billing-and-401-errors","status":"publish","type":"post","link":"https:\/\/aiopsschool.com\/blog\/how-to-use-alibaba-cloud-qwen-with-claude-code-using-the-30-token-plan-fix-api-key-billing-and-401-errors\/","title":{"rendered":"How to Use Alibaba Cloud Qwen with Claude Code Using the $30 Token Plan: Fix API Key, Billing, and 401 Errors"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"514\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1024x514.png\" alt=\"\" class=\"wp-image-3694\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1024x514.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-300x151.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-768x386.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1536x771.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10.png 1685w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"514\" data-id=\"3695\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1-1024x514.png\" alt=\"\" class=\"wp-image-3695\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1-1024x514.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1-300x151.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1-768x386.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1-1536x771.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.20.10-1.png 1685w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"435\" data-id=\"3696\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46-1024x435.png\" alt=\"\" class=\"wp-image-3696\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46-1024x435.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46-300x127.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46-768x326.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46-1536x653.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.17.46.png 1913w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"467\" data-id=\"3698\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04-1024x467.png\" alt=\"\" class=\"wp-image-3698\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04-1024x467.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04-300x137.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04-768x350.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04-1536x701.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.14.04.png 1903w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"509\" data-id=\"3699\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29-1024x509.png\" alt=\"\" class=\"wp-image-3699\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29-1024x509.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29-300x149.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29-768x382.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29-1536x764.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.13.29.png 1912w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"476\" data-id=\"3697\" src=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28-1024x476.png\" alt=\"\" class=\"wp-image-3697\" srcset=\"https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28-1024x476.png 1024w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28-300x139.png 300w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28-768x357.png 768w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28-1536x714.png 1536w, https:\/\/aiopsschool.com\/blog\/wp-content\/uploads\/2026\/06\/Screenshot-2026-06-16-at-1.10.28.png 1909w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Alibaba Cloud Model Studio gives access to Qwen models through multiple API modes. At first glance, it looks simple: create an API key, copy the Base URL, export a few environment variables, and start using Qwen inside Claude Code or another AI coding tool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But there is one very important catch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Alibaba Cloud has different types of API keys and different base URLs for different billing modes. If you use the wrong key or wrong endpoint, you may face one of these problems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Your API bill keeps increasing even after buying the $30 Token Plan.<\/li>\n\n\n\n<li>Claude Code shows <code>401 Invalid API-key provided<\/code>.<\/li>\n\n\n\n<li>The model does not respond even though the subscription is active.<\/li>\n\n\n\n<li>Usage is charged under normal Model Studio pay-as-you-go instead of Token Plan quota.<\/li>\n\n\n\n<li>You use a <code>sk-ws-...<\/code> workspace key instead of the required <code>sk-sp-...<\/code> Token Plan key.<\/li>\n\n\n\n<li>You use the workspace endpoint instead of the Token Plan endpoint.<\/li>\n\n\n\n<li>You use the OpenAI-compatible endpoint for Claude Code instead of the Anthropic-compatible endpoint.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">This tutorial explains the complete setup, the common mistakes, the correct export commands, and how to verify that Alibaba\u2019s $30 Token Plan is actually being used.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">1. Understand the Three Different Alibaba API Modes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before fixing the issue, understand the difference between the main API modes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.1 Normal Model Studio \/ Pay-as-you-go API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the standard Model Studio API usage. You usually get this from:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Dashboard \u2192 API Key\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The API key may look like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-ws-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or a general Model Studio API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The workspace API host may look like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example workspace endpoints:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OpenAI-compatible endpoint:\nhttps:&#47;&#47;ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n\nDashScope endpoint:\nhttps:\/\/ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\/api\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is not the $30 Token Plan endpoint. If you use this key and this URL, your usage may be billed as normal API usage.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.2 Token Plan Team Edition<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the $30 subscription-style plan. Token Plan has its own:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Dedicated API key<\/li>\n\n\n\n<li>Dedicated Base URL<\/li>\n\n\n\n<li>Seat assignment system<\/li>\n\n\n\n<li>Usage quota<\/li>\n\n\n\n<li>Team management page<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The Token Plan dedicated key must start with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Singapore \/ International region, the important Token Plan URLs are:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OpenAI-compatible endpoint:\nhttps:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n\nAnthropic-compatible endpoint:\nhttps:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Claude Code needs the Anthropic-compatible endpoint.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.3 Coding Plan<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Alibaba also has a separate Coding Plan. This is different from Token Plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Coding Plan endpoint for Claude Code usually looks like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;coding-intl.dashscope.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Coding Plan is aimed specifically at AI coding tools such as Claude Code and Qwen Code. Token Plan and Coding Plan are separate. Do not mix their keys and base URLs.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. The Most Common Problem: You Bought Token Plan but Still Get API Bills<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This happens when you bought the Token Plan but your tool is still using the normal workspace key or normal workspace base URL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_BASE_URL=\"https:\/\/ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"sk-ws-xxxxx\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Why this is wrong:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>ws-xxxxxxxx...<\/code> is the workspace host.<\/li>\n\n\n\n<li><code>sk-ws-...<\/code> is the workspace key.<\/li>\n\n\n\n<li>This may go through normal Model Studio billing.<\/li>\n\n\n\n<li>Token Plan credits may not be used.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Correct Token Plan setup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"sk-sp-xxxxx\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The key point is simple:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Token Plan = sk-sp key + token-plan endpoint\nWorkspace API = sk-ws key + workspace endpoint\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Correct Page to Access Token Plan Team Edition<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To access the Token Plan Team Edition page, open Alibaba Cloud Model Studio in Singapore region:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;modelstudio.console.alibabacloud.com\/ap-southeast-1?tab=plan#\/efm\/subscription\/token-plan\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure the region is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Singapore \/ ap-southeast-1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Subscription \u2192 Token Plan \u2192 My Subscriptions\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On this page, you should see your Team Edition subscription, remaining days, total quota, seat count, and plan usage.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Assign the Token Plan Seat First<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Buying the Token Plan is not enough. You must assign the seat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You may see something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 0\/1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This means:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>You purchased 1 seat, but 0 seats are assigned.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Click:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Add Seat\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">or go to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Member Management\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then assign the Standard Seat to your Alibaba account\/member.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After assigning, it should change to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 1\/1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now the member row should show something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Seat: Standard Seat\nAPI Key: Generate\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Generate the Correct Token Plan API Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After assigning the seat, click:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This generates the Token Plan dedicated API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The correct key format is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is the only key you should use for Token Plan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Do not use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-ws-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That is a workspace key and can cause wrong billing or 401 errors with the Token Plan endpoint.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Important: when the key is generated, copy it immediately and store it securely. Many cloud platforms show the full key only once. If you did not copy it, click Reset and create a new key.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. Correct Base URLs for Token Plan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For OpenAI-compatible tools, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for tools that ask for:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>OpenAI Base URL\nOpenAI API Key\nModel Name\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Claude Code or Anthropic-compatible tools, use:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for tools that ask for:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ANTHROPIC_BASE_URL\nANTHROPIC_API_KEY\nANTHROPIC_MODEL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not confuse these two endpoints.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">7. Correct Claude Code Export Commands for Token Plan<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For Claude Code, use this setup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unset ANTHROPIC_API_KEY\nunset ANTHROPIC_AUTH_TOKEN\nunset ANTHROPIC_BASE_URL\nunset ANTHROPIC_MODEL\nunset ANTHROPIC_SMALL_FAST_MODEL\nunset AI_PROVIDER\n\nexport AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_YOUR_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If your Claude Code version expects <code>ANTHROPIC_AUTH_TOKEN<\/code>, use this instead:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unset ANTHROPIC_API_KEY\nunset ANTHROPIC_AUTH_TOKEN\nunset ANTHROPIC_BASE_URL\nunset ANTHROPIC_MODEL\nunset ANTHROPIC_SMALL_FAST_MODEL\nunset AI_PROVIDER\n\nexport AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_AUTH_TOKEN=\"PASTE_YOUR_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Do not set both <code>ANTHROPIC_API_KEY<\/code> and <code>ANTHROPIC_AUTH_TOKEN<\/code> unless you know your tool needs it. In most cases, set only one.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">8. Verify Your Environment Before Running Claude Code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before running Claude Code, verify the environment without printing the full key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"BASE=$ANTHROPIC_BASE_URL\"\necho \"MODEL=$ANTHROPIC_MODEL\"\necho \"KEY_PREFIX=$(echo \"$ANTHROPIC_API_KEY\" | cut -c1-6)\"\necho \"KEY_LENGTH=${#ANTHROPIC_API_KEY}\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BASE=https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\nMODEL=qwen3.7-max\nKEY_PREFIX=sk-sp-\nKEY_LENGTH=greater than 0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you use <code>ANTHROPIC_AUTH_TOKEN<\/code>, verify with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"BASE=$ANTHROPIC_BASE_URL\"\necho \"MODEL=$ANTHROPIC_MODEL\"\necho \"AUTH_TOKEN_PREFIX=$(echo \"$ANTHROPIC_AUTH_TOKEN\" | cut -c1-6)\"\necho \"AUTH_TOKEN_LENGTH=${#ANTHROPIC_AUTH_TOKEN}\"\necho \"API_KEY_LENGTH=${#ANTHROPIC_API_KEY}\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected output:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AUTH_TOKEN_PREFIX=sk-sp-\nAUTH_TOKEN_LENGTH=greater than 0\nAPI_KEY_LENGTH=0\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">9. Common Error: 401 Invalid API-key Provided<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error message:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>API Error: 401 Invalid API-key provided.\nFor details, see:\nhttps:&#47;&#47;www.alibabacloud.com\/help\/en\/model-studio\/error-code#apikey-error\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This error usually means one of the following:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 1: Empty key<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_AUTH_TOKEN=\"\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This sends an empty API key.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_API_KEY=\"PASTE_REAL_SK_SP_KEY_HERE\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then verify:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"KEY_LENGTH=${#ANTHROPIC_API_KEY}\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The length must be greater than 0.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 2: Wrong key type<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-ws-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Token Plan, the key must start with <code>sk-sp-<\/code>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 3: Wrong base URL<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong for Token Plan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Correct for Token Plan + Claude Code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 4: Seat not assigned<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">If your Token Plan page shows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 0\/1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">then the seat is not assigned. Assign the seat first.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Correct status:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 1\/1\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 5: API key not generated after seat assignment<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After assigning the seat, the member row may show:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>API Key: No API key has been generated yet.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Click:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Generate\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then copy the generated <code>sk-sp-...<\/code> key.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 6: Old shell config is overriding your new setup<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Check old configuration files:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -R \"ANTHROPIC\\|sk-ws\\|ws-ez\\|dashscope\\|token-plan\\|qwen\" \\\n~\/.claude ~\/.claude.json ~\/.zshrc ~\/.bashrc ~\/.bash_profile 2&gt;\/dev\/null\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Remove old values that point to workspace endpoints such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Cause 7: Claude Code was already running before you changed exports<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Environment variables are loaded when the process starts. If Claude Code is already running, new exports will not affect it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fix:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Press Ctrl + C\nStart a new terminal\nSet exports again\nRun claude again\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">10. Common Error: \u201cPlease run \/login\u201d<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Error message:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Please run \/login \u00b7 API Error: 401 Invalid API-key provided.\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This may look like a login issue, but in this case it is usually still an API key issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you are using Alibaba Qwen through Claude Code, <code>\/login<\/code> is not the real fix. The real fix is usually:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Correct <code>ANTHROPIC_BASE_URL<\/code><\/li>\n\n\n\n<li>Correct <code>sk-sp-...<\/code> Token Plan API key<\/li>\n\n\n\n<li>Correct model name<\/li>\n\n\n\n<li>Correct environment variable<\/li>\n\n\n\n<li>Restart Claude Code<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">You can also mark Claude onboarding complete if needed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>python3 - &lt;&lt;'PY'\nimport json, pathlib\n\np = pathlib.Path.home() \/ \".claude.json\"\ndata = {}\n\nif p.exists():\n    try:\n        data = json.loads(p.read_text())\n    except Exception:\n        data = {}\n\ndata&#91;\"hasCompletedOnboarding\"] = True\np.write_text(json.dumps(data, indent=2))\nprint(\"Claude onboarding marked complete\")\nPY\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then restart Claude Code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>claude\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">11. Which Model Should You Use?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">For the best Qwen 3.7 model:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qwen3.7-max\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this when you want:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Strong reasoning<\/li>\n\n\n\n<li>Better planning<\/li>\n\n\n\n<li>Complex debugging<\/li>\n\n\n\n<li>Architecture suggestions<\/li>\n\n\n\n<li>Larger code understanding<\/li>\n\n\n\n<li>High-quality technical writing<\/li>\n\n\n\n<li>Deep analysis<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">For coding-specific usage, also test Qwen Coder models if your plan supports them:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>qwen3-coder-next\nqwen3-coder-plus\nqwen3-coder-flash\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">General suggestion:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Best Qwen 3.7 model: qwen3.7-max\nBest coding-specialized model: qwen3-coder-next or qwen3-coder-plus\nFast\/cheap coding model: qwen3-coder-flash\nBalanced general model: qwen3.5-plus\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If <code>qwen3.7-max<\/code> gives a model-not-supported error under your plan, test:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export ANTHROPIC_MODEL=\"qwen3.5-plus\"\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then test the other available models from your Alibaba Model Studio plan.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">12. Direct Qwen API vs Claude Code Setup<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">There are two common ways to use Qwen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Approach A: Use Qwen directly through OpenAI-compatible API<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use this if your tool supports OpenAI-compatible endpoints.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Base URL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">API key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example curl:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -sS https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -H \"Authorization: Bearer $QWEN_API_KEY\" \\\n  -d '{\n    \"model\": \"qwen3.7-max\",\n    \"messages\": &#91;\n      {\"role\": \"user\", \"content\": \"Say ok\"}\n    ]\n  }'\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OpenAI-compatible tools<\/li>\n\n\n\n<li>API testing<\/li>\n\n\n\n<li>Some IDE extensions<\/li>\n\n\n\n<li>Custom integrations, if allowed by your plan terms<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Approach B: Use Qwen through Claude Code<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Use this if you are running Claude Code and want Alibaba Qwen as the backend.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Base URL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">API key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-xxxxx\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Example:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use this for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Claude Code<\/li>\n\n\n\n<li>Anthropic-compatible tools<\/li>\n\n\n\n<li>Agent-style coding workflows<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">13. How to Confirm Token Plan Is Actually Being Used<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After running Claude Code with the correct <code>sk-sp-...<\/code> key and Token Plan endpoint, go back to:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Model Studio \u2192 Subscription \u2192 Token Plan \u2192 My Subscriptions\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check the Usage section.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If it shows usage such as:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Usage: 0.44%\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">then your Token Plan quota is being consumed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That is the confirmation you want.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Also check your normal Alibaba billing area. If you are using the Token Plan correctly, regular pay-as-you-go charges should not increase for the same Claude Code usage.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">14. Permanent Setup on Linux or macOS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If the setup works, save it permanently in your shell config.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For Bash:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;&gt; ~\/.bashrc &lt;&lt;'EOF'\n\n# Alibaba Qwen Token Plan for Claude Code\nexport AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\nEOF\n\nsource ~\/.bashrc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Zsh:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat &gt;&gt; ~\/.zshrc &lt;&lt;'EOF'\n\n# Alibaba Qwen Token Plan for Claude Code\nexport AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\nEOF\n\nsource ~\/.zshrc\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Security note: saving API keys in shell files is convenient but not the most secure method. For production or shared servers, use a secrets manager or restricted environment file.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">15. Safer Setup Using a Separate Environment File<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a separate file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>nano ~\/.qwen-token-plan.env\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>export AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Restrict permissions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chmod 600 ~\/.qwen-token-plan.env\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Load it when needed:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>source ~\/.qwen-token-plan.env\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is cleaner than putting the key directly into every shell profile.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">16. Important Security Warning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Never paste your API key into:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Chat messages<\/li>\n\n\n\n<li>Public GitHub repositories<\/li>\n\n\n\n<li>Screenshots<\/li>\n\n\n\n<li>Blog posts<\/li>\n\n\n\n<li>Terminal recordings<\/li>\n\n\n\n<li>Shared documents<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you accidentally expose a key, reset it immediately.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For Token Plan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Subscription \u2192 Token Plan \u2192 My Subscriptions \u2192 Member Management \u2192 Reset\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then copy the new <code>sk-sp-...<\/code> key.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">17. Quick Troubleshooting Checklist<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Use this checklist if Claude Code fails.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Check 1: Is the seat assigned?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 1\/1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Standard Seat 0\/1\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check 2: Is the key generated?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>API Key: sk-sp-...\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>No API key has been generated yet.\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check 3: Is the key prefix correct?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-sp-\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sk-ws-\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check 4: Is the Base URL correct for Claude Code?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Correct:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Wrong:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The OpenAI-compatible URL is not for Claude Code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Check 5: Is the key empty?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>echo \"KEY_LENGTH=${#ANTHROPIC_API_KEY}\"\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If output is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>KEY_LENGTH=0\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">the key is empty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Check 6: Is old config overriding the new one?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Run:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -R \"ANTHROPIC\\|sk-ws\\|ws-ez\\|dashscope\\|token-plan\\|qwen\" \\\n~\/.claude ~\/.claude.json ~\/.zshrc ~\/.bashrc ~\/.bash_profile 2&gt;\/dev\/null\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Remove old workspace URLs and old keys.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Check 7: Did you restart Claude Code?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After changing environment variables, stop and restart Claude Code:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Ctrl + C\nclaude\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">18. Final Working Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">This is the final recommended Claude Code configuration for Alibaba Qwen with the $30 Token Plan in Singapore region:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>unset ANTHROPIC_API_KEY\nunset ANTHROPIC_AUTH_TOKEN\nunset ANTHROPIC_BASE_URL\nunset ANTHROPIC_MODEL\nunset ANTHROPIC_SMALL_FAST_MODEL\nunset AI_PROVIDER\n\nexport AI_PROVIDER=\"qwen\"\nexport ANTHROPIC_BASE_URL=\"https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\"\nexport ANTHROPIC_API_KEY=\"PASTE_SK_SP_KEY_HERE\"\nexport ANTHROPIC_MODEL=\"qwen3.7-max\"\n\necho \"BASE=$ANTHROPIC_BASE_URL\"\necho \"MODEL=$ANTHROPIC_MODEL\"\necho \"KEY_PREFIX=$(echo \"$ANTHROPIC_API_KEY\" | cut -c1-6)\"\necho \"KEY_LENGTH=${#ANTHROPIC_API_KEY}\"\n\nclaude\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Expected verification:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BASE=https:\/\/token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\nMODEL=qwen3.7-max\nKEY_PREFIX=sk-sp-\nKEY_LENGTH=greater than 0\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The main mistake many users make is assuming that after purchasing the Alibaba Cloud $30 Token Plan, their existing API key will automatically start using the subscription quota. That is not how it works.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To use Token Plan correctly, you need four things:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1. Singapore region \/ ap-southeast-1\n2. Assigned Token Plan seat\n3. Dedicated sk-sp-... API key\n4. Token Plan Base URL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For Claude Code, the correct Base URL is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/apps\/anthropic\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">For OpenAI-compatible tools, the correct Base URL is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>https:&#47;&#47;token-plan.ap-southeast-1.maas.aliyuncs.com\/compatible-mode\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If you use a workspace key like <code>sk-ws-...<\/code> or a workspace URL like <code>ws-xxxxxxxx.ap-southeast-1.maas.aliyuncs.com<\/code>, your Token Plan quota may not be used and normal API billing may continue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The clean formula is:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Token Plan = sk-sp key + token-plan endpoint\nClaude Code = \/apps\/anthropic\nOpenAI-compatible tools = \/compatible-mode\/v1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Once configured correctly, usage should appear under the Token Plan usage dashboard, and Claude Code should work with Qwen models through Alibaba Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Alibaba Cloud Model Studio gives access to Qwen models through multiple API modes. At first glance, it looks simple: [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3693","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=3693"}],"version-history":[{"count":2,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3693\/revisions"}],"predecessor-version":[{"id":3701,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/3693\/revisions\/3701"}],"wp:attachment":[{"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=3693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=3693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aiopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=3693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}