API DOCUMENTATION
SatriaCanvas API
Endpoint publik · Free Fire, Mobile Legends, IQC Image & IQC Text
GET / POSTImage ResponseNo Auth
01
Overview
Base URL
Ganti satriacanvas.vercel.app dengan domain Vercel kamu.
text
https://satriacanvas.vercel.appGET
/fake-ffGenerate kartu lobby Free Fire → image/jpegGET
/fake-mlGenerate kartu lobby Mobile Legends → image/pngGET / POST
/iqc-imageGenerate canvas IQC WhatsApp dengan foto → image/pngGET / POST
/iqc-textGenerate canvas IQC WhatsApp dengan teks → image/pngSemua endpoint mengembalikan binary image langsung — bukan JSON. Cocok dipakai di WA Bot, Telegram Bot, cURL, atau langsung di browser.
02
Endpoint Free Fire
GET /fake-ffJPEG
Endpoint
text
GET https://satriacanvas.vercel.app/fake-ff?usr={username}&lobby={1-30}Parameter Query
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
usrWAJIB | string | — | Username yang tampil di kartu, maksimal 20 karakter. |
lobby | number | random | Nomor background lobby (1–30). Kosongkan untuk random. |
Response Header
| Header | Nilai |
|---|---|
Content-Type | image/jpeg |
Content-Disposition | inline; filename="ff-{username}-lobby{n}.jpg" |
X-Username | username yang digunakan |
X-Lobby | nomor lobby yang digunakan |
Cache-Control | no-store |
Contoh
bash
curl -o ff_card.jpg "https://satriacanvas.vercel.app/fake-ff?usr=Satriadevs&lobby=5"Daftar Lobby FF30 lobby
| No | Preview | Nilai Parameter |
|---|---|---|
| 01 | ![]() | lobby=1 |
| 02 | ![]() | lobby=2 |
| 03 | ![]() | lobby=3 |
| 04 | ![]() | lobby=4 |
| 05 | ![]() | lobby=5 |
| 06 | ![]() | lobby=6 |
| 07 | ![]() | lobby=7 |
| 08 | ![]() | lobby=8 |
| 09 | ![]() | lobby=9 |
| 10 | ![]() | lobby=10 |
03
Endpoint Mobile Legends
GET /fake-mlPNG
Endpoint
text
GET https://satriacanvas.vercel.app/fake-ml?usr={username}&rank={rank_key}&border={1-16}&avatar={url}Parameter Query
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
usrWAJIB | string | — | Username player, maksimal 15 karakter. |
rank | string | imo | Key rank. Lihat tabel di bawah. |
border | number | 0 | Nomor border avatar (1–16). 0 pakai outline default emas. |
avatar | string (URL) | default | URL foto avatar. Harus diawali https://. |
Response Header
| Header | Nilai |
|---|---|
Content-Type | image/png |
Content-Disposition | inline; filename="ml-{username}-{rank}.png" |
X-Username | username |
X-Rank | rank |
X-Border | border |
Cache-Control | no-store |
Contoh
bash
curl -o ml.png "https://satriacanvas.vercel.app/fake-ml?usr=Satriadevs&rank=legend&border=3"Daftar Rank ML7 rank
| Key (rank=) | Icon | Nama Rank | Warna |
|---|---|---|---|
rank=imo | ![]() | Immortal | #e8d5a3 |
rank=mawi | ![]() | Mythic | #c084fc |
rank=legend | ![]() | Legend | #f97316 |
rank=epic | ![]() | Epic | #a855f7 |
rank=gm | ![]() | Grandmaster | #60a5fa |
rank=glory | ![]() | Glory | #34d399 |
rank=honor | ![]() | Honor | #94a3b8 |
Daftar Border ML16 border
| No | Preview | Nilai Parameter |
|---|---|---|
| 01 | ![]() | border=1 |
| 02 | ![]() | border=2 |
| 03 | ![]() | border=3 |
| 04 | ![]() | border=4 |
| 05 | ![]() | border=5 |
| 06 | ![]() | border=6 |
| 07 | ![]() | border=7 |
| 08 | ![]() | border=8 |
| 09 | ![]() | border=9 |
| 10 | ![]() | border=10 |
| 11 | ![]() | border=11 |
| 12 | ![]() | border=12 |
| 13 | ![]() | border=13 |
| 14 | ![]() | border=14 |
| 15 | ![]() | border=15 |
| 16 | ![]() | border=16 |
04
Endpoint IQC Image
GET /iqc-imagePNG
Generate canvas bergaya screenshot WhatsApp dengan foto, nama, dan waktu. Background dari aset lokal bg.jpg.
Endpoint (GET)
text
GET https://satriacanvas.vercel.app/iqc-image?nama={nama}&waktu={waktu}&photo_url={url}Parameter Query (GET)
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
namaWAJIB | string | — | Nama pengirim. Tampil di area atas dan bawah canvas. Maks 25 karakter. |
waktuWAJIB | string | — | Waktu pesan, contoh: 13.56. Tampil di area tengah canvas. |
teks | string | kosong | Isi teks yang tampil di area chat bubble canvas. Maks 60 karakter. |
photo_url | string (URL) | kosong | URL foto untuk slot foto canvas. Harus diawali https://. |
Untuk kirim foto dari file (bukan URL), pakai metode POST multipart/form-data dengan field photo.
Parameter Form (POST multipart)
| Field | Tipe | Default | Deskripsi |
|---|---|---|---|
namaWAJIB | string | — | Nama pengirim, maks 25 karakter. |
waktuWAJIB | string | — | Waktu pesan, contoh: 13.56. |
teks | string | kosong | Teks pesan yang tampil di area chat canvas. Maks 60 karakter. |
photo | file (image/*) | kosong | File gambar untuk foto. Lebih prioritas dari photo_url. |
photo_url | string (URL) | kosong | URL foto. Digunakan jika field photo tidak ada. |
Response Header
| Header | Nilai |
|---|---|
Content-Type | image/png |
Content-Disposition | inline; filename="iqc-image-{nama}.png" |
X-Nama | nama yang digunakan |
X-Waktu | waktu yang digunakan |
Cache-Control | no-store |
Contoh
bash
curl -o iqc_image.png "https://satriacanvas.vercel.app/iqc-image?nama=Satriadevs&waktu=13.56&teks=Halo+kak&photo_url=https://i.imgur.com/abc.jpg"bash
curl -o iqc_image.png -F "nama=Satriadevs" -F "waktu=13.56" -F "teks=Halo kak" -F "photo=@/path/to/photo.jpg" "https://satriacanvas.vercel.app/iqc-image"05
Endpoint IQC Text
GET /iqc-textPNG
Generate screenshot chat WhatsApp dengan teks pesan, waktu, dan status bar (sinyal, wifi, baterai). Mendukung emoji yang otomatis dirender sebagai gambar.
Endpoint (GET)
text
GET https://satriacanvas.vercel.app/iqc-text?text={teks}&time={waktu}&baterai=true&bat_level=100&operator=true&timebar=true&wifi=trueParameter Query (GET)
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
textWAJIB | string | — | Teks pesan. Mendukung emoji langsung di teks. |
timeWAJIB | string | — | Waktu pesan, contoh: 13.56. |
baterai | boolean | true | Tampilkan ikon baterai di status bar. |
bat_level | string | 100 | Level baterai dalam persen (0–100). |
operator | boolean | true | Tampilkan sinyal operator di status bar. |
timebar | boolean | true | Tampilkan waktu di kiri status bar. |
wifi | boolean | true | Tampilkan ikon wifi di status bar. |
Body JSON (POST)
json
{
"text": "Halo kak, udah makan belum? 😊",
"time": "13.56",
"baterai": [true, "80"],
"operator": true,
"timebar": true,
"wifi": true
}Response Header
| Header | Nilai |
|---|---|
Content-Type | image/png |
Content-Disposition | inline; filename="iqc-text-{timestamp}.png" |
X-Text | teks (URL-encoded, 50 char pertama) |
X-Time | waktu yang digunakan |
Cache-Control | no-store |
Contoh
bash
curl -o iqc_text.png "https://satriacanvas.vercel.app/iqc-text?text=Halo+kak&time=13.56"bash
curl -o iqc_text.png "https://satriacanvas.vercel.app/iqc-text?text=Selamat+pagi+☀️&time=07.30&baterai=true&bat_level=90&wifi=false"06
Error Response
Format ErrorJSON
Kalau ada yang salah, server balas JSON dengan status code yang sesuai — bukan gambar.
json
{ "error": "Parameter 'usr' wajib diisi", "example": "/fake-ff?usr=PlayerName&lobby=1" }| HTTP Status | Penyebab |
|---|---|
400 Bad Request | Parameter wajib tidak diisi atau nilainya tidak valid |
500 Internal Server Error | Ada error di server saat memproses canvas |
07
Contoh Penggunaan
cURLTerminal
Free Fire
bash
curl -o ff.jpg "https://satriacanvas.vercel.app/fake-ff?usr=Satriadevs&lobby=12"Mobile Legends
bash
curl -o ml.png "https://satriacanvas.vercel.app/fake-ml?usr=Satria&rank=legend&border=5"IQC Image (URL foto)
bash
curl -o iqc_img.png "https://satriacanvas.vercel.app/iqc-image?nama=Satriadevs&waktu=13.56&teks=Halo+kak&photo_url=https://i.imgur.com/abc.jpg"IQC Image (upload foto)
bash
curl -o iqc_img.png -F "nama=Satriadevs" -F "waktu=13.56" -F "teks=Halo kak" -F "photo=@foto.jpg" "https://satriacanvas.vercel.app/iqc-image"IQC Text
bash
curl -o iqc_txt.png "https://satriacanvas.vercel.app/iqc-text?text=Halo+kak+😊&time=13.56"Node.js / Baileys (WhatsApp Bot)WA Bot
javascript
const axios = require("axios");
async function sendCard(sock, jid, url, caption) {
const res = await axios.get(url, { responseType: "arraybuffer" });
await sock.sendMessage(jid, { image: Buffer.from(res.data), caption });
}
sendCard(sock, jid, `https://satriacanvas.vercel.app/fake-ff?usr=Satriadevs&lobby=5`, "🎮 FF Card");
sendCard(sock, jid, `https://satriacanvas.vercel.app/fake-ml?usr=Satria&rank=imo`, "⚔️ ML Card");
sendCard(sock, jid, `https://satriacanvas.vercel.app/iqc-text?text=Halo+kak&time=13.56`, "💬 IQC Text");
sendCard(sock, jid, `https://satriacanvas.vercel.app/iqc-image?nama=Satria&waktu=13.56`, "📸 IQC Image");Python (requests)Python
python
import requests
BASE = "https://satriacanvas.vercel.app"
def get_card(endpoint, params):
res = requests.get(f"{BASE}/{endpoint}", params=params)
if res.status_code == 200:
return res.content
return None
ff_img = get_card("fake-ff", {"usr": "Satriadevs", "lobby": 5})
ml_img = get_card("fake-ml", {"usr": "Satria", "rank": "legend", "border": 3})
iqc_txt = get_card("iqc-text", {"text": "Halo kak 😊", "time": "13.56"})
iqc_img = get_card("iqc-image", {"nama": "Satriadevs", "waktu": "13.56",
"photo_url": "https://i.imgur.com/abc.jpg"})JavaScript / Fetch (Browser)JS
javascript
async function getCard(endpoint, params) {
const q = new URLSearchParams(params);
const res = await fetch(`https://satriacanvas.vercel.app/${endpoint}?${q}`);
if (!res.ok) throw new Error("Gagal");
return URL.createObjectURL(await res.blob());
}
const ffUrl = await getCard("fake-ff", { usr: "Satriadevs", lobby: 5 });
const mlUrl = await getCard("fake-ml", { usr: "Satria", rank: "legend" });
const txtUrl = await getCard("iqc-text", { text: "Halo kak", time: "13.56" });
const imgUrl = await getCard("iqc-image", { nama: "Satriadevs", waktu: "13.56", teks: "Halo kak" });































