@extends('root') @section('title', 'API Documentation') @section('content')
@include('components.breadcrumb', [ 'title' => 'API Documentation', 'links' => [ ['url' => route('dashboard'), 'label' => 'Dashboard'], ['url' => route('documentation.index'), 'label' => 'API Documentation'], ], 'current' => 'API' ])

API Documentation

Dokumentasi lengkap API khusus untuk Client. Endpoint untuk mengirim pesan, mengelola dedicated number, dan billing.

Kembali
API Overview

API ini digunakan oleh Client untuk mengirim pesan WhatsApp, mengelola dedicated number, melihat statistik penggunaan, dan melakukan topup saldo.

  • Base URL: {{ url('/api') }}
  • Format: JSON
  • Authentication: API Key via Header
Fitur API
Messaging
  • Kirim Template Message
  • Kirim Text Message
  • Lihat History Pesan
Dedicated Number
  • Lihat Nomor Tersedia
  • Request Assign Number
  • Request Ganti Nama
Balance
  • Cek Saldo
  • Create Topup
  • Lihat History Transaksi
Settings
  • Regenerate API Key
  • Manage IP Whitelist
  • Lihat Profile
Authentication
menggunakan API Key yang dikirim via HTTP Header.
Header yang Diperlukan
X-Api-Key: Bearer {your_client_api_key}
Content-Type: application/json
Mendapatkan API Key

API Key dapat dilihat di Panel → Settings → API Settings

Contoh Request
curl -X GET {{ url('/api/v1/balance') }} \
  -H "X-Api-Key: Bearer your_api_key_here" \
  -H "Content-Type: application/json"
Penting!
  • Jangan pernah share API Key Anda
  • Gunakan HTTPS untuk semua request
  • API Key dapat di-regenerate kapan saja
Send Message API
POST /api/v1/send-template

Deskripsi: Kirim pesan WhatsApp menggunakan template yang sudah APPROVED

Request Body:
{
  "name_template": "welcome_message",
  "phone_number": "628111223344",
  "language_code": "id",
  "body_params": ["Budi", "INV-123"],
  "header_params": ["Promo Akhir Tahun"],
  "header_media_url": "https://example.com/image.jpg",
  "button_params": {
    "0": ["tracking123"]
  }
}
Parameter:
Field Type Required Deskripsi
name_template string Ya Nama template yang sudah APPROVED
phone_number string Ya Nomor telepon internasional (format: 628xxx)
language_code string Tidak Kode bahasa template (id, en, dll). Untuk filter jika ada template dengan nama sama tapi beda bahasa.
body_params array Tidak Array string untuk placeholder body template. Contoh: ["Budi", "INV-123"]
header_params array Tidak Array string untuk placeholder header text. Contoh: ["Promo 50%"]
header_media_url string (URL) Tidak URL publik untuk header media (gambar/video/dokumen). Gunakan ini jika header template adalah media.
button_params object Tidak Object dengan key = index button, value = array parameter. Contoh: {"0": ["tracking123"]}
Response Success (200):
{
  "status": "success",
  "message_id": "uuid-xxx-xxx",
  "price": 350,
  "template": "welcome_message",
  "type": "Marketing"
}
Error Responses:

{
  "status": "error",
  "message": "Template tidak ditemukan atau belum approved"
}

{
  "status": "error",
  "message": "Template tidak tersedia untuk client ini"
}

{
  "status": "error",
  "message": "Error message from Meta API",
  "error_code": "131030",
  "raw_error": "(#131030) ..."
}
Contoh Script PHP:
<?php
$apiKey = 'YOUR_API_KEY';
$url = '{{ url('/api/v1/send-template') }}';

$data = [
    'name_template' => 'welcome_message',
    'phone_number' => '628111223344',
    'body_params' => ['Budi', 'INV-123'],
];

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($data),
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-API-KEY:Bearer ' . $apiKey,
    ],
]);

$response = curl_exec($ch);
$result = json_decode($response, true);

if ($result['status'] === 'success') {
    echo "Message ID: " . $result['message_id'];
} else {
    echo "Error: " . $result['message'];
}
Dedicated Number API
GET /api/client/dedicated-numbers/available

Deskripsi: Melihat daftar nomor dedicated yang tersedia untuk di-request

Response:
{
  "status": true,
  "message": "Available numbers retrieved",
  "data": [
    {
      "id": 1,
      "phone_number": "628123456789",
      "account_name": "Business Account 1",
      "base_price": 500000,
      "margin": 50000,
      "total_price": 550000,
      "formatted_price": "Rp 550.000"
    }
  ]
}
POST /api/client/dedicated-numbers/request

Deskripsi: Request assign nomor dedicated. Saldo dikurangi saat disetujui

Request Body:
{
  "waba_pool_id": 1,
  "label": "Nomor CS Utama"
}
Response Success:
{
  "status": true,
  "message": "Request berhasil dikirim. Menunggu persetujuan admin.",
  "data": {
    "request_id": 15,
    "waba_pool_id": 1,
    "phone_number": "628123456789",
    "status": "pending",
    "total_price": 550000
  }
}
Error - Saldo Tidak Cukup:
{
  "status": false,
  "message": "Saldo tidak mencukupi. Dibutuhkan Rp 550.000",
  "error_code": "INSUFFICIENT_BALANCE"
}
GET /api/client/dedicated-numbers/my-numbers

Deskripsi: Melihat nomor dedicated milik Anda yang sudah aktif

Response:
{
  "status": true,
  "data": [
    {
      "id": 1,
      "waba_pool_id": 5,
      "phone_number": "628123456789",
      "label": "Nomor CS Utama",
      "status": "active",
      "price": 550000,
      "assigned_at": "2025-12-01T10:00:00Z"
    }
  ]
}
Name Change Request API
POST /api/client/name-requests

Deskripsi: Request ganti nama/label nomor dedicated

Request Body:
{
  "dedicated_assign_id": 1,
  "new_name": "Hotline Support 24 Jam"
}
Response Success:
{
  "status": true,
  "message": "Request ganti nama berhasil dikirim. Menunggu persetujuan admin.",
  "data": {
    "id": 5,
    "current_name": "Nomor CS Utama",
    "requested_name": "Hotline Support 24 Jam",
    "status": "pending"
  }
}
GET /api/client/name-requests

Deskripsi: Melihat daftar request ganti nama Anda

DELETE /api/client/name-requests/{id}

Deskripsi: Membatalkan request ganti nama yang masih pending

Balance
GET /api/v1/balance

Deskripsi: Melihat saldo dan informasi akun

Response:
{
  "status": true,
  "data": {
    "balance": 1500000,
    "formatted_balance": "Rp 1.500.000",
    "currency": "IDR",
    "messages_today": 150,
    "messages_this_month": 4500
  }
}
Panduan Integrasi e-Billing
Badge: Integration Guide
Panduan ini khusus untuk Client yang ingin mengintegrasikan notifikasi MeeChat dengan sistem e-Billing.
Langkah-langkah Integrasi
1
Ambil API Key Meechat

Dapatkan kunci akses untuk menghubungkan akun Anda.

  1. Masuk ke aplikasi Meechat.
  2. Buka menu API Settings.
  3. Copy API Key yang tersedia.
2
Masuk ke Menu Data WAGW

Akses pengaturan integrasi di e-Billing.

  1. Masuk ke Dashboard e-Billing.
  2. Navigasi ke menu: Status WAGWData WAGW Pihak Ketiga.
3
Tambah Integrasi Meechat

Konfigurasikan provider Meechat di e-Billing.

  1. Klik tombol Tambah Data.
  2. Pilih Provider: meechat.id.
  3. Paste API Key yang telah disalin sebelumnya.
  4. Klik Simpan.
4
Ambil Nama Template Meechat

Pilih template pesan yang akan digunakan.

  1. Masuk kembali ke menu Templates di aplikasi Meechat.
  2. Salin nama template yang ingin digunakan.
  3. *Penting: Nama template harus sama persis (case-sensitive).
5
Hubungkan Template ke Notifikasi e-Billing

Finalisasi pengaturan notifikasi.

  1. Masuk ke e-Billing menu: Kelola DataData Notifikasi.
  2. Edit notifikasi yang ingin diintegrasikan.
  3. Paste nama template ke field nama_template.
  4. Klik Simpan.
Video Panduan
Catatan Penting

  • Rahasia: API Key bersifat rahasia. Jangan berikan kepada pihak yang tidak berkepentingan.
  • Case Sensitive: Nama template harus sama persis besar/kecil hurufnya dengan yang ada di Meechat.
  • Status Aktif: Pastikan integrasi sudah berstatus aktif sebelum melakukan pengujian notifikasi.
Butuh Bantuan?

Jika Anda mengalami kendala saat integrasi, hubungi tim support kami.

Hubungi Support
@endsection