# Quickstart

> From signing up to your first request to Vikey in five steps.

1. **Sign up.** Open [vikey.ai/register](https://vikey.ai/register). Sign up with email or Google. Email sign-up sends a 6-digit code to your inbox.

2. **Top up.** In the dashboard, open **Billing**, then **Top up**. Pay with QRIS from any e-wallet or mobile banking app, from Rp10.000. The balance arrives automatically once the payment is confirmed, usually within seconds. Details in [Top up and balance](/en/account/top-up/).

3. **Create an API key.** Open **API Keys** in the dashboard and create a new key with a name such as `laptop` or `claude-code`. Keep it somewhere safe. This key goes into every request.

4. **Send your first request.** Replace `YOUR_API_KEY` with the key from step 3.

**curl**

      ```bash
      curl https://api.vikey.ai/v1/chat/completions \
        -H "Authorization: Bearer YOUR_API_KEY" \
        -H "Content-Type: application/json" \
        -d '{
          "model": "openai/gpt-6-luna",
          "messages": [{"role": "user", "content": "Hi, which model are you?"}]
        }'
      ```
**Python**

      ```python
      from openai import OpenAI

      client = OpenAI(base_url="https://api.vikey.ai/v1", api_key="YOUR_API_KEY")
      reply = client.chat.completions.create(
          model="openai/gpt-6-luna",
          messages=[{"role": "user", "content": "Hi, which model are you?"}],
      )
      print(reply.choices[0].message.content)
      ```
**Node.js**

      ```js
      import OpenAI from 'openai'

      const client = new OpenAI({ baseURL: 'https://api.vikey.ai/v1', apiKey: 'YOUR_API_KEY' })
      const reply = await client.chat.completions.create({
        model: 'openai/gpt-6-luna',
        messages: [{ role: 'user', content: 'Hi, which model are you?' }],
      })
      console.log(reply.choices[0].message.content)
      ```

    The response follows the OpenAI format: `choices` holds the answer and `usage` holds the token counts.

5. **Check your usage.** Open **Usage** in the dashboard. Every request is recorded per model with its tokens and cost in Rupiah.

**Want to use it in a coding agent right away?**

Continue with [Claude Code](/en/agents/claude-code/), [Codex CLI](/en/agents/codex/) or [opencode](/en/agents/opencode/). If you would rather not pick a model, use [Vikey Auto](/en/models/vikey-auto/).

## If the first request fails

| What you see | Meaning | What to do |
| --- | --- | --- |
| `401` with `Invalid API key` | Wrong key, or a space was copied with it | Copy the key again from the dashboard |
| `402` with `Insufficient balance` | No balance, or not enough for this request | Top up and send it again |
| `404` with `Model '...' not found` | Wrong model id, or the model is inactive | Get the correct id from `GET /v1/models` |

The full list is in [Errors](/en/api/errors/).

Source: https://docs.vikey.ai/en/quickstart/
