Back to guides
Installation·October 3, 2026·Updated October 10, 2026·14 min read

How to install Claude Code: official Windows, macOS, and Linux commands, API key without a subscription, check /status, and pay by card or Link

Claude Code installs with one official command. What more often causes problems are the steps afterward: choosing the right terminal on Windows, the Node.js version when using npm, configuring an API key without logging in, and paying from Indonesia without QRIS or an e-wallet.

In brief: install Claude Code with one official command (choose the line for macOS/Linux, PowerShell, or CMD below), then connect using an API key instead of logging in. This requires just six variables: ANTHROPIC_BASE_URL=https://api.kunavo.com (without /v1), ANTHROPIC_AUTH_TOKEN containing the key, and four variables that pin the models. Check the result with /status. No Pro or Max subscription is required; you pay for tokens from a prepaid balance starting at $10, topped up by card (Visa, Mastercard, etc.) or Link. QRIS, GoPay, OVO, and DANA are not available.

Terminal
# macOS, Linux, WSL
curl -fsSL https://claude.ai/install.sh | bash
PowerShell
# Windows PowerShell
irm https://claude.ai/install.ps1 | iex
cmd.exe
:: Windows Command Prompt (CMD)
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

All commands and variable names here are aligned with the official Claude Code documentation at October 3, 2026. That documentation is available in Indonesian, including the installation page and the LLM gateway connection page, so you can check them yourself. Kunavo prices and payment methods were checked on October 10, 2026.

Six steps from zero to running Claude Code

  1. Make sure the laptop meets the requirements and decide: log in to a Claude account or use an API key.
  2. Run the native installer for your terminal.
  3. Open a new terminal, check claude --version, and fix PATH if needed.
  4. Set up the API key and pin the models.
  5. Open the first session and use /status to verify that your key is being used.
  6. Top up with a card or Link, then get started.

Step 1: check the requirements, then choose login or an API key

What to checkOfficial requirements (checked October 3, 2026)
Operating systemmacOS 13.0+; Windows 10 version 1809+ or Windows Server 2019+; Ubuntu 20.04+, Debian 10+, Alpine Linux 3.19+
Hardware4 GB RAM or more; x64 or ARM64 processor. 32-bit Windows is not supported.
TerminalBash, Zsh, PowerShell, or CMD
Node.jsNot required for the native installer. Only required for npm, and it must be version 22 or later.
CountryIt is included in the list of countries supported by Anthropic. Indonesia is on that list for both Claude.ai and the API.

Once installed, Claude Code needs to know who is paying. The first option is to sign in with a Claude account, which requires a Pro, Max, Team, Enterprise, or Console plan; the free Claude.ai plan does not include Claude Code. According to the Claude pricing page (checked on October 3, 2026), Pro costs $20 per month, or $17 per month with annual billing ($200 charged upfront), and Max starts at $100 per month; all prices exclude tax. For subscriptions purchased on the web, Anthropic accepts only credit or debit cards; subscriptions through the iOS or Android app are paid through the App Store or Google Play (Claude billing FAQs, checked on October 3, 2026). The sign-in process is explained on the official authentication page.

The second option, covered in detail in this guide, is an API key: no subscription and no login screen. You pay per token actually used, so costs are lower in quiet months. The only missing features are the two tied to a claude.ai account: Remote Control and voice dictation; the complete list of differences is in step 5.

Opening a terminal for the first time? Anthropic provides a beginner's guide to the terminal in Indonesian.

Step 2: run the installer

macOS, Linux, and WSL

Paste the install.sh line at the top of the page into Terminal, press Enter, and wait for it to finish. The script is fetched directly from claude.ai, installs the program at ~/.local/bin/claude, and Claude Code updates itself in the background from then on. In the official documentation, this method is labeled “Recommended”.

Windows: identify your terminal first

Many older tutorials tell you to open PowerShell with “Run as Administrator” and install WSL first. Neither is necessary: the official Indonesian-language documentation states that Windows installation runs from a regular terminal without Administrator privileges, and WSL is optional. The prompt determines which command to use:

  • The PS C:\Users\NamaAnda> prompt means PowerShell. Use the irm … | iex line.
  • The C:\Users\NamaAnda> prompt without PS means Command Prompt (CMD). Use the install.cmd line.
  • From the Start menu, choose “Windows PowerShell”, not “Windows PowerShell (x86)”. The x86 version runs in 32-bit mode and ends with Claude Code does not support 32-bit Windows, even if the laptop is 64-bit.

A command used in the wrong terminal is immediately identifiable from its message, such as The token '&&' is not a valid statement separator (the CMD line in PowerShell) or 'irm' is not recognized as an internal or external command (the PowerShell line in CMD). On Indonesian-language Windows, the message may appear translated. The complete list is in the error table below.

Git is not required. If Git for Windows is installed, Claude Code's Bash tool uses Git Bash; otherwise, commands run through PowerShell. If Git is already installed but Git Bash cannot be found, set CLAUDE_CODE_GIT_BASH_PATH in the env block of ~/.claude/settings.json to the location of bash.exe, for example C:\Program Files\Git\bin\bash.exe. When is WSL worth using?

EnvironmentPreparationSandboxingSuitable for
Windows directlyNone (Git for Windows optional)NoProjects actually developed on Windows
WSL 2WSL 2 already enabledYesProjects requiring Linux tools or isolated commands
WSL 1WSL 1 already enabledNoOnly if WSL 2 cannot be used

Choosing WSL? Run the install.sh line inside the WSL terminal, and always open claude from that same WSL terminal.

Alternatives: Homebrew, WinGet, or npm

Homebrew and WinGet are also official, but according to the documentation neither updates automatically by default. You must update them yourself:

# macOS lewat Homebrew (tidak update otomatis; perbarui dengan brew upgrade)
brew install --cask claude-code

# Windows lewat WinGet (tidak update otomatis; perbarui dengan winget upgrade)
winget install Anthropic.ClaudeCode

npm is still documented as an option, provided you have Node.js 22 or later (download it from nodejs.org). With an older Node.js version, npm only displays an EBADENGINE warning and still installs the package, because it downloads a native program that does not depend on Node.js at runtime.

Terminal
node -v                                    # harus v22 ke atas
npm install -g @anthropic-ai/claude-code   # jangan pakai sudo

# memperbarui ke versi terbaru
npm install -g @anthropic-ai/claude-code@latest

Three habits that break npm installations: using sudo npm install -g (the documentation identifies it as a source of permission problems and security risks), updating with npm update -g instead of @latest, and disabling optional dependencies through --omit=optional or optional=false in .npmrc. The last prevents the @anthropic-ai/claude-code-* package for your platform from being downloaded, so on macOS or Linux claude responds with claude native binary not installed.

In PowerShell, npm sometimes gets stuck at npm.ps1 cannot be loaded because running scripts is disabled on this system. This is the execution policy blocking .ps1 scripts. The documentation gives three solutions: allow local scripts for your user with the command below, call npm.cmd and claude.cmd, or leave npm and use the native installer.

PowerShell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

One more warning: ignore third-party .exe installers circulated in tutorials, especially those requesting Administrator privileges. The official command above is sufficient.

Step 3: make sure Claude Code is installed

Close the terminal where you installed it and open a new one. The old window still uses PATH from before installation, so claude is often not recognized there. In the new terminal:

New terminal
claude --version   # muncul nomor versi = instalasi berhasil
claude doctor      # cek instalasi dan file pengaturan tanpa membuka sesi

claude doctor helps distinguish two types of problems: if its report is clean but Claude Code still cannot connect, the source is configuration (step 4), not installation.

Still seeing command not found: claude or 'claude' is not recognized? The installation folder has not been added to PATH. On macOS and Linux, that folder is ~/.local/bin; on Windows, it is %USERPROFILE%\.local\bin. For Windows, the documentation provides the following PowerShell command:

PowerShell
# Ada hasilnya? Berarti PATH sudah benar, cukup buka terminal baru.
$env:PATH -split ';' | Select-String '\.local\\bin'

# Tidak ada hasil? Tambahkan folder instalasi ke PATH user:
$currentPath = [Environment]::GetEnvironmentVariable('PATH', 'User')
[Environment]::SetEnvironmentVariable('PATH', "$currentPath;$env:USERPROFILE\.local\bin", 'User')

# Tutup PowerShell, buka lagi, lalu:
claude --version

If the download fails from the start, check the message. According to the installation troubleshooting page (checked on October 3, 2026), syntax error near unexpected token '<' or curl: (22) The requested URL returned error: 403 means that the download returned an HTML page or an error code, not the script. The message App unavailable in region means your connection appears to come from an unsupported country; since Indonesia is supported, a VPN or proxy is the most likely cause. A 403 with no response body often comes from a company proxy or campus firewall. Homebrew, WinGet, and npm download from the same host, so try another network or ask your network administrator to allow access before switching methods.

Step 4: set up an API key without a subscription

Claude Code has the built-in ANTHROPIC_BASE_URL variable for sending requests to a gateway other than Anthropic, and its official documentation has a dedicated page for this. This is therefore a supported configuration, not a modification or plugin. Get a sk-kn-… key first (see step 6 for creating one and adding funds), then choose one place to store it.

macOS and Linux: add these six lines to the end of ~/.zshrc (Zsh, the macOS default) or ~/.bashrc, save, and open a new terminal.

~/.zshrc or ~/.bashrc
export ANTHROPIC_BASE_URL=https://api.kunavo.com   # domain saja, tanpa /v1
export ANTHROPIC_AUTH_TOKEN=sk-kn-...
export ANTHROPIC_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_OPUS_MODEL=claude-opus-5-5
export ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5
export ANTHROPIC_DEFAULT_HAIKU_MODEL=claude-haiku-4-5

Windows, for testing first: set the variables in one PowerShell window, then immediately run claude.

PowerShell
# Untuk uji coba: hanya berlaku sampai jendela PowerShell ini ditutup
$env:ANTHROPIC_BASE_URL = "https://api.kunavo.com"
$env:ANTHROPIC_AUTH_TOKEN = "sk-kn-..."
$env:ANTHROPIC_MODEL = "claude-sonnet-5"
$env:ANTHROPIC_DEFAULT_OPUS_MODEL = "claude-opus-5-5"
$env:ANTHROPIC_DEFAULT_SONNET_MODEL = "claude-sonnet-5"
$env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "claude-haiku-4-5"
claude

All operating systems, permanently: put them in the env block of the user settings file ~/.claude/settings.json (Windows: %USERPROFILE%\.claude\settings.json). This applies to all projects. If the file already contains settings, insert only the env block without overwriting other settings.

~/.claude/settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.kunavo.com",
    "ANTHROPIC_AUTH_TOKEN": "sk-kn-...",
    "ANTHROPIC_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5-5",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5"
  }
}

Things to note about the six variables above:

VariableValueCommon mistake
ANTHROPIC_BASE_URLhttps://api.kunavo.comAdding /v1. Claude Code adds /v1/messages itself, resulting in /v1/v1/messages and a 404.
ANTHROPIC_AUTH_TOKENKey sk-kn-…Kunavo accepts keys from both the Authorization: Bearer and x-api-key headers, so ANTHROPIC_API_KEY also works. The difference on the Claude Code side is that ANTHROPIC_AUTH_TOKEN is active immediately, while ANTHROPIC_API_KEY waits for one approval in interactive mode. If it was previously rejected, the key is silently ignored until you enable it again in /config → Use custom API key.
ANTHROPIC_MODELclaude-sonnet-5 (Claude Sonnet 5)Writing an old model ID ending in a date. The name must exactly match the Kunavo model list.
ANTHROPIC_DEFAULT_OPUS_MODELclaude-opus-5-5 (Claude Opus 5.5)Leaving it empty means the opus alias follows Anthropic's newest model. Claude Opus 5.5 requires Claude Code v2.1.280 or later; older versions can be updated with claude update.
ANTHROPIC_DEFAULT_SONNET_MODELclaude-sonnet-5 (Claude Sonnet 5)Leaving it empty means the sonnet alias requests Sonnet 5.5, which is unavailable on Kunavo: /model sonnet, the opusplan execution phase, and subagents with model: sonnet return 404.
ANTHROPIC_DEFAULT_HAIKU_MODELclaude-haiku-4-5 (Claude Haiku 4.5)Forgetting that this variable also selects the model for background tasks, not only the haiku alias. If it is not set, the haiku alias requests an ID that Kunavo does not offer (Haiku 5.5 from v2.1.293 onward): /model haiku and subagents with model: haiku receive 404s.

Why pin the model? According to the model configuration documentation (checked on October 3, 2026), for API users the default model and the opus alias currently point to Opus 5.5, while the sonnet alias points to Sonnet 5.5. These aliases change with each new release. As of October 3, 2026, Sonnet 5.5 is not available on Kunavo, and the next model may not be available right away; requests to unavailable models return 404. That is why the block above also pins the sonnet alias with ANTHROPIC_DEFAULT_SONNET_MODEL=claude-sonnet-5: without that pin, /model sonnet, the execution phase of opusplan, and subagents using sonnet return 404. The opus alias is pinned to Claude Opus 5.5 (claude-opus-5-5), which requires Claude Code v2.1.280 or later; if your version is older, run claude update.

Kunavo rates per 1 million tokens (input / output): Claude Sonnet 5 $1.40 / $7.00 (Anthropic list price: $2.00 / $10.00), Claude Opus 5.5 $2.80 / $14.00, and Claude Haiku 4.5 $0.70 / $3.50.

Two other pitfalls. First, never put a key in a project's .claude/settings.json: according to the gateway documentation, that file is committed and cloned by anyone who gets the repository. Second, if the same variable is set in the shell and in the settings file's env block, the settings file value generally takes precedence. So if a change in ~/.zshrc does not seem to take effect, check the settings file. Users of the VS Code extension can set the same variable in claudeCode.environmentVariables in VS Code user settings.

Step 5: open the first session and check /status

Go to the project folder and type claude. If the key has been read, the session opens immediately without a login screen. A login screen indicates that the key has not reached Claude Code. The most common cause is that the key exists only in .claude/settings.json or the project's .claude/settings.local.json. In interactive mode, the env block from the project file is read only after the initial wizard and the question about whether the folder is trusted, so Claude Code still asks for login on its first launch. Move the key to the shell or to ~/.claude/settings.json.

After the session opens, type /status. The configuration is correct if:

  • there is an Anthropic base URL line containing https://api.kunavo.com (this line appears only when the gateway is configured; its absence means ANTHROPIC_BASE_URL was not read), and
  • there is an Auth token line mentioning ANTHROPIC_AUTH_TOKEN. If Login method appears with a claude.ai account, Claude Code is still using the old login.

Want to test the key before opening Claude Code? The official documentation uses a request that asks for only 1 output token, so the amount deducted from the balance is very small. The command reads variables from the currently active shell; if your key is stored in a settings file, run export in this terminal first. A result beginning with {"id":"msg_ means success; 401 means the key was rejected.

Terminal
curl -sS -w '\n%{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

The PowerShell version; it succeeds if the id field in the response begins with msg_:

PowerShell
Invoke-RestMethod -Method Post -Uri "$env:ANTHROPIC_BASE_URL/v1/messages" `
  -Headers @{ "Authorization" = "Bearer $env:ANTHROPIC_AUTH_TOKEN"; "anthropic-version" = "2023-06-01" } `
  -ContentType "application/json" `
  -Body '{"model": "claude-sonnet-5", "max_tokens": 1, "messages": [{"role": "user", "content": "."}]}'

Several things work differently while Claude Code uses an API key and gateway:

FeatureWith a Kunavo API keySource (checked October 3, 2026)
Remote Control, voice dictationUnavailable. Both require a claude.ai identity, and Remote Control is also disabled when ANTHROPIC_BASE_URL is not an Anthropic host.Gateway documentation
/fastDisplayed as unavailable; with only a bearer token, Claude Code does not ask about its availability.Gateway documentation
MCP tool searchDisabled by default, so MCP tools are loaded at the start of the session; this can be changed with ENABLE_TOOL_SEARCH.MCP documentation
The number in /contextAn estimate based on character count, because Kunavo does not provide /v1/messages/count_tokens.Gateway compatibility guide
The dollar amount in /usageCalculated locally from the token count using Anthropic's list prices (unless the organization administrator configures a modelPricing table). What is actually deducted is your Kunavo balance on the Billing page.Cost documentation

Step 6: add balance with a card or Link (no QRIS, GoPay, OVO, DANA)

What you pay Kunavo for is prepaid API balance, not a subscription. This balance is deducted by Claude Code per token after the key is configured. The sequence is:

  1. Create a Kunavo account using an email address or Google account. No card is required when signing up.
  2. Open Billing and choose an amount. Minimum $10, with no monthly fee. Larger amounts may receive a balance bonus: pay $100 → balance $110, pay $1.000 → balance $1.200, and pay $5.000 → balance $6.250.
  3. In Stripe Checkout, pay by card (Visa, Mastercard, etc.), Link, or Apple Pay/Google Pay if your device and browser are set up for it. Link saves your payment details, so the next top-up takes just a few clicks.
  4. Open API Keys and create a key. Keys beginning with sk-kn- are shown only once, so copy them immediately into ANTHROPIC_AUTH_TOKEN.

QRIS, GoPay, OVO, DANA, ShopeePay, virtual accounts, and bank transfers are not available. Without a card that supports international online transactions, you currently cannot top up on Kunavo. Debit cards bearing the Visa or Mastercard logo also count as cards; if one is declined, online or international transactions are usually not enabled in your banking app, and the final decision rests with the issuing bank.

Kunavo prices are in USD. If checkout shows rupiah, the exchange rate is set by Stripe and includes a 2–4% conversion fee paid by the buyer (Stripe Adaptive Pricing documentation, checked on October 3, 2026). Choosing to pay in USD avoids that fee, though your bank's own exchange rate and fees may still apply.

The balance never expires, and failed requests do not deduct from it. Automatic top-ups work only with a saved card or Link. Kunavo does not issue any tax documents. This balance also cannot be used to pay for Claude Pro or Max. Details of the rates for all Claude models and how to pay from Indonesia are available in Claude API pricing; the subscription-versus-API-key calculations specifically for Claude Code are in Claude Code pricing.

How much will it cost, approximately?

Each Claude Code request resends the conversation context, but the same initial portion from request to request is charged at a much lower cache-read rate. The calculation below is pure token arithmetic based on the stated assumptions, not a measurement and not an upper bound:

  • one request = 40,000 input tokens; 36,000 (90%) are read from the cache, and the remaining 4,000 are written to the cache;
  • one request produces 1,000 output tokens;
  • one session = 50 requests, excluding Claude Haiku 4.5 calls in the background;
  • cache-read rate 10% and cache-write rate 1.25× the input rate (Claude Sonnet 5 proportion on Kunavo; each model in the table uses its own proportion).
ModelPer requestOne session (50 requests)One session if the cache is not used
Claude Sonnet 5$0.019$0.95$3.15
Claude Opus 5.5$0.033$1.65$6.30

Your actual figures vary with context length, how often the cache is hit, response length, and whether the conversation is cleared with /clear when switching tasks. According to Anthropic's cost documentation, Claude Code's background process itself is usually below $0.04 per session (checked October 3, 2026). Full rates are available on the pricing page, and the Claude token cost calculator (English) can help estimate your own usage patterns.

How to use Claude Code day to day

Terminal
cd ~/proyek-saya   # Claude Code bekerja di folder tempat ia dijalankan
claude              # mulai sesi
claude -c           # lanjutkan percakapan terakhir di folder ini
  • Ask in plain language, for example “explain this project’s structure” or “fix the error on the login page.” Claude Code reads files and asks for permission before changing or running anything.
  • Use /clear when switching tasks: the old history is no longer sent, so tokens per request decrease.
  • Use /model to change models. With the pins from step 4, opus = claude-opus-5-5, sonnet = claude-sonnet-5, and haiku = claude-haiku-4-5.
  • Use /status to check the gateway and key; use /usage for a cost estimate (using list prices; see the table in step 5).

Error messages and what they mean

MessageMeaning and what to do
The token '&&' is not a valid statement separatorThe CMD line was run in PowerShell. Use irm … | iex.
'irm' is not recognized as an internal or external commandThe PowerShell line was run in CMD. Use the install.cmd line.
A parameter cannot be found that matches parameter name 'fsSL', 'bash' is not recognized as the name of a cmdletThe macOS/Linux line was run in PowerShell. Use the PowerShell line.
Claude Code does not support 32-bit Windows“Windows PowerShell (x86)” was opened. Open the regular “Windows PowerShell.”
syntax error near unexpected token '<', 403An HTML page or error code was downloaded. Check your VPN, proxy, and firewall; the other method uses the same host.
command not found: claude, 'claude' is not recognizedPATH has not loaded the installation folder. Open a new terminal; on Windows, run the PATH command from step 3.
EBADENGINE (warning)Node.js is below version 22. Installation will still work, but update Node.js.
claude native binary not installed (macOS, Linux)npm skipped optional dependencies (--omit=optional, optional=false) or installation scripts (--ignore-scripts). Remove that configuration and reinstall.
npm.ps1 cannot be loadedPowerShell execution policy. Run Set-ExecutionPolicy in step 2 or use the native installer.
The login screen still appearsThe key was not read. Save it in the shell or ~/.claude/settings.json, not only in the project settings, then open a new terminal.
401The key was rejected. Check that the sk-kn- key was copied in full without spaces, has not been deleted in /app/keys, and is present in ANTHROPIC_AUTH_TOKEN.
404ANTHROPIC_BASE_URL ends with /v1, or the requested model does not exist on Kunavo (usually because the model variable has not been set).

Limitations

  • Pay only by card, Link, or Apple Pay/Google Pay. QRIS, GoPay, OVO, DANA, ShopeePay, virtual accounts, and bank transfers are unavailable; automatic top-ups work only with a saved card or Link.
  • Kunavo does not issue any tax documents.
  • This is a pay-per-token API, not a Claude Pro or Max subscription. With an API key, Remote Control and voice dictation are unavailable, /fast is disabled, and MCP tool search is disabled by default.
  • As of October 3, 2026, Sonnet 5.5 is not yet available on Kunavo; without pinning the model, the default alias may result in a 404.
  • Claude Code documentation is available in Indonesian, but the Kunavo integration documentation and the English version of this guide (Install Claude Code) are not yet available in Indonesian.

Frequently asked questions

What is the command to install Claude Code on a laptop?

It depends on your terminal. On macOS, Linux, or WSL: curl -fsSL https://claude.ai/install.sh | bash. In Windows PowerShell: irm https://claude.ai/install.ps1 | iex. In Command Prompt (CMD): curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd. All three are official native installers that do not require Node.js and update themselves. Afterward, open a new terminal and type claude --version; if a version number appears, installation is complete.

Does installing Claude Code on Windows require WSL or Run as Administrator?

No. According to the official Indonesian-language documentation, Claude Code runs directly on Windows from regular PowerShell or CMD, without Administrator privileges, and Git for Windows is optional. WSL 2 is useful only if your project needs Linux tools or sandboxing. One commonly overlooked point: do not open “Windows PowerShell (x86)” from the Start menu because it is a 32-bit process and Claude Code will refuse to run.

Is Claude Code free? Do I need a Claude Pro subscription?

The program is free to install, but usage is paid. If you log in with a Claude account, you need a Pro, Max, Team, Enterprise, or Console account; the free Claude.ai plan does not include Claude Code. The other option is an API key: set ANTHROPIC_BASE_URL=https://api.kunavo.com and ANTHROPIC_AUTH_TOKEN, and Claude Code works without login; each token is paid from your prepaid Kunavo balance, with no monthly fee. Remote Control and voice dictation are not included because both require a claude.ai account.

Can Claude Code be used from Indonesia?

Yes. Indonesia is on Anthropic's list of supported countries, both for Claude.ai and the API. If the installer or Claude Code displays “App unavailable in region”, your connection is usually routed through a VPN or proxy in another country; disable it and try again.

Where should the Claude Code API key be placed, and should ANTHROPIC_BASE_URL use /v1?

Do not use /v1 because Claude Code adds /v1/messages itself; with /v1, the result is /v1/v1/messages and a 404 error. Save the variables in ~/.zshrc or ~/.bashrc, in the PowerShell $PROFILE, or in the user settings file's ~/.claude/settings.json env block (Windows: %USERPROFILE%\.claude\settings.json). Do not put them in the project's .claude/settings.json because that file is committed to the repository. Kunavo accepts keys from both the Authorization: Bearer and x-api-key headers. We recommend ANTHROPIC_AUTH_TOKEN because it becomes active immediately; ANTHROPIC_API_KEY is used only after you approve it once in interactive mode.

Why must the model be pinned with ANTHROPIC_MODEL and the ANTHROPIC_DEFAULT_OPUS/SONNET/HAIKU_MODEL variables?

Because Claude Code's built-in aliases change whenever Anthropic releases a new model. According to the model configuration documentation (checked October 3, 2026), for API users the default model and the opus alias currently point to Opus 5.5, while the sonnet alias points to Sonnet 5.5. As of October 3, 2026, Sonnet 5.5 is not available on Kunavo, and newly released models may not be available immediately either, so an unpinned request may receive a 404. With pinning, the main session always uses claude-sonnet-5; opus always uses claude-opus-5-5 (Opus 5.5, requiring Claude Code v2.1.280 or later; older versions can be updated with claude update); sonnet, including the opusplan execution phase and sonnet-model subagents, always uses claude-sonnet-5; and haiku and background tasks always use claude-haiku-4-5. You also know exactly which rates are being used.

How can I make sure Claude Code uses the API key instead of a claude.ai account?

Within the session, type /status. If everything is correct, there will be an “Anthropic base URL” line containing https://api.kunavo.com and an “Auth token” line mentioning ANTHROPIC_AUTH_TOKEN. If “Login method” appears instead with a claude.ai account, the variables were not read: exit the session, open a new terminal, and check the file where you saved them.

Can I top up with QRIS, GoPay, OVO, DANA, or a bank transfer?

No. Kunavo balances can be topped up only with a card (Visa, Mastercard, etc., including debit cards bearing those network logos), Link, or Apple Pay/Google Pay if your device and browser have been configured for it. QRIS, GoPay, OVO, DANA, ShopeePay, virtual accounts, and bank transfers are not available. If your card is declined, check whether online or international transactions are enabled in your banking app; approval is determined by the card-issuing bank.

What is the minimum top-up? Can the balance expire? Is there a tax invoice?

Minimum $10, one-time payment with no monthly fee, and the balance never expires. Failed requests do not reduce the balance. Prices are in USD; if checkout displays rupiah, the exchange rate comes from Stripe and includes a 2–4% conversion fee paid by the buyer. Automatic top-ups work only with a saved card or Link. Kunavo does not issue any tax documents, including tax invoices. This balance is only for the Kunavo API; it cannot be used to pay for Claude Pro or Max.