Lompat ke isi

API VibeCode

Pakai model VibeCode dari alat atau kodemu sendiri lewat satu kunci. API-nya mengikuti format OpenAI: ganti alamat dasar dan kuncinya, selebihnya sama. Kamu membayar per token dari saldo Credit.

1Siapkan akun dan Credit

Kunci API dibuat dari akun VibeCode yang sama dengan di aplikasi. Belum punya akun? Daftar di Dashboard, gratis.

API dibayar dari saldo dompet Credit saja. Jatah paket Pro dan Max tidak terpakai, dan batas harian aplikasi tidak berlaku di sini.

Syarat membuat kunci: kamu pernah mengisi saldo atau membeli paket lewat QRIS dan pembayarannya sudah lunas. Isi ulang manual oleh admin tidak dihitung. Isi saldo di halaman Credit dengan nominal bebas, kelipatan Rp1.000, mulai Rp5.000 sampai Rp100.000. Nominal itu belum termasuk pajak dan biaya admin 13%.

2Buat kunci

Kunci kamu

Buat, lihat, dan cabut kunci di Dashboard. Kunci baru tampil sekali, tepat setelah dibuat.

Buka Kunci API

Kunci tampil sekali saja, tepat setelah dibuat. Server hanya menyimpan sidik jarinya (hash), jadi kunci yang hilang tidak bisa dilihat lagi: cabut, lalu buat yang baru. Satu akun punya paling banyak 10 kunci aktif dan bisa membuat paling banyak 30 kunci baru per hari.

Beri tiap kunci nama aplikasi atau alat yang memakainya, supaya mudah dicabut satu per satu.

3Panggilan pertama

Alamat dasar API adalah https://api.vibecodeagent.my.id/v1. Kirim kuncimu di header Authorization: Bearer sk-vc-…. Simpan kunci di variabel lingkungan, jangan di kode:

bash
export VIBECODE_API_KEY="sk-vc-..."
bash
curl https://api.vibecodeagent.my.id/v1/chat/completions \
  -H "Authorization: Bearer $VIBECODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Halo! Perkenalkan dirimu dalam satu kalimat."}]
  }'

Ganti deepseek-v4.1-flash dengan id dari daftar model. Jawabannya berbentuk chat completion standar: teks ada di choices[0].message.content, dan usage berisi jumlah token yang ditagih.

Parameter permintaan

Satu-satunya rute chat adalah POST /v1/chat/completions. Parameter yang diteruskan ke model ada di tabel ini; parameter lain dibuang tanpa galat.

ParameterKeterangan
modelWajib. Id dari daftar model.
messagesWajib. Larik pesan ala OpenAI.
toolsPemanggilan fungsi. Hanya berjalan di model yang mendukungnya.
tool_choicePemanggilan fungsi. Hanya berjalan di model yang mendukungnya.
parallel_tool_callsPemanggilan fungsi. Hanya berjalan di model yang mendukungnya.
streamtrue untuk menerima Server-Sent Events.
max_tokensBilangan bulat, minimal 1. Bila keduanya ada, yang lebih besar yang dipakai.
max_completion_tokensBilangan bulat, minimal 1. Bila keduanya ada, yang lebih besar yang dipakai.
temperatureDiteruskan ke model; efeknya mengikuti model.
top_pDiteruskan ke model; efeknya mengikuti model.
frequency_penaltyDiteruskan ke model; efeknya mengikuti model.
presence_penaltyDiteruskan ke model; efeknya mengikuti model.
stopDiteruskan ke model; efeknya mengikuti model.
seedDiteruskan ke model; efeknya mengikuti model.
nHanya 1.
response_formatDiteruskan ke model; lihat bagian Format respons.
userDiteruskan ke model.
stream_optionsHanya include_usage yang dibaca: bila true, bingkai terakhir membawa usage.
Catatan: Mengirim models ditolak (400 unsupported_parameter), dan n selain 1 ditolak (400 unsupported_value).

Streaming

Kirim "stream": true untuk menerima Server-Sent Events. Tiap bingkai adalah chat.completion.chunk, dan aliran ditutup dengan data: [DONE].

Bingkai usage hanya dikirim bila kamu meminta lewat stream_options: {"include_usage": true}. Tagihanmu tidak bergantung pada itu: kami menghitung dari pemakaian yang dilaporkan model, dan kalau angkanya tidak sampai, caranya ada di bagian Cara tagih.

bash
curl -N https://api.vibecodeagent.my.id/v1/chat/completions \
  -H "Authorization: Bearer $VIBECODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Tulis haiku tentang senja."}],
    "stream": true,
    "stream_options": {"include_usage": true}
  }'
Catatan: Kalau kamu memutus koneksi di tengah aliran, model tetap menyelesaikan jawabannya di sisi kami dan seluruh keluarannya ditagih.

Pemanggilan fungsi (tools)

Kirim definisi fungsi lewat tools; model membalas dengan tool_calls. Di mode streaming, arguments datang bertahap dengan index yang sama, jadi sambungkan potongannya sebelum mengurai JSON. Tidak semua model mendukung pemanggilan fungsi: coba dulu pada model yang kamu pilih.

bash
curl https://api.vibecodeagent.my.id/v1/chat/completions \
  -H "Authorization: Bearer $VIBECODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4.1-flash",
    "messages": [{"role": "user", "content": "Cuaca di Bandung sekarang?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "cuaca_kota",
        "description": "Ambil cuaca terkini untuk satu kota.",
        "parameters": {
          "type": "object",
          "properties": {"kota": {"type": "string"}},
          "required": ["kota"]
        }
      }
    }]
  }'

Kirim hasil fungsinya kembali sebagai pesan role: "tool" dengan tool_call_id yang sama, seperti di OpenAI.

Format respons

response_format diteruskan ke model. {"type": "json_object"} hanya berlaku di model yang mendukungnya; model lain bisa mengabaikannya atau menolaknya dengan galat 400 upstream_rejected. Minta JSON juga di prompt, dan periksa hasilnya sebelum dipakai.

json
{
  "model": "deepseek-v4.1-flash",
  "messages": [{"role": "user", "content": "Beri tiga warna dasar sebagai objek JSON."}],
  "response_format": {"type": "json_object"}
}

Model dan harga

Daftar di bawah dibaca langsung dari GET /v1/models, tanpa login. Harga dalam Credit per 1 juta token.

Memuat daftar model…

Angka seperti $0,292 Credit adalah Credit VibeCode, bukan dolar AS.

Harga yang ditagih sama dengan di aplikasi. Harga di daftar sudah memperhitungkan lantai tarif: $0,025 Credit untuk 1 juta token masuk dan $0,05 Credit untuk 1 juta token keluar.

GET /v1/models/{id} mengembalikan satu model; id yang tidak tersedia dijawab 404 model_not_found.

bash
curl https://api.vibecodeagent.my.id/v1/models

Galat

Galat berbentuk objek OpenAI, dan pesannya berbahasa Inggris:

json
{
  "error": {
    "message": "Invalid API key.",
    "type": "authentication_error",
    "param": null,
    "code": "invalid_api_key"
  }
}
codeStatusArtinya
missing_api_key401Header Authorization tidak ada.
invalid_api_key401Kunci salah atau sudah dicabut.
account_disabled403Akses API akunmu dinonaktifkan oleh admin.
rate_limit_exceeded429Melewati batas permintaan per menit per akun (biasanya 20). Ikuti Retry-After.
capacity_exhausted429Kapasitas model sedang penuh. Ulangi sesudah Retry-After.
insufficient_balance402Saldo kurang dari taksiran biaya permintaan; pesannya memuat angkanya. Isi saldo atau kecilkan max_tokens.
model_not_found404Id model tidak ada atau tidak tersedia lewat API.
request_too_large413Badan permintaan lebih dari 16 MiB. Badan yang dikirim tanpa header Content-Length (chunked) dibatasi 32 MiB.
invalid_request_body400Badan permintaan bukan JSON yang sah.
unsupported_parameter400Parameter tidak didukung (param menyebut namanya).
unsupported_value400Nilai parameter tidak didukung, mis. n selain 1.
invalid_value400Nilai parameter tidak sah, mis. max_tokens bukan bilangan bulat minimal 1.
upstream_rejected400Model menolak permintaanmu, mis. karena parameter yang tak didukung model itu.
upstream_error502Model atau penyedianya gagal menjawab. Coba lagi.
service_unavailable503Layanan sedang tidak tersedia sementara. Coba lagi nanti.
internal_error500Galat tak terduga di sisi kami. Coba lagi.
unknown_url404Alamatnya tidak dikenal. Periksa jalur dan awalan /v1: yang tersedia hanya /v1/chat/completions, /v1/models, dan /v1/models/{id}.
method_not_allowed405Metode HTTP tidak didukung di alamat itu; header Allow menyebut yang boleh.

Setiap jawaban membawa header x-request-id; sertakan saat melapor masalah.

Batas laju dan antrean

Batas biasanya 20 permintaan per menit per akun (jendela geser 60 detik), dihitung lintas semua kuncimu; angka akunmu tampil di Dashboard, bagian Kunci API. Setiap jawaban chat yang lolos pemeriksaan kunci membawa x-ratelimit-limit-requests, x-ratelimit-remaining-requests, dan x-ratelimit-reset-requests.

Kapasitas model dipakai bersama aplikasi VibeCode. Saat penuh, permintaanmu mengantre sampai sekitar 45 detik; kalau tetap penuh, kamu menerima 429 capacity_exhausted. Ikuti header Retry-After (dalam detik) apa adanya: nilainya bisa hanya 1 detik.

Dengan "stream": true, model harus mulai mengirim jawaban dalam 30 detik. Tanpa stream, seluruh jawaban harus selesai dalam 30 detik; kalau tidak, kamu menerima 502 upstream_error (kami bisa mencoba lagi dulu, jadi total waktu tunggu bisa lebih lama); pakai "stream": true untuk jawaban panjang.

Cara tagih

  • Tiap sisi (masuk dan keluar) dibulatkan ke atas ke satuan terkecil Credit.
  • Sebelum model dijalankan, kami memesan taksiran biaya dari saldomu: token masuk ditaksir dari ukuran permintaan (kira-kira 4 byte per token), ditambah batas keluaran. Selesai, selisihnya dikembalikan.
  • Kalau kamu tidak mengisi max_tokens maupun max_completion_tokens, kami memasang batas keluaran sebesar yang bisa dibayar saldomu, paling banyak 32.768 token. Jawaban panjang lalu bisa berakhir dengan finish_reason: "length"; setel max_tokens sendiri untuk jawaban panjang.
  • Kalau saldo tidak cukup untuk taksiran itu, permintaan ditolak 402 sebelum model dijalankan.
  • Tagihan lewat API tidak pernah membuat saldomu negatif. Kalau biaya sebenarnya melebihi taksiran dan sisa saldo tidak cukup menutupnya, kamu ditagih sebesar saldo yang tersedia; kelebihannya tidak ditagihkan.
  • Kalau angka usage dari model tidak sampai (mis. aliran dari model terputus), kami menagih sesuai teks yang sudah terkirim (kira-kira 4 byte per token) dan menandainya "ditaksir" di log.
  • Satu kalimat identitas singkat (sekitar 30 token) ditambahkan ke permintaanmu supaya model tahu namanya; ia ikut ditagih sebagai token masuk.
  • Log permintaan (tanpa isi pesan) disimpan 30 hari; ringkasan harian tetap tersimpan. Lihat di halaman Credit.
  • Kalau server kami dimulai ulang tepat saat permintaanmu berjalan, saldo yang dipesan untuk permintaan itu bisa tertahan. Bila saldomu terasa kurang, hubungi admin VibeCode dan sebutkan x-request-id.

Alat pihak ketiga

Alat apa pun yang bisa memakai endpoint "OpenAI compatible" bisa dipakai dengan tiga isian: alamat dasar https://api.vibecodeagent.my.id/v1, kunci sk-vc-…, dan id model dari daftar. Nama menu bisa berbeda antar versi alat.

Cursor

Di pengaturan model, isi OpenAI API Key dengan kuncimu dan aktifkan override alamat dasar OpenAI ke alamat di atas, lalu tambahkan id model kustom. Fitur mana yang bisa memakai model kustom ditentukan Cursor.

Cline dan Roo Code

Pilih penyedia "OpenAI Compatible", isi Base URL, API Key, dan Model ID.

Continue

Tambahkan model di berkas konfigurasi dan ganti sk-vc-... dengan kuncimu:

yaml
models:
  - name: VibeCode
    provider: openai
    model: deepseek-v4.1-flash
    apiBase: https://api.vibecodeagent.my.id/v1
    apiKey: sk-vc-...

n8n

Di node OpenAI Chat Model, buat kredensial dengan API Key kuncimu dan ubah Base URL ke alamat di atas.

Open WebUI

Di Admin Settings, Connections, tambahkan koneksi OpenAI dengan URL dan kunci di atas.

Peringatan: VibeCode hanya menyediakan /v1/chat/completions dan /v1/models. Fitur alat yang butuh Responses API, embeddings, atau pembuatan gambar dan audio tidak akan jalan.

Keamanan kunci

  • Jangan taruh kunci di kode frontend yang publik. API ini mengizinkan permintaan dari peramban asal mana pun (CORS terbuka), jadi siapa pun yang membaca sumber halamanmu bisa memakai saldomu.
  • Simpan kunci di variabel lingkungan atau penyimpan rahasia, satu kunci per aplikasi.
  • Kunci yang bocor: cabut di Dashboard, bagian Kunci API. Pencabutan berlaku langsung, dan permintaan berikutnya dengan kunci itu dijawab 401.
  • Kami tidak pernah meminta kuncimu lewat email atau chat.
  • Rute dan token akun yang dipakai aplikasi VibeCode dan Chat web hanya untuk keduanya. Akses terprogram ke model lewat satu-satunya jalan ini: kunci sk-vc-…. Rinciannya di Syarat dan Ketentuan.