Bangun integrasi dengan Neo AI
REST API untuk menghubungkan aplikasi, CRM, atau sistem kasir Anda dengan layanan Neo AI: membuat teks dengan AI dan membaca data layanan yang Anda pakai, langsung dari sistem Anda.
https://api.neo.ai.id/api/open/v1Mulai cepat
- Pilih paket yang mencakup API. Akses API tersedia di paket tertentu (lihat Paket, batas & kuota).
- Buat API Key di menu Developer API pada member area. Pilih scope seperlunya, lalu salin API Key; API Key hanya ditampilkan sekali.
- Kirim permintaan pertama ke
/accountdengan headerAuthorization. Respons 200 berarti integrasi Anda siap.
Simpan API Key di server (variabel lingkungan atau secret manager). Jangan menaruh API Key di aplikasi mobile, JavaScript browser, atau repositori kode.
curl "https://api.neo.ai.id/api/open/v1/account" \
-H "Authorization: Bearer neo_live_xxxxxxxxxx_xxxxxxxx…"Autentikasi
Setiap permintaan wajib membawa API Key pada header Authorization dengan skema Bearer. API Key berbentuk neo_live_ diikuti 10 karakter penanda dan 40 karakter rahasia.
- API Key yang salah, dicabut, atau kedaluwarsa ditolak dengan
401 authentication_error. - Bila paket tidak lagi mencakup API, API Key ditolak dengan
403 permission_errorsampai paket diaktifkan kembali. - Neo AI hanya menyimpan sidik jari (hash) API Key. Bila API Key hilang, cabut lalu buat yang baru.
- Semua permintaan harus memakai HTTPS di lingkungan produksi.
Authorization: Bearer neo_live_ab12cd34ef_<secret-40-chars>
Accept: application/jsonScope & izin
Batasi setiap API Key hanya pada izin yang dibutuhkan integrasinya. Permintaan ke endpoint di luar scope API Key ditolak dengan 403.
| Scope | Memberi akses ke |
|---|---|
account:read | Membaca profil akun, paket, saldo Neo Token, dan riwayat pemakaian. |
ai:generate | Membuat teks dengan AI. Memotong Neo Token. |
chat:read | Membaca daftar bot Neo Chat. |
chat:reply | Meminta balasan bot Neo Chat untuk percakapan dari sistem Anda. Memotong Neo Token. |
forms:read | Membaca formulir Neo Form beserta jawabannya. |
legal:read | Membaca dokumen Neo Legal beserta status tanda tangan setiap pihak. |
sites:read | Membaca daftar website Neo Builder. |
slides:read | Membaca daftar presentasi Neo Slides. |
Paket, batas & kuota
Akses API mengikuti paket aktif. Setiap paket menentukan batas permintaan per menit, kuota bulanan, dan jumlah API Key aktif. Kuota direset setiap awal bulan.
| Paket | Per menit | Per bulan | API Key |
|---|---|---|---|
| Neo Token Pro | 50 | 1.500 | 1 |
| Neo Token Bisnis | 100 | Tanpa batas | 3 |
Setiap respons membawa header berikut agar aplikasi Anda bisa menyesuaikan laju:
X-RateLimit-Limit&X-RateLimit-Remaining: batas & sisa permintaan menit ini.X-Quota-Remaining: sisa kuota bulan ini (bila paket tidak tanpa batas).Retry-After: detik tunggu saat menerima429.X-Request-Id: penanda unik permintaan untuk keperluan support.
HTTP/1.1 200 OK
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-Quota-Remaining: 48716
X-Request-Id: req_k3v9x2m1q8w7z5p4a1b2Galat
Galat selalu berbentuk objek error dengan type yang stabil untuk dicek program dan message yang bisa ditampilkan ke pengguna. Pesan internal server maupun penyedia AI tidak pernah diteruskan.
| Status | Type | Arti |
|---|---|---|
| 400 | invalid_request_error | Format permintaan salah. |
| 401 | authentication_error | API Key tidak ada, salah, dicabut, atau kedaluwarsa. |
| 402 | insufficient_tokens | Saldo Neo Token tidak cukup. Lakukan top-up lalu ulangi. |
| 403 | permission_error | Paket tidak mencakup API, atau API Key tidak punya scope yang dibutuhkan. |
| 404 | not_found_error | Endpoint atau sumber daya tidak ditemukan (atau bukan milik akun Anda). |
| 422 | invalid_request_error | Parameter tidak valid. Detail per kolom ada di error.fields. |
| 429 | rate_limit_error | Melebihi batas per menit. Tunggu sesuai header Retry-After. |
| 429 | quota_exceeded | Kuota permintaan bulanan paket sudah habis. |
| 500 | api_error | Kesalahan di server Neo AI. Aman untuk diulang; sertakan request_id saat menghubungi support. |
| 503 | service_unavailable | API sedang pemeliharaan. Coba lagi beberapa saat lagi. |
{
"error": {
"type": "insufficient_tokens",
"message": "Saldo Neo Token tidak cukup untuk permintaan ini.",
"required": 2,
"balance": 0,
"request_id": "req_k3v9x2m1q8w7z5p4a1b2"
}
}Paginasi
Endpoint daftar mengembalikan data berupa array dan meta berisi posisi halaman. Gunakan parameter page dan per_page (maks. 100), lalu lanjutkan selama has_more bernilai true.
{
"data": [
"…"
],
"meta": {
"page": 1,
"per_page": 25,
"total": 128,
"has_more": true
}
}Neo Token & biaya
Endpoint baca tidak memotong token; yang dihitung hanya kuota permintaan. Endpoint AI (/ai/generate dan balasan bot) memotong Neo Token dari saldo yang sama dengan aplikasi, dihitung dari panjang masukan dan keluaran. Jumlah token yang dipotong selalu dikembalikan di respons (neo_tokens_charged), dan riwayatnya tersedia di Riwayat pemakaian token.
Akun
Ambil akun
/accountProfil akun, paket aktif, saldo Neo Token, dan pemakaian kuota API bulan ini. Cocok untuk uji koneksi pertama.
curl "https://api.neo.ai.id/api/open/v1/account" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": {
"id": 128,
"name": "Rina Wulandari",
"email": "rina@tokorotisenja.com",
"company_name": "Toko Roti Senja",
"plans": [
{
"name": "Neo Token Bisnis",
"products": [
"builder",
"slides",
"forms"
],
"ends_at": "2026-12-31T23:59:59+07:00"
}
],
"tokens": {
"balance": 18250,
"plan_balance": 15000,
"topup_balance": 3250
},
"api": {
"requests_month": 50000,
"requests_used": 1284,
"rate_limit_per_minute": 120
}
}
}Riwayat pemakaian token
/usageMutasi Neo Token (pemakaian, jatah bulanan, top-up), terbaru lebih dulu.
Parameter
fromdatequeryopsionalTanggal awal (YYYY-MM-DD).
todatequeryopsionalTanggal akhir (YYYY-MM-DD), inklusif.
per_pageintegerqueryopsional1–100, bawaan 25.
pageintegerqueryopsionalNomor halaman, mulai dari 1.
curl "https://api.neo.ai.id/api/open/v1/usage" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 90211,
"type": "usage",
"amount": -14,
"balance_after": 18250,
"description": "Neo AI API — /ai/generate",
"created_at": "2026-10-11T09:24:51+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}AI
Buat teks dengan AI
/ai/generateMembuat teks dari prompt atau percakapan: deskripsi produk, balasan email, ringkasan, ide konten, dan lainnya. Diproses sepenuhnya oleh server Neo AI.
Parameter
promptstringbodyopsionalInstruksi atau pertanyaan (maks. 20.000 karakter). Wajib bila messages tidak dikirim.
messagesarraybodyopsionalPercakapan multi-giliran: [{ role: "user" | "assistant", content }]. Harus diawali dan diakhiri peran user.
systemstringbodyopsionalInstruksi tambahan untuk gaya, peran, atau format jawaban.
max_tokensintegerbodyopsionalPanjang maksimum jawaban, 16–4.000. Bawaan 1.024.
Biaya dihitung dari panjang masukan dan keluaran, sesuai tarif "Generasi teks lewat API" di halaman Token & pemakaian.
curl -X POST "https://api.neo.ai.id/api/open/v1/ai/generate" \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Tulis 3 deskripsi singkat untuk roti sourdough keju, nada hangat dan menggugah selera.",
"system": "Jawab dalam bahasa Indonesia, maksimal 40 kata per deskripsi.",
"max_tokens": 400
}'{
"data": {
"id": "gen_k3v9x2m1q8w7z5p4",
"text": "1. Sourdough keju dengan kulit renyah dan bagian dalam lembut…",
"usage": {
"input_tokens": 64,
"output_tokens": 182,
"neo_tokens_charged": 3
}
}
}Neo Chat
Daftar bot
/chat/botsSemua bot Neo Chat milik akun.
Parameter
per_pageintegerqueryopsional1–100, bawaan 25.
pageintegerqueryopsionalNomor halaman, mulai dari 1.
curl "https://api.neo.ai.id/api/open/v1/chat/bots" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 12,
"name": "Senja Bot",
"business_name": "Toko Roti Senja",
"language": "id",
"ai_enabled": true,
"created_at": "2026-09-02T10:11:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Balasan bot
/chat/bots/{bot}/replyMendapatkan jawaban bot (berdasarkan instruksi & knowledge base bot) untuk percakapan dari aplikasi Anda sendiri, misalnya aplikasi kasir atau CRM. Riwayat percakapan dikirim oleh pemanggil.
Parameter
botintegerpathwajibID bot dari Daftar bot.
messagesarraybodywajibMaks. 30 pesan [{ role, content }], diawali dan diakhiri pesan user.
handoff bernilai true bila bot menilai pelanggan perlu dilayani manusia (sesuai pengaturan bot).
curl -X POST "https://api.neo.ai.id/api/open/v1/chat/bots/12/reply" \
-H "Authorization: Bearer $NEO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "user",
"content": "Kue ulang tahun 20 cm bisa dipesan untuk besok?"
}
]
}'{
"data": {
"reply": "Bisa, Kak! Kue 20 cm tersedia rasa coklat & keju mulai Rp185.000. Mau diantar atau ambil di toko?",
"handoff": false,
"handoff_reason": null,
"neo_tokens_charged": 2
}
}Neo Form
Daftar formulir
/formsFormulir Neo Form milik akun beserta jumlah jawaban.
Parameter
per_pageintegerqueryopsional1–100, bawaan 25.
pageintegerqueryopsionalNomor halaman, mulai dari 1.
curl "https://api.neo.ai.id/api/open/v1/forms" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 31,
"title": "Pendaftaran Workshop Baking",
"status": "published",
"responses_count": 128,
"url": "https://app.neoai.id/f/workshop-baking",
"published_at": "2026-10-01T08:00:00+07:00",
"created_at": "2026-09-28T13:40:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Jawaban formulir
/forms/{form}/responsesJawaban yang masuk ke sebuah formulir, terbaru lebih dulu. Pakai since untuk sinkronisasi berkala ke sistem Anda.
Parameter
formintegerpathwajibID formulir.
sincedatetimequeryopsionalHanya jawaban sejak waktu ini (ISO 8601).
per_pageintegerqueryopsional1–100, bawaan 25.
curl "https://api.neo.ai.id/api/open/v1/forms/31/responses" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 5521,
"number": 128,
"created_at": "2026-10-11T08:12:09+07:00",
"answers": [
{
"question_id": "q1",
"question": "Nama lengkap",
"value": "Dewi Lestari"
},
{
"question_id": "q2",
"question": "Pilih sesi",
"value": "Siang"
}
]
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Neo Legal
Daftar dokumen
/legal/documentsDokumen Neo Legal milik akun beserta ringkasan proses tanda tangan. Filter status untuk memantau dokumen yang sedang ditandatangani.
Parameter
statusstringqueryopsionaldraft, final, signing (sedang ditandatangani), atau signed (selesai).
per_pageintegerqueryopsional1–100, bawaan 25.
pageintegerqueryopsionalNomor halaman, mulai dari 1.
curl "https://api.neo.ai.id/api/open/v1/legal/documents" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 58,
"title": "Perjanjian Kerja Sama Distribusi",
"number": "PKS/RS/X/2026/014",
"category": "bisnis",
"status": "signing",
"signers": {
"total": 2,
"signed": 1
},
"sent_at": "2026-10-10T14:02:00+07:00",
"completed_at": null,
"updated_at": "2026-10-11T09:15:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Detail & status tanda tangan
/legal/documents/{document}Detail satu dokumen dan status setiap penanda tangan (menunggu, dilihat, ditandatangani, menolak), plus tautan verifikasi keaslian dokumen yang sudah selesai.
Parameter
documentintegerpathwajibID dokumen dari Daftar dokumen.
verification_url terisi setelah semua pihak menandatangani; bagikan ke pihak ketiga untuk memastikan PDF belum diubah.
curl "https://api.neo.ai.id/api/open/v1/legal/documents/58" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": {
"id": 58,
"title": "Perjanjian Kerja Sama Distribusi",
"number": "PKS/RS/X/2026/014",
"category": "bisnis",
"status": "signing",
"language": "id",
"signers": [
{
"role": "Pihak Pertama",
"name": "Rina Wulandari",
"organization": "Toko Roti Senja",
"status": "signed",
"viewed_at": "2026-10-10T14:05:00+07:00",
"signed_at": "2026-10-10T14:07:12+07:00"
},
{
"role": "Pihak Kedua",
"name": "Budi Santoso",
"organization": "CV Sumber Rejeki",
"status": "pending",
"viewed_at": null,
"signed_at": null
}
],
"verification_url": null,
"sent_at": "2026-10-10T14:02:00+07:00",
"completed_at": null,
"created_at": "2026-10-09T10:00:00+07:00",
"updated_at": "2026-10-11T09:15:00+07:00"
}
}Neo Builder
Daftar website
/sitesWebsite Neo Builder milik akun beserta alamat publiknya.
Parameter
per_pageintegerqueryopsional1–100, bawaan 25.
curl "https://api.neo.ai.id/api/open/v1/sites" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 7,
"name": "Toko Roti Senja",
"status": "published",
"url": "https://tokorotisenja.com",
"published_at": "2026-09-20T10:00:00+07:00",
"updated_at": "2026-10-10T16:30:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Neo Slides
Daftar presentasi
/slidesPresentasi Neo Slides milik akun, termasuk tautan berbagi bila dipublikasikan.
Parameter
per_pageintegerqueryopsional1–100, bawaan 25.
curl "https://api.neo.ai.id/api/open/v1/slides" \
-H "Authorization: Bearer $NEO_API_KEY"{
"data": [
{
"id": 44,
"title": "Strategi Pemasaran Q4",
"status": "ready",
"slides": 8,
"share_url": "https://api.neoai.id/s/9f2c…",
"updated_at": "2026-10-09T19:05:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 25,
"total": 1,
"has_more": false
}
}Praktik keamanan
Riwayat perubahan
- Okt 2026v1 dirilis
Akun & pemakaian, generasi teks AI, serta endpoint data untuk layanan Neo AI yang aktif.
Perubahan yang tidak kompatibel akan dirilis sebagai versi baru (mis. /v2) dengan pemberitahuan sebelumnya.

API Docsv1