API

Kontak

Endpoint untuk membaca dan membuat kontak di workspace whatsGo.

List Kontak

Mengembalikan daftar kontak dalam workspace. Mendukung pagination dan pencarian berdasarkan nama atau nomor telepon.

Endpoint

GET {base_url}/contact/list

Query Parameter

Parameter Tipe Wajib Deskripsi
page integer Tidak Nomor halaman. Default: 1
per_page integer Tidak Jumlah item per halaman. Default: 20, maks: 100
search string Tidak Kata kunci pencarian. Mencocokkan nama atau nomor telepon.

Contoh Request

curl -X GET "https://whats.sahabatmobile.com/external-api/contact/list?page=1&per_page=20&search=joko" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Contoh Response

{
  "success": true,
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 1,
        "phone": "6281234567890",
        "name": "Joko Susilo",
        "email": "joko@example.com",
        "tags": ["leads", "vip"],
        "custom_fields": {
          "company": "PT Maju Jaya",
          "city": "Jakarta"
        },
        "created_at": "2025-06-01T08:30:00.000000Z",
        "updated_at": "2025-06-15T10:45:00.000000Z"
      }
    ],
    "first_page_url": "https://whats.sahabatmobile.com/external-api/contact/list?page=1",
    "from": 1,
    "last_page": 5,
    "last_page_url": "https://whats.sahabatmobile.com/external-api/contact/list?page=5",
    "next_page_url": "https://whats.sahabatmobile.com/external-api/contact/list?page=2",
    "path": "https://whats.sahabatmobile.com/external-api/contact/list",
    "per_page": 20,
    "prev_page_url": null,
    "to": 20,
    "total": 100
  }
}

Field Response

Field Tipe Deskripsi
id integer ID unik kontak.
phone string Nomor telepon internasional tanpa tanda plus (e.g. 6281234567890).
name string Nama kontak.
email string|null Alamat email kontak.
tags array Daftar label/tag yang terkait dengan kontak.
custom_fields object Field kustom berbentuk key-value pair.
created_at string Timestamp pembuatan kontak (ISO 8601).
updated_at string Timestamp pembaruan terakhir kontak (ISO 8601).

Buat Kontak

Membuat kontak baru di workspace whatsGo.

Endpoint

POST {base_url}/contact/store

Request Body

Field Tipe Wajib Deskripsi
phone string Ya Nomor telepon internasional tanpa tanda plus (e.g. 6281234567890).
name string Tidak Nama kontak.
email string Tidak Alamat email kontak.
tags array Tidak Daftar label/tag untuk kontak (e.g. ["leads", "vip"]).
custom_fields object Tidak Field kustom berbentuk key-value pair (e.g. {"company": "PT Maju"}).

Contoh Request

curl -X POST "https://whats.sahabatmobile.com/external-api/contact/store" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "6281234567890",
    "name": "Joko Susilo",
    "email": "joko@example.com",
    "tags": ["leads", "vip"],
    "custom_fields": {
      "company": "PT Maju Jaya",
      "city": "Jakarta"
    }
  }'

Contoh Response

{
  "success": true,
  "message": "Kontak berhasil dibuat.",
  "data": {
    "id": 1,
    "phone": "6281234567890",
    "name": "Joko Susilo",
    "email": "joko@example.com",
    "tags": ["leads", "vip"],
    "custom_fields": {
      "company": "PT Maju Jaya",
      "city": "Jakarta"
    },
    "created_at": "2025-06-01T08:30:00.000000Z",
    "updated_at": "2025-06-01T08:30:00.000000Z"
  }
}

Error

HTTP Code Kode Error Deskripsi
422 validation_error Field phone wajib diisi atau format tidak valid.
409 duplicate_phone Nomor telepon sudah terdaftar di workspace.
401 unauthorized Token API tidak valid atau belum disediakan.

Update Kontak

Memperbarui data kontak berdasarkan ID.

Endpoint

POST {base_url}/contact/update/{id}

Path Parameter

Parameter Tipe Deskripsi
id integer ID kontak yang akan diperbarui.

Request Body

Sama dengan request body Buat Kontak. Semua field bersifat opsional, hanya field yang dikirim akan diperbarui.

Contoh Request

curl -X POST "https://whats.sahabatmobile.com/external-api/contact/update/1" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Joko Susilo (Updated)",
    "tags": ["leads", "vip", "priority"]
  }'

Contoh Response

{
  "success": true,
  "message": "Kontak berhasil diperbarui.",
  "data": {
    "id": 1,
    "phone": "6281234567890",
    "name": "Joko Susilo (Updated)",
    "email": "joko@example.com",
    "tags": ["leads", "vip", "priority"],
    "custom_fields": {
      "company": "PT Maju Jaya",
      "city": "Jakarta"
    },
    "created_at": "2025-06-01T08:30:00.000000Z",
    "updated_at": "2025-07-16T14:00:00.000000Z"
  }
}

Hapus Kontak

Menghapus kontak berdasarkan ID secara permanen.

Endpoint

DELETE {base_url}/contact/delete/{id}

Path Parameter

Parameter Tipe Deskripsi
id integer ID kontak yang akan dihapus.

Contoh Request

curl -X DELETE "https://whats.sahabatmobile.com/external-api/contact/delete/1" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Accept: application/json"

Contoh Response

{
  "success": true,
  "message": "Kontak berhasil dihapus."
}
Perhatian

Penghapusan kontak bersifat permanen dan tidak dapat dibatalkan. Semua riwayat pesan terkait kontak tidak akan terpengaruh.

Catatan tentang Tag

Tag adalah label yang digunakan untuk mengelompokkan kontak. Berikut beberapa hal penting terkait tag:

Custom Fields

Custom fields memungkinkan Anda menyimpan data tambahan pada kontak dalam bentuk key-value pair.

Cara Kerja

Contoh Penggunaan

{
  "phone": "6281234567890",
  "name": "Joko Susilo",
  "custom_fields": {
    "company": "PT Maju Jaya",
    "job_title": "Director",
    "city": "Jakarta",
    "lead_score": 85
  }
}
Catatan

Custom fields tidak memiliki skema yang didefinisikan sebelumnya. Anda bebas menambahkan key-value pair sesuai kebutuhan. Semua custom fields dari request sebelumnya akan ditimpa — kirimkan ulang semua field yang ingin dipertahankan saat melakukan update.

Format di Response

Custom fields akan dikembalikan sebagai objek JSON. Jika kontak tidak memiliki custom fields, field ini akan bernilai {} (objek kosong).

{
  "id": 1,
  "phone": "6281234567890",
  "name": "Joko Susilo",
  "custom_fields": {
    "company": "PT Maju Jaya",
    "job_title": "Director",
    "city": "Jakarta",
    "lead_score": 85
  }
}