Quickstart
-
Sign up. Open vikey.ai/register. Sign up with email or Google. Email sign-up sends a 6-digit code to your inbox.
-
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.
-
Create an API key. Open API Keys in the dashboard and create a new key with a name such as
laptoporclaude-code. Keep it somewhere safe. This key goes into every request. -
Send your first request. Replace
YOUR_API_KEYwith the key from step 3.Terminal window 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?"}]}'from openai import OpenAIclient = 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)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:
choicesholds the answer andusageholds the token counts. -
Check your usage. Open Usage in the dashboard. Every request is recorded per model with its tokens and cost in Rupiah.
If the first request fails
Section titled “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.