ข้ามไปเนื้อหา
API สำหรับสมาชิก

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
ช่องความหมาย
typedata · url · text · promptpay · wifi · email · phone · sms · line
dataข้อความที่จะใส่ใน QR ตรง ๆ (ไม่ต้องใส่ type)
url / textลิงก์ (http/https) / ข้อความ
target, amountพร้อมเพย์: เบอร์มือถือ เลขบัตร 13 หลัก หรือ e-wallet 15 หลัก, จำนวนเงิน (ไม่ใส่ก็ได้)
ssid, password, security, hiddenWi-Fi (WPA · WEP · nopass)
to, subject, bodyอีเมล
number, messageโทร / SMS
idLINE ID, @บัญชีทางการ หรือลิงก์ line.me
formatpng · 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
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