Skip to content

Kirim Pesan ​

POST /message

Endpoint andalan Zate. Kirim pesan ke username, user, grup, channel, atau nomor HP, dan udah ngedukung tujuh tipe: teks, gambar, video, audio, dokumen, lokasi, dan kontak. Tiap tipe butuh kolom yang beda, jadi cek tabelnya di bawah ya.

Detail Endpoint ​

  • Base URL: https://api-zate.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
groupstringSalah satu*ID grup, contohnya -1001234567890, atau username grup publik.
channelstringSalah satu*ID channel, contohnya -1001234567890, atau username channel publik. Akun kamu harus boleh posting di sana.
userstringSalah satu*ID user Telegram, contohnya 123456789.
usernamestringSalah satu*Username tujuan: azickri, @azickri, atau t.me/azickri.
phonestringSalah satu*Nomor HP format internasional, contohnya 6281234567890. Cuma jalan kalau privasi orangnya ngizinin.
typestringYaTipe pesan: text, image, video, audio, document, location, atau contact.
textstringUntuk textIsi pesan. Di tipe image, video, dan document, kolom ini jadi caption (opsional).
parseModestringTidakmarkdown atau html buat format teks dan caption. Kosongin buat kirim apa adanya. Lihat Format Teks.
imageobjectUntuk imageLihat objek image.
videoobjectUntuk videoLihat objek video.
audioobjectUntuk audioLihat objek audio.
documentobjectUntuk documentLihat objek document.
locationobjectUntuk locationLihat objek location.
contactobjectUntuk contactLihat objek contact.

* Isi salah satu dari group, channel, user, username, atau phone. Kalau lebih dari satu yang diisi, yang dipakai urutannya group, channel, user, username, lalu phone. Penjelasan lengkapnya ada di Tujuan Pesan.

Objek Media ​

Media dikirim lewat URL. Zate yang download file-nya, jadi URL-nya harus publik dan langsung ke file. Baca juga Kirim Media dari URL.

ObjekKolomTipeWajibKeterangan
imageurlstringYaURL gambar. Dikirim ulang sebagai JPEG, maksimal 2560 piksel.
mimetypestringYaContohnya image/jpeg.
thumbnailstringTidakNggak dipakai buat gambar. Telegram bikin thumbnail sendiri.
videourlstringYaURL video. Paling aman pakai MP4.
mimetypestringYaContohnya video/mp4.
durationnumberYaDurasi video dalam detik, harus lebih dari 0. Kalau durasi asli file-nya kebaca, yang dipakai durasi asli.
thumbnailstringTidakURL gambar thumbnail. Kalau kosong, Zate ngambil frame pertama video.
audiourlstringYaURL audio. Paling aman pakai MP3.
mimetypestringYaContohnya audio/mpeg.
durationnumberYaDurasi audio dalam detik, harus lebih dari 0.
documenturlstringYaURL dokumen.
namestringYaNama file yang tampil di chat, contohnya invoice.pdf. Ekstensinya nentuin jenis file di Telegram.
sizenumberYaUkuran file dalam byte, harus lebih dari 0.
mimetypestringYaContohnya application/pdf.

Audio bukan voice note

Audio dikirim sebagai file audio biasa yang bisa diputar di pemutar musik Telegram, bukan voice note. Audio juga nggak bisa dikasih caption, jadi text diabaikan.

Objek Lokasi dan Kontak ​

ObjekKolomTipeWajibKeterangan
locationlatitudenumberYaKoordinat lintang, nggak boleh 0.
longitudenumberYaKoordinat bujur, nggak boleh 0.
namestringTidakNama tempat, contohnya Monas.
addressstringTidakAlamat tempat.
contactnamestringYaNama kontak yang dibagikan.
phonestringYaNomor kontak, contohnya 6281234567890.

Kalau name atau address diisi, lokasinya dikirim sebagai tempat (venue) lengkap dengan nama dan alamat. Kalau dua-duanya kosong, dikirim sebagai titik peta biasa.

Contoh Request ​

Contoh paling simpel: kirim pesan teks ke satu username.

bash
curl -X POST "https://api-zate.azickri.com/message" \
  -H "id: YOUR_ID" \
  -H "session-id: YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"username":"@azickri","type":"text","text":"Halo dari Zate! 👋"}'
javascript
import axios from 'axios';

const response = await axios.post(
  'https://api-zate.azickri.com/message',
  {
    username: '@azickri',
    type: 'text',
    text: 'Halo dari Zate! 👋',
  },
  {
    headers: {
      'id': 'YOUR_ID',
      'session-id': 'YOUR_SESSION_ID',
    },
  },
);

console.log(response.data);
javascript
const response = await fetch('https://api-zate.azickri.com/message', {
  method: 'POST',
  headers: {
    'id': 'YOUR_ID',
    'session-id': 'YOUR_SESSION_ID',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    username: '@azickri',
    type: 'text',
    text: 'Halo dari Zate! 👋',
  }),
});

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

Contoh Body per Tipe ​

Ganti body di contoh request di atas sama salah satu dari ini.

json
{
  "username": "@azickri",
  "type": "text",
  "text": "Halo dari Zate! 👋"
}
json
{
  "username": "@azickri",
  "type": "text",
  "parseMode": "html",
  "text": "Pesanan <b>#1024</b> siap! Cek di <a href=\"https://zate.azickri.com\">sini</a> 🍢"
}
json
{
  "username": "@azickri",
  "type": "image",
  "text": "Ini caption-nya, opsional",
  "image": {
    "url": "https://example.com/image.jpg",
    "mimetype": "image/jpeg"
  }
}
json
{
  "username": "@azickri",
  "type": "video",
  "text": "Caption video",
  "video": {
    "url": "https://example.com/video.mp4",
    "mimetype": "video/mp4",
    "duration": 30,
    "thumbnail": "https://example.com/video-thumbnail.jpg"
  }
}
json
{
  "username": "@azickri",
  "type": "audio",
  "audio": {
    "url": "https://example.com/audio.mp3",
    "mimetype": "audio/mpeg",
    "duration": 30
  }
}
json
{
  "username": "@azickri",
  "type": "document",
  "text": "Invoice bulan ini ya",
  "document": {
    "url": "https://example.com/invoice.pdf",
    "name": "invoice.pdf",
    "size": 102400,
    "mimetype": "application/pdf"
  }
}
json
{
  "username": "@azickri",
  "type": "location",
  "location": {
    "name": "Monas",
    "address": "Gambir, Jakarta Pusat",
    "latitude": -6.175392,
    "longitude": 106.827153
  }
}
json
{
  "username": "@azickri",
  "type": "contact",
  "contact": {
    "name": "Azickri",
    "phone": "6281234567890"
  }
}
json
{
  "group": "-1001234567890",
  "type": "text",
  "text": "Halo semuanya! 👋"
}
json
{
  "channel": "-1001234567890",
  "type": "text",
  "text": "Ada update terbaru nih!"
}
json
{
  "user": "123456789",
  "type": "text",
  "text": "Makasih udah pesan! 🙏"
}
json
{
  "phone": "6281234567890",
  "type": "text",
  "text": "Halo! Ini dari Zate."
}

Response ​

json
{
  "messageId": "1024"
}
json
// Tujuan nggak diisi
{
  "statusCode": 400,
  "message": "invalid phone, username, user, group or channel"
}

// Username atau ID nggak ketemu
{
  "statusCode": 400,
  "message": "chat not found"
}

// Nomor HP nggak bisa dicari
{
  "statusCode": 400,
  "message": "phone is not on telegram or hidden by its privacy settings"
}

// Kolom wajib buat tipe itu kosong
{
  "statusCode": 400,
  "message": "image should not be empty"
}
json
{
  "statusCode": 404,
  "message": "session not found"
}
json
// Sesi lagi nggak nyambung
{
  "statusCode": 500,
  "message": "session not connected"
}

// Media gagal diunduh
{
  "statusCode": 500,
  "message": "error parser file from url 404 Not Found"
}

// Ditolak Telegram
{
  "statusCode": 500,
  "message": "403: CHAT_WRITE_FORBIDDEN (caused by messages.SendMessage)"
}
KolomTipeKeterangan
messageIdstringID pesan di chat tujuan.

Pesan dari API nggak masuk webhook

Pesan yang dikirim lewat endpoint ini nggak dikirim ulang ke webhook kamu, soalnya messageId-nya udah ada di response.