Bahasa Indonesia
Quick Start
Di sini kita bakal kirim pesan Telegram pertama kamu lewat Zate, dari nol. Kira-kira 5 menit, satu porsi sate juga belum sempat dingin.
Yang Kamu Butuhin
- HP dengan akun Telegram yang aktif. Kalau akunnya pakai verifikasi dua langkah, siapin password-nya juga.
- Terminal dengan
curl. Kalau adajq, lebih enak lagi. - Atau Node.js 18+, kalau kamu lebih suka langsung pakai skrip lengkap di bawah.
Semua request di halaman ini dikirim ke base URL:
text
https://api-zate.azickri.comBuat Sesi
Panggil Buat Session. Nggak perlu header atau body apa pun.
bash
curl -X POST "https://api-zate.azickri.com/session"Response-nya bakal kayak gini:
json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310"
}Simpan dua nilai itu, soalnya bakal dipakai sebagai header id dan session-id di semua request berikutnya. Biar gampang, taruh di variabel terminal:
bash
export ZATE_ID="68b3f0a2c1d4e5f6a7b8c9d0"
export ZATE_SESSION_ID="0b2f7059-8a90-4f6d-8684-b0e1ce6f0310"Jangan kelamaan
Kamu punya waktu 3 menit buat scan QR-nya. Kalau lewat, sesi otomatis dihapus dan kamu perlu bikin sesi baru. Jadi siapin HP-nya dari sekarang ya.
Ambil QR Code
QR code dibikin di belakang layar, jadi tunggu 2–3 detik, terus panggil Ambil Session:
bash
curl "https://api-zate.azickri.com/session" \
-H "id: $ZATE_ID" \
-H "session-id: $ZATE_SESSION_ID"json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"generatedId": "",
"name": "",
"username": "",
"phone": "",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310",
"isConnected": false,
"qrcode": "iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAAB...",
"isPasswordRequired": false,
"passwordHint": "",
"picture": "",
"webhook": { "url": "", "token": "" }
}Kolom qrcode itu gambar PNG dalam bentuk base64 (tanpa awalan data:). Cara paling gampang buat ngelihatnya:
bash
curl -s "https://api-zate.azickri.com/session" \
-H "id: $ZATE_ID" \
-H "session-id: $ZATE_SESSION_ID" \
| jq -r '.qrcode' | base64 -d > qr.png
# Buka qr.png pakai image viewer favorit kamuhtml
<!-- Tambahin awalan data URL, terus tampilin sebagai gambar -->
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAAB..." />QR-nya ganti tiap 30 detik
Telegram cuma ngasih token login yang berlaku sebentar, jadi Zate bikin QR baru kira-kira tiap 30 detik. Kalau qrcode masih kosong, tunggu sebentar terus panggil lagi. Selalu pakai QR yang paling baru.
Scan dari Telegram
- Buka Telegram di HP kamu.
- Masuk ke Settings (Pengaturan) → Devices (Perangkat).
- Ketuk Link Desktop Device (Tautkan Perangkat Desktop), lalu scan QR code tadi.
Telegram bakal ngirim notifikasi "login baru" ke akun kamu. Itu wajar, soalnya Zate barusan login sebagai perangkat baru.
Habis itu, panggil Ambil Session lagi. Kalau udah nyambung, isConnected jadi true, dan name, username, phone, serta picture ikut terisi:
json
{
"id": "68b3f0a2c1d4e5f6a7b8c9d0",
"generatedId": "123456789",
"name": "Cak Zate",
"username": "cakzate",
"phone": "6281234567890",
"sessionId": "0b2f7059-8a90-4f6d-8684-b0e1ce6f0310",
"isConnected": true,
"qrcode": "",
"isPasswordRequired": false,
"passwordHint": "",
"picture": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...",
"webhook": { "url": "", "token": "" }
}Akunmu pakai verifikasi dua langkah?
Habis di-scan, qrcode jadi kosong dan isPasswordRequired jadi true (petunjuk password-nya ada di passwordHint). Kirim password-nya lewat Kirim Password:
bash
curl -X POST "https://api-zate.azickri.com/session/password" \
-H "id: $ZATE_ID" \
-H "session-id: $ZATE_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"password":"password-cloud-kamu"}'Kalau benar, isConnected langsung jadi true.
Kirim Pesan Pertama
Momen yang ditunggu-tunggu. Ganti @username_tujuan sama username Telegram tujuan, terus panggil Kirim Pesan:
bash
curl -X POST "https://api-zate.azickri.com/message" \
-H "id: $ZATE_ID" \
-H "session-id: $ZATE_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"username":"@username_tujuan","type":"text","text":"Halo dari Zate! 🍢"}'json
{
"messageId": "1024"
}Belum ada temen buat dites?
Pakai username kamu sendiri. Pesannya bakal masuk ke Saved Messages, aman dan nggak ganggu siapa-siapa.
Cek Telegram-nya. Kalau pesannya udah nongol, selamat, kamu resmi jadi pelanggan tetap Zate! 🎉
Versi Lengkap Pakai Node.js
Males copas satu-satu? Skrip ini ngejalanin semua langkah di atas sekaligus: bikin sesi, nyimpen QR ke qr.png tiap kali QR-nya berubah, nanya password kalau akunnya pakai verifikasi dua langkah, nunggu sampai nyambung, terus ngirim pesan.
js
// quick-start.mjs
// Jalankan: node quick-start.mjs @username_tujuan
import { writeFile } from 'node:fs/promises';
import { createInterface } from 'node:readline/promises';
const BASE_URL = 'https://api-zate.azickri.com';
const username = process.argv[2];
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
async function zate(method, path, { headers = {}, body } = {}) {
const response = await fetch(BASE_URL + path, {
method,
headers: { 'Content-Type': 'application/json', ...headers },
body: body ? JSON.stringify(body) : undefined,
});
const data = await response.json();
if (!response.ok) throw new Error(`${data.statusCode}: ${data.message}`);
return data;
}
// 1. Buat sesi
const { id, sessionId } = await zate('POST', '/session');
const auth = { 'id': id, 'session-id': sessionId };
console.log('Sesi dibuat:', auth);
// 2 & 3. Simpan QR ke qr.png, tunggu di-scan, minta password kalau perlu
let lastQrcode = '';
while (true) {
const session = await zate('GET', '/session', { headers: auth });
if (session.isConnected) {
console.log(`Nyambung sebagai ${session.name}!`);
break;
}
if (session.isPasswordRequired) {
const rl = createInterface({ input: process.stdin, output: process.stdout });
const hint = session.passwordHint ? ` (petunjuk: ${session.passwordHint})` : '';
const password = await rl.question(`Password verifikasi dua langkah${hint}: `);
rl.close();
try {
await zate('POST', '/session/password', { headers: auth, body: { password } });
} catch (error) {
console.log(error.message); // 400: invalid password, coba lagi
}
continue;
}
if (session.qrcode && session.qrcode !== lastQrcode) {
lastQrcode = session.qrcode;
await writeFile('qr.png', Buffer.from(session.qrcode, 'base64'));
console.log('QR baru disimpan ke qr.png, scan dari Telegram ya!');
}
await sleep(3000);
}
// 4. Kirim pesan pertama
const { messageId } = await zate('POST', '/message', {
headers: auth,
body: { username, type: 'text', text: 'Halo dari Zate! 🍢' },
});
console.log('Pesan terkirim:', messageId);Kalau skripnya berhenti dengan 404: session not found pas lagi nunggu, berarti QR-nya keburu kedaluwarsa. Jalankan ulang aja, terus scan lebih cepat. 😄
Selanjutnya Apa?
- Pelajari Konsep Dasar biar paham siklus hidup sesi dan cara nentuin tujuan pesan.
- Pasang webhook biar server kamu dikabarin tiap ada pesan masuk.
- Coba kirim gambar, dokumen, lokasi, atau kontak.
- Kirim ke grup atau posting story.
- Ketemu error? Cek Error & Solusi.