Referensi Kode Error

Memahami response error dari API Aksita.ai. Semua error mengikuti format yang konsisten dengan kode status HTTP yang sesuai.

Format Response Error

Ketika error terjadi, API mengembalikan response JSON dengan status: false dan field reason yang deskriptif.

{
  "status": false,
  "reason": "Pesan error deskriptif"
}

Kode Status HTTP

200

OK

Request berhasil. Response berisi data yang diminta.

Contoh: Pembuatan sesi berhasil, pesan terkirim
400

Bad Request

Parameter request tidak valid atau JSON salah format.

Penyebab:
  • Field wajib hilang (session_id, message)
  • Format JSON tidak valid
  • Konten pesan kosong
  • Format session ID tidak valid
401

Unauthorized

Autentikasi gagal. API key tidak valid atau hilang.

Penyebab:
  • Header X-API-Key hilang
  • API key tidak valid
  • API key telah dicabut
  • API key tidak cocok dengan agent
402

Payment Required

Kredit tidak cukup atau paket expired.

Penyebab:
  • Kredit tidak cukup untuk memproses request
  • Paket telah expired
  • Saldo kredit terlalu rendah
Solusi: Isi ulang kredit atau perpanjang paket langganan Anda.
403

Forbidden

Akses ke resource ditolak.

Penyebab:
  • Agent dinonaktifkan atau dihapus
  • Akses agent privat ditolak
  • Akses resource tidak diizinkan
404

Not Found

Resource yang diminta tidak ada.

Penyebab:
  • Session ID tidak ditemukan
  • Agent tidak ditemukan
  • URL endpoint tidak valid
500

Internal Server Error

Error server yang tidak terduga. Tim kami diberitahu secara otomatis.

Tindakan: Coba lagi request setelah jeda sebentar. Jika masalah berlanjut, hubungi support dengan timestamp error.

Praktik Terbaik Penanganan Error

Implementasikan Logika Retry

Untuk error 500, implementasikan strategi retry exponential backoff. Mulai dengan delay 1 detik, kemudian 2d, 4d, 8d, dll.

Validasi Sebelum Mengirim

Validasi field wajib dan format data di sisi Anda sebelum melakukan API call untuk menghindari error 400.

Pantau Sisa Kredit

Setiap response API menyertakan field <code class="text-cyan-400">remaining_credits</code>. Gunakan ini untuk melacak saldo kredit secara real-time dan implementasikan alert kredit rendah.

Catat Detail Error

Catat response error lengkap termasuk timestamp untuk debugging. Ini membantu saat menghubungi support.

Contoh: Penanganan Error di JavaScript

async function sendMessage(sessionId, message) {
  try {
    const response = await fetch('https://api.aksita.ai/api/chat', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'X-API-Key': 'YOUR_API_KEY'
      },
      body: JSON.stringify({ session_id: sessionId, message })
    });

    const data = await response.json();

    if (!response.ok) {
      // Handle specific error codes
      switch (response.status) {
        case 400:
          console.error('Invalid request:', data.reason);
          break;
        case 401:
          console.error('Authentication failed:', data.reason);
          break;
        case 402:
          console.error('Payment required:', data.reason);
          // Notify user to top up credits or renew plan
          alert('Insufficient credits. Please top up to continue.');
          break;
        case 403:
          console.error('Access forbidden:', data.reason);
          break;
        case 500:
          console.error('Server error:', data.reason);
          // Retry after delay
          await sleep(5000);
          return sendMessage(sessionId, message);
        default:
          console.error('Unexpected error:', data.reason);
      }
      throw new Error(data.reason);
    }

    // Success response includes remaining_credits
    // {
    //   "status": true,
    //   "data": {
    //     "response": ["AI response text"],
    //     "credits": 2,
    //     "remaining_credits": 1234,
    //     "message_id": "12345",
    //     "conversation_id": "session-id"
    //   }
    // }
    
    if (data.status && data.data) {
      const remainingCredits = data.data.remaining_credits;
      console.log('Remaining credits:', remainingCredits);
      
      // Update UI with remaining credits
      updateCreditsDisplay(remainingCredits);
      
      // Alert if credits are low
      if (remainingCredits < 100) {
        console.warn('Low credits warning!');
      }
      
      return data.data;
    }

    return data;
  } catch (error) {
    console.error('Network error:', error);
    throw error;
  }
}

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

function updateCreditsDisplay(credits) {
  // Update your UI with the remaining credits
  document.getElementById('credits-badge').textContent = credits;
}