Bahasa Indonesia
Ambil Media
GET/media/{telegramId}/{chatId}/{messageId}/{variant}/{signature}.{ext}Media di Telegram nggak punya URL publik. Jadi tiap kali Zate ngasih kamu gambar, video, stiker, dokumen, atau foto profil, entah dari Ambil Pesan Channel atau dari webhook, bentuknya berupa link ke endpoint ini.
Kamu nggak perlu nyusun link-nya sendiri. Cukup pakai url atau thumbnail yang dikasih Zate apa adanya.
Detail Endpoint
- Base URL:
https://api-zate.azickri.com - Header: nggak perlu, link-nya udah ditandatangani
- Streaming: ngedukung header
Range, jadi video bisa langsung diputar dan dilompat-lompatin
Parameter
Semua bagian path udah diisi Zate. Tabel ini cuma buat kamu yang penasaran.
| Parameter | Lokasi | Keterangan |
|---|---|---|
telegramId | path | id sesi Zate yang punya akses ke media itu. |
chatId | path | ID chat tempat media itu berada, misalnya -1001234567890. |
messageId | path | ID pesan. Buat foto profil, isinya ID foto. |
variant | path | photo (gambar ukuran terbesar), thumb (thumbnail), file (video, stiker, atau dokumen), atau profile (foto profil kecil). |
signature | path | Tanda tangan yang bikin link nggak bisa ditebak atau diubah. |
ext | path | Ekstensi file, misalnya jpg, mp4, atau webp. |
Range | header | Opsional. Contohnya bytes=0-1048575 buat ambil 1 MB pertama. |
Contoh Pemakaian
html
<!-- Gambar dan thumbnail -->
<img src="https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/181/photo/Xk3d9QmPz0aB1cD2eF3gH4.jpg" alt="" />
<!-- Video, langsung bisa di-seek -->
<video
controls
poster="https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/180/thumb/Gh9iJk0lMn1oPq2rSt3uVw.jpg"
src="https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/180/file/Pq4rSt5uVw6xYz7aBc8dEf.mp4"
></video>bash
# Download utuh
curl -o gambar.jpg "https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/181/photo/Xk3d9QmPz0aB1cD2eF3gH4.jpg"
# Ambil 1 MB pertama aja
curl -r 0-1048575 -o potongan.mp4 "https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/180/file/Pq4rSt5uVw6xYz7aBc8dEf.mp4"javascript
const url = 'https://api-zate.azickri.com/media/68b3f0a2c1d4e5f6a7b8c9d0/-1001234567890/181/photo/Xk3d9QmPz0aB1cD2eF3gH4.jpg';
const response = await fetch(url);
if (response.status === 503) {
const wait = Number(response.headers.get('Retry-After'));
console.log(`Telegram minta nunggu ${wait} detik`);
}
const buffer = Buffer.from(await response.arrayBuffer());Response
Kalau berhasil, isinya file-nya langsung, bukan JSON:
| Status | Kapan |
|---|---|
200 | File utuh, request tanpa Range. |
206 | Sebagian file, sesuai Range yang kamu minta. Ada header Content-Range. |
| Header response | Keterangan |
|---|---|
Content-Type | Jenis file, misalnya image/jpeg atau video/mp4. |
Content-Length | Ukuran bagian yang dikirim, dalam byte. |
Accept-Ranges | Selalu bytes. |
Cache-Control | public, max-age=86400, jadi browser boleh nyimpen sampai sehari. |
Kalau gagal, bentuk error-nya sama kayak endpoint lain:
json
// Link-nya diubah-ubah
{
"statusCode": 400,
"message": "telegramId must be a mongodb id"
}json
// Tanda tangan nggak cocok, atau pesannya udah dihapus
{
"statusCode": 404,
"message": "media not found"
}json
// Range di luar ukuran file
{
"statusCode": 416,
"message": "range not satisfiable"
}json
// Sesi pemilik link lagi nggak nyambung
{
"statusCode": 500,
"message": "session not connected"
}json
// Disertai header Retry-After
{
"statusCode": 503,
"message": "telegram asked to wait 120s"
}Cara Kerjanya
- Nggak pernah didownload utuh. Zate ngambil file dari Telegram per potongan 512 KB, cuma pas penontonnya udah sampai di bagian itu. Video 2 GB cuma "makan" bagian yang ditonton, dan nutup atau lompatin video langsung ngehentiin pengambilannya.
- Potongan yang udah diambil disimpan sementara selama 1 jam sejak terakhir dibuka. Muter ulang atau mundurin video nggak perlu ke Telegram lagi.
- Sesi harus nyambung, kecuali semua potongan yang diminta masih ada di simpanan sementara.
- Ukuran gambar:
photoitu ukuran terbesar (sampai 2560 piksel),thumbgambar sekitar 800 piksel, danthumbvideo 320 piksel, ukuran yang memang disimpan Telegram. - Foto profil baru = link baru, jadi browser nggak bakal nampilin foto lama dari cache.
Link ini publik
Siapa pun yang pegang link-nya bisa buka media itu tanpa header, termasuk media dari channel privat. Perlakukan link media dari channel privat kayak data rahasia, jangan dipajang di halaman publik.