API Documentation

Integrasikan QR Code Generator ke aplikasi Anda dengan REST API

API Key diperlukan. Semua request harus menyertakan header X-API-Key. Daftar akun untuk mendapatkan API Key secara gratis.

Base URL

https://qr.batuteknologi.web.id/api

Authentication

HeaderNilaiDeskripsi
X-API-Keyqr_xxxxxxxx...API Key yang valid dan aktif

Generate QR Code

Buat QR Code dari teks atau URL dengan berbagai opsi kustomisasi.

POST /api/generate

Headers

HeaderWajibNilai
Content-TypeYaapplication/json
X-API-KeyYaAPI Key anda
AcceptTidakapplication/json (default) atau image/png / image/jpeg / image/webp / image/svg+xml

Request Body

ParameterTypeWajibDefaultDeskripsi
text string wajib - Teks atau URL yang akan diencode
size number opsional 300 Ukuran dalam pixel (100–1024)
fgcolor string opsional #059669 Warna foreground (hex, format #RRGGBB)
format string opsional png Format output: png, jpg, webp, svg
ecc string opsional H Error correction: L (7%), M (15%), Q (25%), H (30%)
logo string opsional - Base64 image untuk logo di tengah QR (hanya PNG/JPG/WEBP)

Contoh Request

curl -X POST https://qr.batuteknologi.web.id/api/generate \ -H "Content-Type: application/json" \ -H "X-API-Key: qr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -d '{ "text": "https://batuteknologi.web.id", "size": 300, "fgcolor": "#059669", "format": "png", "ecc": "H" }'

Response Sukses

{ "success": true, "data": { "image": "data:image/png;base64,iVBORw0KGgo...", "format": "png", "size": 300, "text": "https://batuteknologi.web.id" } }

Response Error

{ "success": false, "error": "Parameter \"text\" is required." }

Direct Image Response

Set header Accept: image/png untuk menerima binary image langsung.

curl -X POST https://qr.batuteknologi.web.id/api/generate \ -H "Content-Type: application/json" \ -H "X-API-Key: qr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Accept: image/png" \ -d '{"text": "https://example.com"}' \ -o qrcode.png

Error Codes

HTTP CodeDeskripsi
400Bad Request — parameter tidak valid atau kurang
401Unauthorized — header X-API-Key tidak disertakan
403Forbidden — API Key tidak valid atau tidak aktif
404Not Found — endpoint tidak dikenal
405Method Not Allowed — gunakan method yang benar
429Too Many Requests — rate limit terlampaui (60 req/menit)
500Internal Server Error — hubungi admin

Rate Limiting

Maksimal 60 request per menit per API Key.

Contoh Integrasi

JavaScript (fetch)

// Browser / Node.js (fetch) const response = await fetch('https://qr.batuteknologi.web.id/api/generate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-API-Key': 'qr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', }, body: JSON.stringify({ text: 'https://batuteknologi.web.id', size: 300, fgcolor: '#059669', }), }); const result = await response.json(); document.querySelector('img').src = result.data.image;

Python (requests)

import requests import base64 response = requests.post( 'https://qr.batuteknologi.web.id/api/generate', headers={ 'Content-Type': 'application/json', 'X-API-Key': 'qr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', }, json={ 'text': 'https://example.com', 'size': 300, } ) if response.ok: data = response.json() with open('qrcode.png', 'wb') as f: f.write(base64.b64decode(data['data']['image'].split(',')[1]))

PHP

$ch = curl_init('https://qr.batuteknologi.web.id/api/generate'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'X-API-Key: qr_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', ], CURLOPT_POSTFIELDS => json_encode([ 'text' => 'https://batuteknologi.web.id', 'size' => 300, ]), CURLOPT_RETURNTRANSFER => true, ]); $result = json_decode(curl_exec($ch), true);