Developer Friendly API

API Integration

Integrasikan Wahero dengan sistem Anda menggunakan REST API yang powerful dan mudah digunakan

Quick Start Guide

Authentication

Semua request harus menyertakan API key di header:

Authorization: Bearer YOUR_API_KEY

Penting: Jangan pernah share API key Anda. Gunakan environment variables untuk production.

Base URL

Endpoint dasar untuk semua API calls:

https://api.wahero.id/v1

Testing: Gunakan sandbox environment di https://sandbox-api.wahero.id/v1

Contoh: Mengirim Pesan

curl -X POST https://api.wahero.id/v1/send-message \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "628123456789",
    "message": "Hello from Wahero API!"
  }'

API Endpoints

POST/api/v1/send-messageMessages

Mengirim pesan WhatsApp ke nomor tujuan

Lihat contoh request & response
REQUEST
{
  "phone": "628123456789",
  "message": "Halo, ini pesan dari API"
}
RESPONSE
{
  "success": true,
  "message_id": "msg_abc123xyz",
  "status": "sent",
  "timestamp": "2025-12-04T10:30:00Z"
}
POST/api/v1/send-broadcastMessages

Mengirim broadcast ke multiple nomor sekaligus

Lihat contoh request & response
REQUEST
{
  "phones": ["628123456789", "628987654321"],
  "message": "Promo spesial hari ini!",
  "delay": 3
}
RESPONSE
{
  "success": true,
  "total_recipients": 2,
  "scheduled_at": "2025-12-04T10:30:00Z",
  "broadcast_id": "brd_xyz789"
}
GET/api/v1/messagesMessages

Mendapatkan daftar pesan (inbox/outbox)

Lihat contoh request & response
REQUEST
GET /api/v1/messages?type=inbox&limit=10&offset=0
RESPONSE
{
  "success": true,
  "data": [
    {
      "message_id": "msg_abc123",
      "from": "628123456789",
      "message": "Halo, saya mau order",
      "timestamp": "2025-12-04T10:30:00Z",
      "is_read": false
    }
  ],
  "total": 45,
  "limit": 10,
  "offset": 0
}
GET/api/v1/message-status/:idMessages

Cek status pengiriman pesan

Lihat contoh request & response
REQUEST
GET /api/v1/message-status/msg_abc123xyz
RESPONSE
{
  "success": true,
  "message_id": "msg_abc123xyz",
  "status": "delivered",
  "sent_at": "2025-12-04T10:30:00Z",
  "delivered_at": "2025-12-04T10:30:05Z",
  "read_at": "2025-12-04T10:35:00Z"
}
POST/api/v1/webhook/registerWebhooks

Register webhook URL untuk menerima incoming messages

Lihat contoh request & response
REQUEST
{
  "url": "https://yourdomain.com/webhook",
  "events": ["message.received", "message.delivered"],
  "secret": "your-secret-key"
}
RESPONSE
{
  "success": true,
  "webhook_id": "whk_xyz789",
  "url": "https://yourdomain.com/webhook",
  "events": ["message.received", "message.delivered"],
  "created_at": "2025-12-04T10:30:00Z"
}
GET/api/v1/contactsContacts

Mendapatkan daftar kontak

Lihat contoh request & response
REQUEST
GET /api/v1/contacts?search=John&limit=20
RESPONSE
{
  "success": true,
  "data": [
    {
      "contact_id": "cnt_abc123",
      "name": "John Doe",
      "phone": "628123456789",
      "last_message_at": "2025-12-04T10:30:00Z"
    }
  ],
  "total": 5
}
GET/api/v1/statisticsAnalytics

Mendapatkan statistik penggunaan

Lihat contoh request & response
REQUEST
GET /api/v1/statistics?start_date=2025-12-01&end_date=2025-12-04
RESPONSE
{
  "success": true,
  "period": {
    "start": "2025-12-01",
    "end": "2025-12-04"
  },
  "stats": {
    "total_messages_sent": 1250,
    "total_messages_received": 890,
    "total_broadcasts": 15,
    "total_contacts": 450
  }
}
POST/api/v1/ai/trainingAI Agent

Upload data training untuk AI Agent

Lihat contoh request & response
REQUEST
{
  "content": "Q: Berapa ongkir Jakarta? A: Ongkir Jakarta Rp 15.000",
  "category": "faq",
  "tags": ["shipping", "jakarta"]
}
RESPONSE
{
  "success": true,
  "training_id": "trn_abc123",
  "status": "processed",
  "created_at": "2025-12-04T10:30:00Z"
}
Rate Limits

Rate Limiting

Untuk menjaga performa server, kami menerapkan rate limiting pada API

60

Requests per Minute

Plan Starter

300

Requests per Minute

Plan Pro

∞

Unlimited

Plan Enterprise

Response Headers

Setiap response menyertakan header untuk monitoring rate limit:

X-RateLimit-Limit: 60X-RateLimit-Remaining: 45X-RateLimit-Reset: 1701706800

Error Handling

Error Response Format

Semua error response menggunakan format standar berikut:

{
  "success": false,
  "error": {
    "code": "INVALID_PHONE_NUMBER",
    "message": "Nomor telepon tidak valid",
    "details": "Format yang benar: 628xxxxxxxxx"
  }
}
400

Bad Request

Request tidak valid atau parameter kurang

401

Unauthorized

API key tidak valid atau tidak ditemukan

403

Forbidden

Akses ditolak, periksa permission API key

404

Not Found

Endpoint atau resource tidak ditemukan

429

Too Many Requests

Rate limit tercapai, tunggu beberapa saat

500

Internal Server Error

Terjadi kesalahan di server kami

Real-time Events

Webhook Events

Terima notifikasi real-time ketika ada event di WhatsApp Anda

message.received

Ketika menerima pesan masuk dari customer

message.sent

Ketika pesan berhasil dikirim

message.delivered

Ketika pesan terkirim ke device customer

message.read

Ketika pesan dibaca oleh customer

connection.status

Status koneksi WhatsApp (connected/disconnected)

Webhook Security

Semua webhook request disertai dengan signature header (X-Wahero-Signature) untuk memastikan request berasal dari Wahero. Verifikasi signature menggunakan secret key Anda.

Platform Integrations

Connect Wahero dengan platform favorit Anda tanpa coding

OrderHero

OrderHero

Productivity

Integrasikan WhatsApp dengan OrderHero untuk notifikasi order otomatis

WordPress

CMS

Plugin untuk integrasi dengan WooCommerce, Contact Form 7, dan Gravity Forms

Chat Widget

Widget

Tambahkan tombol chat WhatsApp di website Anda

Google Sheets

Productivity

Sinkronisasi data leads dan customer ke spreadsheet

n8n

n8n

Automation

Workflow automation platform open-source

Zapier

Automation

Connect Wahero dengan 5000+ aplikasi tanpa coding

Telegram Bot

Messaging

Forward pesan WhatsApp ke Telegram

Shopify

E-Commerce

Notifikasi order dan update tracking otomatis

Calendly

Scheduling

Reminder otomatis untuk appointment