Dokumentasi API
Panduan singkat untuk mulai mengobrol dengan Vicurva lewat HTTP. Ditulis untuk pemula — tidak perlu latar belakang programming yang dalam.
01Pengenalan
Vicurva API adalah layanan chat berbentuk API. Kamu mengirim pesan lewat request HTTP, Vicurva membalas. Bentuknya sama seperti mengobrol di aplikasi chat biasa, hanya saja jalurnya program — bisa dipakai dari web, bot WhatsApp/Telegram/Discord, aplikasi mobile, atau skrip di komputer sendiri.
Dokumentasi ini hanya mencantumkan kemampuan yang tersedia: stalking profil media sosial tertentu, berita Kompas dan CNBC Indonesia, jadwal sepak bola, deployment website ke Vercel, input multimodal, pembuatan gambar AI, dan unduh video TikTok.
02Cara Akses
Setiap request wajib membawa API key di header:
X-API-Key: kunci-akses-kamu
Dua format lain juga diterima kalau lebih nyaman:
Authorization: Bearer kunci-akses-kamu- Menempel
?api_key=kunci-akses-kamudi URL
03Endpoint
| Method & Path | Kegunaan |
|---|---|
POST /api/generate |
Endpoint utama. Semua chat dan kemampuan berjalan lewat sini. |
POST /api/upload-image |
Unggah gambar/file, dibalas URL. Opsional, untuk lampiran dari perangkat. |
POST /api/feedback |
Kirim umpan balik pengguna. Body bebas. |
Body minimal
Hanya dua field yang wajib: model dan contents.
{
"model": "vicurva-pro-3.7",
"contents": [
{ "role": "user", "parts": [{ "text": "Halo, apa kabar?" }] }
]
}
Contoh curl lengkap
curl -X POST https://vicurva.vercel.app/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: kunci-akses-kamu" \
-d '{
"model": "vicurva-pro-3.7",
"contents": [
{ "role": "user", "parts": [{ "text": "Jelaskan apa itu internet" }] }
]
}'
04Model
Ada tiga pilihan model. Untuk mengganti, cukup ubah nilai field model di body.
| Nama model | Cocok untuk |
|---|---|
vicurva-pro-3.7 |
Obrolan sehari-hari, tanya jawab, penalaran mendalam. Default — pilih ini kalau bingung. |
vicurva-go-2.0 |
Jawaban cepat dan hemat token. Cocok untuk pertanyaan ringan. |
vicurva-code-1.0 |
Khusus pemrograman, debugging, dan desain antarmuka. |
Cara ganti model
Hanya satu baris yang berubah — sisanya persis sama:
curl -X POST https://vicurva.vercel.app/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: kunci-akses-kamu" \
-d '{
"model": "vicurva-code-1.0",
"contents": [
{ "role": "user", "parts": [{ "text": "Buatkan fungsi Python untuk cek bilangan prima" }] }
]
}'
400 Invalid Model Identifier.
05Format Pesan
Field contents berisi daftar pesan, bukan teks mentah.
Setiap pesan punya dua bagian: role (siapa yang bicara) dan
parts (isi pesannya).
| Field | Isi |
|---|---|
role |
"user" untuk pesan dari kamu, "model" untuk balasan Vicurva sebelumnya. |
parts |
Daftar potongan isi pesan. Bisa berisi teks saja, atau teks + lampiran dalam satu pesan. |
Kenapa parts berupa daftar?
Karena satu pesan bisa memuat lebih dari satu hal sekaligus. Contoh paling sering:
kamu kirim teks dan gambar dalam satu pesan. Keduanya masuk ke
parts yang sama — bukan dua pesan terpisah.
Percakapan bertingkat
Untuk melanjutkan percakapan, kirim ulang seluruh riwayat. Vicurva memakai
riwayat itu sebagai konteks. Balasan model sebelumnya disimpan dengan
role: "model".
curl -X POST https://vicurva.vercel.app/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: kunci-akses-kamu" \
-d '{
"model": "vicurva-pro-3.7",
"contents": [
{ "role": "user", "parts": [{ "text": "Halo" }] },
{ "role": "model", "parts": [{ "text": "Halo! Ada yang bisa dibantu?" }] },
{ "role": "user", "parts": [{ "text": "Apa itu internet?" }] }
]
}'
06Lampiran
Kamu bisa menyertakan gambar, video, audio, PDF, atau dokumen apa pun bersama
pesan teks. File harus sudah punya URL publik (bisa diakses
dari internet), lalu URL-nya dimasukkan lewat field file_url.
Dua langkah singkat
- Dapatkan URL file. Kalau file masih di komputer, unggah dulu ke
POST /api/upload-image. - Tempel URL-nya di
file_url, digabung bersama teks dipartsyang sama.
Contoh lengkap
curl -X POST https://vicurva.vercel.app/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: kunci-akses-kamu" \
-d '{
"model": "vicurva-pro-3.7",
"contents": [
{
"role": "user",
"parts": [
{ "text": "Tolong jelaskan isi gambar ini" },
{ "file_url": "https://iili.io/abcdefg.jpg" }
]
}
]
}'
Kalau ingin upload dulu
curl -X POST https://vicurva.vercel.app/api/upload-image \
-H "X-API-Key: kunci-akses-kamu" \
-F "image=@foto.jpg"
Balasannya berisi url yang siap dipakai di file_url.
| Batas | Nilai |
|---|---|
| Ukuran per file | 20 MB |
| Jumlah per pesan | 10 lampiran |
| Tipe didukung | Gambar (jpg, png, webp), video (mp4), audio (mp3, wav), PDF, teks, dokumen |
07Kemampuan
Vicurva menyediakan kemampuan berikut. Selain daftar ini, tidak ada fitur atau kemampuan lain yang dicantumkan dalam dokumentasi.
08Membaca Respons
{
"status": "success",
"code": 200,
"model": "vicurva-pro-3.7",
"result": "Internet adalah jaringan komputer global yang ...",
"sumber": [],
"media": null,
"saran": [
"Apa itu IP address?",
"Bagaimana cara kerja DNS?",
"Apa bedanya internet dan WiFi?"
],
"usage": { "input_tokens": 42, "output_tokens": 210, "total_tokens": 252 },
"latency_ms": 1834.21,
"date": "Senin, 01 Januari 2026 - 10:00:00 WIB"
}
| Field | Isi |
|---|---|
result | Jawaban utama — ini yang ditampilkan ke pengguna. |
sumber | Daftar sumber (kalau ada). Tiap item punya title, url, logo. |
media | Metadata media (audio, video, gambar, website) kalau permintaannya multimedia. |
saran | 2–3 pertanyaan lanjutan. Boleh ditampilkan sebagai tombol agar pengguna tinggal klik. |
usage | Jumlah token yang terpakai. |
chat_title | Judul percakapan — hanya dikirim di pesan pertama, cocok untuk nama room/chat. |
09Batas & Error
Rate limit
Maksimal 5 request per detik per API key. Lewat dari itu akan kena 429.
Kode error
| Kode | Arti | Solusi |
|---|---|---|
400 | Body request tidak valid | Cek format JSON dan field wajib (model, contents). |
401 | API key tidak valid | Pastikan header X-API-Key terisi dan benar. |
404 | Endpoint salah | Cek URL dan method (harus POST). |
422 | Lampiran gagal | Cek ukuran file (maks 20 MB) dan pastikan URL bisa diakses. |
429 | Rate limit | Tunggu sebentar, kurangi frekuensi request. |
500 | Error server | Coba lagi. Kalau terus muncul, hubungi admin server. |
10Pertanyaan Umum
Apakah API ini stabil?
Apakah aman dipakai untuk aplikasi production?
Berapa lama waktu respons rata-rata?
latency_ms pada setiap balasan.