API Docsv1
Neo AI API v1

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.

Base URLhttps://api.neo.ai.id/api/open/v1
Aman sejak awalAPI Key disimpan sebagai hash, bisa dibatasi scope & masa berlaku. Kredensial penyedia AI tidak pernah keluar dari server Neo AI.
Satu saldoPemakaian AI lewat API memakai Neo Token yang sama dengan aplikasi.
Batas jelasBatas per menit & kuota bulanan mengikuti paket, terlihat di setiap respons.

Mulai cepat

  1. Pilih paket yang mencakup API. Akses API tersedia di paket tertentu (lihat Paket, batas & kuota).
  2. Buat API Key di menu Developer API pada member area. Pilih scope seperlunya, lalu salin API Key; API Key hanya ditampilkan sekali.
  3. Kirim permintaan pertama ke /account dengan header Authorization. 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.

Terminal
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_error sampai 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.
Header
Authorization: Bearer neo_live_ab12cd34ef_<secret-40-chars>
Accept: application/json

Scope & izin

Batasi setiap API Key hanya pada izin yang dibutuhkan integrasinya. Permintaan ke endpoint di luar scope API Key ditolak dengan 403.

ScopeMemberi akses ke
account:readMembaca profil akun, paket, saldo Neo Token, dan riwayat pemakaian.
ai:generateMembuat teks dengan AI. Memotong Neo Token.
chat:readMembaca daftar bot Neo Chat.
chat:replyMeminta balasan bot Neo Chat untuk percakapan dari sistem Anda. Memotong Neo Token.
forms:readMembaca formulir Neo Form beserta jawabannya.
legal:readMembaca dokumen Neo Legal beserta status tanda tangan setiap pihak.
sites:readMembaca daftar website Neo Builder.
slides:readMembaca 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.

PaketPer menitPer bulanAPI Key
Neo Token Pro501.5001
Neo Token Bisnis100Tanpa batas3

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 menerima 429.
  • X-Request-Id: penanda unik permintaan untuk keperluan support.
Lihat & pesan paket
Header respons
HTTP/1.1 200 OK
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 117
X-Quota-Remaining: 48716
X-Request-Id: req_k3v9x2m1q8w7z5p4a1b2

Galat

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.

StatusTypeArti
400invalid_request_errorFormat permintaan salah.
401authentication_errorAPI Key tidak ada, salah, dicabut, atau kedaluwarsa.
402insufficient_tokensSaldo Neo Token tidak cukup. Lakukan top-up lalu ulangi.
403permission_errorPaket tidak mencakup API, atau API Key tidak punya scope yang dibutuhkan.
404not_found_errorEndpoint atau sumber daya tidak ditemukan (atau bukan milik akun Anda).
422invalid_request_errorParameter tidak valid. Detail per kolom ada di error.fields.
429rate_limit_errorMelebihi batas per menit. Tunggu sesuai header Retry-After.
429quota_exceededKuota permintaan bulanan paket sudah habis.
500api_errorKesalahan di server Neo AI. Aman untuk diulang; sertakan request_id saat menghubungi support.
503service_unavailableAPI sedang pemeliharaan. Coba lagi beberapa saat lagi.
402Contoh galat
{
  "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.

Bentuk daftar
{
  "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

GET/account

Profil akun, paket aktif, saldo Neo Token, dan pemakaian kuota API bulan ini. Cocok untuk uji koneksi pertama.

Scope account:readTanpa biaya token
curl "https://api.neo.ai.id/api/open/v1/account" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

GET/usage

Mutasi Neo Token (pemakaian, jatah bulanan, top-up), terbaru lebih dulu.

Scope account:readTanpa biaya token

Parameter

  • fromdatequeryopsional

    Tanggal awal (YYYY-MM-DD).

  • todatequeryopsional

    Tanggal akhir (YYYY-MM-DD), inklusif.

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

  • pageintegerqueryopsional

    Nomor halaman, mulai dari 1.

curl "https://api.neo.ai.id/api/open/v1/usage" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

POST/ai/generate

Membuat teks dari prompt atau percakapan: deskripsi produk, balasan email, ringkasan, ide konten, dan lainnya. Diproses sepenuhnya oleh server Neo AI.

Scope ai:generateMemotong Neo Token

Parameter

  • promptstringbodyopsional

    Instruksi atau pertanyaan (maks. 20.000 karakter). Wajib bila messages tidak dikirim.

  • messagesarraybodyopsional

    Percakapan multi-giliran: [{ role: "user" | "assistant", content }]. Harus diawali dan diakhiri peran user.

  • systemstringbodyopsional

    Instruksi tambahan untuk gaya, peran, atau format jawaban.

  • max_tokensintegerbodyopsional

    Panjang 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
}'
200Respons
{
  "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

GET/chat/bots

Semua bot Neo Chat milik akun.

Scope chat:readTanpa biaya token

Parameter

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

  • pageintegerqueryopsional

    Nomor halaman, mulai dari 1.

curl "https://api.neo.ai.id/api/open/v1/chat/bots" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

POST/chat/bots/{bot}/reply

Mendapatkan jawaban bot (berdasarkan instruksi & knowledge base bot) untuk percakapan dari aplikasi Anda sendiri, misalnya aplikasi kasir atau CRM. Riwayat percakapan dikirim oleh pemanggil.

Scope chat:replyMemotong Neo Token

Parameter

  • botintegerpathwajib

    ID bot dari Daftar bot.

  • messagesarraybodywajib

    Maks. 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?"
    }
  ]
}'
200Respons
{
  "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

GET/forms

Formulir Neo Form milik akun beserta jumlah jawaban.

Scope forms:readTanpa biaya token

Parameter

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

  • pageintegerqueryopsional

    Nomor halaman, mulai dari 1.

curl "https://api.neo.ai.id/api/open/v1/forms" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

GET/forms/{form}/responses

Jawaban yang masuk ke sebuah formulir, terbaru lebih dulu. Pakai since untuk sinkronisasi berkala ke sistem Anda.

Scope forms:readTanpa biaya token

Parameter

  • formintegerpathwajib

    ID formulir.

  • sincedatetimequeryopsional

    Hanya jawaban sejak waktu ini (ISO 8601).

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

curl "https://api.neo.ai.id/api/open/v1/forms/31/responses" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

Neo Builder

Daftar website

GET/sites

Website Neo Builder milik akun beserta alamat publiknya.

Scope sites:readTanpa biaya token

Parameter

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

curl "https://api.neo.ai.id/api/open/v1/sites" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

GET/slides

Presentasi Neo Slides milik akun, termasuk tautan berbagi bila dipublikasikan.

Scope slides:readTanpa biaya token

Parameter

  • per_pageintegerqueryopsional

    1–100, bawaan 25.

curl "https://api.neo.ai.id/api/open/v1/slides" \
  -H "Authorization: Bearer $NEO_API_KEY"
200Respons
{
  "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

Simpan di serverPanggil API dari backend Anda. API Key di browser atau aplikasi mobile bisa dicuri.
Scope minimumSatu API Key per integrasi dengan scope seperlunya.
Rotasi berkalaAtur masa berlaku dan ganti API Key bila ada staf yang keluar.
Cabut bila bocorAPI Key yang dicabut langsung ditolak di semua permintaan berikutnya.

Riwayat perubahan

  • Okt 2026
    v1 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.