QRนะคะ API
สร้าง QR เป็นรูปภาพ ทีละอันหรือทีละมาก สร้างและแก้ QR ติดตาม และดึงสถิติการสแกน จากระบบของคุณเอง ใช้ได้เมื่อเป็นสมาชิก (รวมช่วงทดลองฟรี) สร้าง API key ได้ที่ บัญชี > API
การยืนยันตัวตน
ส่ง key ใน header Authorization: Bearer qrn_... ทุกครั้ง (หรือ X-Api-Key) เก็บ key เป็นความลับ ห้ามใส่ในหน้าเว็บหรือแอปที่คนอื่นเปิดดูได้ ถ้า key หลุด ยกเลิกแล้วสร้างใหม่ได้ทันที ทุกคำตอบเป็น JSON ภาษาอังกฤษ ยกเว้นรูป QR
curl -H "Authorization: Bearer qrn_..." https://www.qrnaka.com/api/v1/me
ขีดจำกัด
- 60 ครั้งต่อนาที และ 10,000 ครั้งต่อวัน ต่อ key (เกินแล้วได้ 429)
- ทีละมากได้สูงสุด 500 รายการต่อคำขอ · สร้าง QR ติดตามใหม่ได้ 1,000 อันต่อวัน
- สมาชิกหมดอายุเกินช่วงผ่อนผัน: ได้ 402 จนกว่าจะต่ออายุ (QR ที่สร้างแล้วยังสแกนได้)
POST /qr
QR หนึ่งอัน: ได้รูป PNG (ค่าเริ่มต้น) หรือ SVG · ใส่ ?response=json เพื่อรับ base64
curl -X POST https://www.qrnaka.com/api/v1/qr \
-H "Authorization: Bearer qrn_..." -H "Content-Type: application/json" \
-d '{"type":"promptpay","target":"0812345678","amount":"150","format":"png","size":600,"level":"H"}' \
-o promptpay.png
| ช่อง | ความหมาย |
|---|---|
type | data · url · text · promptpay · wifi · email · phone · sms · line |
data | ข้อความที่จะใส่ใน QR ตรง ๆ (ไม่ต้องใส่ type) |
url / text | ลิงก์ (http/https) / ข้อความ |
target, amount | พร้อมเพย์: เบอร์มือถือ เลขบัตร 13 หลัก หรือ e-wallet 15 หลัก, จำนวนเงิน (ไม่ใส่ก็ได้) |
ssid, password, security, hidden | Wi-Fi (WPA · WEP · nopass) |
to, subject, body | อีเมล |
number, message | โทร / SMS |
id | LINE ID, @บัญชีทางการ หรือลิงก์ line.me |
format | png · svg |
size | ความกว้าง PNG 64–4096 พิกเซล (ค่าเริ่มต้น 512) |
level | ระดับกู้คืน L · M · Q · H (ค่าเริ่มต้น M) |
color, background | #rrggbb · พื้น transparent |
margin | ขอบว่าง 0–16 ช่อง (ค่าเริ่มต้น 4) |
POST /qr/bulk
หลาย QR ในคำขอเดียว ได้ไฟล์ ZIP (รายการที่ทำไม่ได้อยู่ใน errors.txt) · ?response=json ได้ base64 ทุกไฟล์พร้อมข้อผิดพลาดรายรายการ · PNG กว้างสุด 1024 px (งานพิมพ์ใหญ่ใช้ SVG)
curl -X POST https://www.qrnaka.com/api/v1/qr/bulk \
-H "Authorization: Bearer qrn_..." -H "Content-Type: application/json" \
-d '{"format":"svg","level":"Q","items":[
{"name":"table-1","url":"https://example.com/menu?t=1"},
{"name":"table-2","url":"https://example.com/menu?t=2"},
{"name":"wifi","type":"wifi","ssid":"Shop","password":"secret"}]}' \
-o qr.zip
QR ติดตาม
GET /links | ลิงก์ทั้งหมดของบัญชี (per_page, page) |
POST /links | สร้าง: destination (http/https), title |
POST /links/bulk | สร้างทีละมาก: items [{destination, title}, ...] |
GET /links/{code} | ข้อมูลลิงก์ |
PATCH /links/{code} | แก้ destination, title, status (active · paused) |
GET /links/{code}/stats?days=30 | สถิติการสแกนรายวัน อุปกรณ์ และพื้นที่ |
curl -X POST https://www.qrnaka.com/api/v1/links \
-H "Authorization: Bearer qrn_..." -H "Content-Type: application/json" \
-d '{"destination":"https://example.com/promo","title":"Poster A"}'
{"link":{"code":"ab12cd3","short_url":"https://qrnaka.net/r/ab12cd3","status":"active","scans":0,...}}
ใส่ short_url ใน QR (ผ่าน POST /qr) แล้วพิมพ์ได้เลย เปลี่ยนปลายทางภายหลังด้วย PATCH โดยไม่ต้องพิมพ์ใหม่
ข้อผิดพลาด
{"error":{"code":"invalid","message":"url must start with http:// or https://"}}
401 unauthorized · 402 membership_required · 403 account_disabled / links_disabled · 404 not_found · 422 invalid / too_many · 429 rate_limited / daily_limit · 503 unavailable