API Reference
Generate gambar quote bergaya Nokia klasik secara programatik via REST API. Response berupa binary PNG siap pakai.
https://qng.cc.cdv1image/pngAutentikasi
Setiap request ke API wajib menyertakan API key melalui header X-API-Key. Tanpa key yang valid, request ditolak dengan status 401.
qng_elkaffcihuyy Sertakan key ini di header setiap request ke /api/generate.
X-API-Key: qng_elkaffcihuyy # Atau via Authorization Authorization: Bearer qng_elkaffcihuyy
Generate Image
/api/generate Generate quote imageMengirim data teks dan menghasilkan gambar PNG bergaya Nokia. Gambar dikembalikan langsung sebagai binary response.
| Property | Value |
|---|---|
| Method | POST |
| Content-Type | application/json |
| Accept | image/png |
| Max body size | 4 KB |
| Timeout | 30 detik |
Request Body
Semua field bertipe string. Field opsional yang tidak disertakan menggunakan nilai default server.
| Field | Wajib | Max | Deskripsi |
|---|---|---|---|
pesan | Ya | 400 | Teks utama yang tampil di badan gambar |
sender | Tidak | 40 | Nama pengirim, tampil di bagian info bawah |
header | Tidak | 40 | Teks besar di atas gambar. Default: nilai sender |
date | Tidak | 20 | Tanggal format DD/MM/YYYY. Default: tanggal server |
time | Tidak | 10 | Jam format HH:MM. Default: jam server |
frame | Tidak | — | Boolean. true = overlay Nokia frame di gambar output |
{
"pesan": "Jangan pernah menyerah pada impianmu.",
"sender": "elkaff",
"header": "elkaff",
"date": "22/05/2026",
"time": "07:30",
"frame": false
}Response
Jika request berhasil, server mengembalikan binary PNG berukuran 1086 × 1448 px secara langsung. Simpan response body sebagai file .png.
| Response Header | Nilai |
|---|---|
Content-Type | image/png |
X-RateLimit-Limit | 60 req/menit |
X-RateLimit-Remaining | Sisa request dalam window aktif |
X-RateLimit-Window | 60 detik |
Cache-Control | no-store |
Error Codes
Error response selalu berformat JSON dengan field error berisi pesan deskriptif.
| Status | Kondisi |
|---|---|
| 400 | Field pesan tidak disertakan atau kosong |
| 401 | Header X-API-Key tidak ada atau key tidak valid |
| 413 | Request body melebihi batas 4 KB |
| 429 | Rate limit terlampaui. Cek header Retry-After |
| 500 | Kesalahan internal server saat memproses gambar |
{
"error": "Invalid or missing API key",
"docs": "/docs"
}Rate Limits
API menerapkan dua lapis rate limiting untuk menjaga stabilitas layanan.
| Layer | Limit | Window | Key |
|---|---|---|---|
| Per IP | 60 req | 1 menit | IP address client |
Contoh Penggunaan
cURL
curl -X POST https://qng.cc.cd/api/generate \
-H "Content-Type: application/json" \
-H "X-API-Key: qng_elkaffcihuyy" \
-d '{"pesan":"Tetap semangat!","sender":"elkaff"}' \
--output quote.pngJavaScript / Node.js
const res = await fetch('https://qng.cc.cd/api/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'qng_elkaffcihuyy'
},
body: JSON.stringify({
pesan: 'Tetap semangat dan konsisten setiap hari.',
sender: 'elkaff',
date: '22/05/2026',
time: '07:30',
frame: false // true = Nokia frame overlay
})
})
if (!res.ok) {
const err = await res.json()
throw new Error(err.error)
}
// Node.js — simpan ke file
const buffer = Buffer.from(await res.arrayBuffer())
fs.writeFileSync('quote.png', buffer)
// Browser — tampilkan di img tag
const blob = await res.blob()
document.querySelector('img').src = URL.createObjectURL(blob)Python
import requests
res = requests.post(
'https://qng.cc.cd/api/generate',
headers={'X-API-Key': 'qng_elkaffcihuyy'},
json={
'pesan': 'Tetap semangat dan konsisten setiap hari.',
'sender': 'elkaff',
'date': '22/05/2026',
'time': '07:30',
'frame': False # True = Nokia frame overlay
}
)
res.raise_for_status()
with open('quote.png', 'wb') as f:
f.write(res.content)
print('Saved!')WhatsApp Bot (Baileys / Node.js)
async function sendQuote(sock, jid, { pesan, sender }) {
const res = await fetch('https://qng.cc.cd/api/generate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': 'qng_elkaffcihuyy'
},
body: JSON.stringify({ pesan, sender })
})
if (!res.ok) throw new Error('Generate failed: ' + res.status)
const buffer = Buffer.from(await res.arrayBuffer())
await sock.sendMessage(jid, {
image: buffer,
caption: pesan,
mimetype: 'image/png'
})
}