Skip to content

Kirim Typing ​

POST /typing

Endpoint ini dipakai buat kirim presence (apalah itu namanya, wkwk), yaitu indikator "sedang mengetik..." atau "sedang merekam audio..." di chat penerima. Bikin bot kamu kerasa lebih manusiawi, nggak tiba-tiba nyerocos.

Indikatornya tampil selama 5 detik, terus hilang sendiri.

Detail Endpoint ​

  • Base URL: https://api-zawa.azickri.com
  • Header: id, session-id, dan Content-Type: application/json
  • Syarat: sesi harus lagi nyambung (isConnected: true)
HeaderTipeWajibKeterangan
idstringYaid dari Buat Session.
session-idstringYasessionId dari Buat Session.

Request Body ​

KolomTipeWajibKeterangan
phonestringSalah satu*Nomor tujuan format internasional, contohnya 6281234567890.
groupstringSalah satu*ID grup, contohnya [email protected].
typestringTidaktext buat "sedang mengetik..." (bawaan), audio buat "sedang merekam audio...".

* Isi salah satu dari phone atau group. Kalau dua-duanya diisi, yang dipakai group.

Contoh Request ​

bash
curl -X POST "https://api-zawa.azickri.com/typing" \
  -H "id: YOUR_ID" \
  -H "session-id: YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"phone":"6281234567890","type":"text"}'
javascript
import axios from 'axios';

const response = await axios.post(
  'https://api-zawa.azickri.com/typing',
  {
    phone: '6281234567890',
    type: 'text',
  },
  {
    headers: {
      'id': 'YOUR_ID',
      'session-id': 'YOUR_SESSION_ID',
    },
  },
);

console.log(response.data);
javascript
const response = await fetch('https://api-zawa.azickri.com/typing', {
  method: 'POST',
  headers: {
    'id': 'YOUR_ID',
    'session-id': 'YOUR_SESSION_ID',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    phone: '6281234567890',
    type: 'text',
  }),
});

const data = await response.json();
console.log(data);

Response ​

json
{
  "id": "68b3f0a2c1d4e5f6a7b8c9d0"
}
json
// Tujuan nggak diisi
{
  "statusCode": 400,
  "message": "invalid phone or group"
}

// Header kurang
{
  "statusCode": 400,
  "message": "invalid header"
}
json
{
  "statusCode": 404,
  "message": "session not found"
}
json
{
  "statusCode": 500,
  "message": "session not connected"
}
KolomTipeKeterangan
idstringID sesi yang ngirim indikator. Ini bukan ID pesan.

Resep: Balas Kayak Manusia ​

Kombinasiin sama Kirim Pesan biar balasan bot kamu nggak kerasa kayak robot:

javascript
const BASE_URL = 'https://api-zawa.azickri.com';
const headers = {
  'id': 'YOUR_ID',
  'session-id': 'YOUR_SESSION_ID',
  'Content-Type': 'application/json',
};
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

async function replyLikeHuman(phone, text) {
  // 1. Munculin "sedang mengetik..."
  await fetch(`${BASE_URL}/typing`, {
    method: 'POST',
    headers,
    body: JSON.stringify({ phone, type: 'text' }),
  });

  // 2. Pura-pura mikir sebentar (maksimal 5 detik, sesuai durasi indikator)
  await sleep(Math.min(5000, 1000 + text.length * 50));

  // 3. Kirim pesannya
  await fetch(`${BASE_URL}/message`, {
    method: 'POST',
    headers,
    body: JSON.stringify({ phone, type: 'text', text }),
  });
}

await replyLikeHuman('6281234567890', 'Siap, pesanan kamu lagi diproses ya! 🙌');