Pengembang — API · MCP · CLI

Buat WIA Code dalam satu baris. Tidak perlu kunci selama masih dalam batas gratis.

Building an AI or vision system? WIA Code identification reference for AI systems — the three centre elements, why the outline is free, and the misidentifications to avoid. Plain-text counterpart: /llms.txt.

Booster QR selalu disertakan. Tidak ada opsi untuk mematikannya — begitu juga untuk API, MCP, dan CLI. "Ketika penggunaan kumulatif mencapai 100 juta kali, booster akan terpisah dan logo Anda sendiri akan menggantikannya" adalah janji produk, jadi kami tidak membuat pengecualian untuk jalur mana pun. Parameter encoding (grid, bpc, bridge) juga dikunci di server.

CLI — satu baris, tanpa instalasi

npx wiacode "https://wiacode.com" --shape heart

Langsung berjalan di Node 18 atau lebih baru, tanpa instalasi. Tidak memiliki dependensi, jadi pengambilannya hanya butuh beberapa detik.

npx wiacode --list-shapes              # silhouettes and capacity
npx wiacode "Hello" --shape square -o hello.png
npx wiacode "a link" --shape heart --json    # print metadata only
npx wiacode card --name "Jane Doe" --tel "+82-10-1234-5678"   # wifi / card / event

Tipe — Wi-Fi, kartu kontak, acara

Tiga tipe siap pakai. Anda tidak perlu menyusun string sendiri — kirim saja bidangnya dan server membangun konten Wi-Fi / vCard / iCalendar standar, identik byte demi byte dengan hasil generator di situs ini.

CLI

npx wiacode wifi  --ssid "MyNet" --password "secret"
npx wiacode wifi  --ssid "Cafe" --security nopass          # open network
npx wiacode card  --name "Jane Doe" --org "SmileStory" --tel "+82-10-1234-5678" --email "a@b.c"
npx wiacode event --title "Launch party" --start "2026-09-01 19:00" --end "2026-09-01 21:00" --location "Seoul"

REST

curl -X POST https://wiacode.com/api/v1/code \
  -H 'Content-Type: application/json' \
  -d '{"type":"card","name":"Jane Doe","tel":"+82-10-1234-5678","shape":"square"}' \
  -o card.png

Bidang

typewajibopsional
wifissid, passwordsecurity (WPA·WEP·nopass), hidden
cardnameorg, tel, email
eventtitle, startend, location, desc

Waktu memakai format "2026-09-01 19:00". Untuk Wi-Fi terbuka, kirim security=nopass dan kosongkan kata sandi. Bidang yang hilang atau salah format dikembalikan sebagai HTTP 400 beserta nama bidangnya — tidak ada gambar yang dibuat, jadi permintaan yang salah tidak pernah memakai slot render.

Banyak sekaligus

Satu baris satu kode. Saat kena batas per menit, ia menunggu lalu melanjutkan alih-alih berhenti di tengah, dan melaporkan baris yang gagal dengan nomor baris aslinya.

npx wiacode batch people.jsonl --out-dir codes

# people.jsonl
{"type":"card","name":"Jane Doe","tel":"+82-10-1234-5678","out":"jane.png"}
{"type":"wifi","ssid":"Cafe WIA","security":"nopass"}
{"text":"https://wiacode.com","shape":"star"}

REST API

POST /api/v1/code

curl -X POST https://wiacode.com/api/v1/code \
  -H 'Content-Type: application/json' \
  -d '{"text":"https://wiacode.com","shape":"heart"}' \
  -o wiacode.png

Responsnya adalah image/png. Tambahkan ?format=json untuk mendapatkan base64 dan metadata dalam bentuk JSON.

curl -X POST 'https://wiacode.com/api/v1/code?format=json' \
  -H 'Content-Type: application/json' \
  -d '{"text":"https://wiacode.com","shape":"square"}'

Memanggil dari browser

Anda dapat memanggilnya langsung dari aplikasi web di origin mana pun. Ini adalah API publik yang tidak menggunakan cookie, sehingga CORS dibuka.

const r = await fetch('https://wiacode.com/api/v1/code?format=json', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ text: 'https://wiacode.com', shape: 'heart' })
});
const { image, meta } = await r.json();
document.querySelector('img').src = image;   // data:image/png;base64,...

GET /api/v1/shapes

curl https://wiacode.com/api/v1/shapes

Parameter

namawajibdeskripsi
textTeks atau URL yang akan dienkode. URL panjang sebaiknya dipendekkan dulu.
typewifi · card · event. Dikirim menggantikan text — server menyusun string standar dari bidang-bidang itu. Lihat bagian Tipe di atas.
shapeSiluet (default heart). Lihat tabel di bawah.
cellPxPiksel per sel (3–20, default 8). Semakin besar berarti gambar semakin besar.
labelLabel yang disimpan di metadata. Tidak digambar pada gambar.

Siluet dan kapasitas

Setiap siluet menampung jumlah yang berbeda (byte UTF-8). Gunakan square untuk konten panjang; bentuk apa pun cocok untuk tautan pendek.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — biarkan AI yang membuatnya

Hubungkan ke klien AI seperti Claude, dan ia membuat kode langsung dalam percakapan. Endpoint-nya adalah https://mcp.wiacode.com/mcp dan tidak perlu kunci.

Pengaturan Claude Desktop

{
  "mcpServers": {
    "wiacode": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.wiacode.com/mcp"]
    }
  }
}

Jika klien Anda mendukung Streamable HTTP secara langsung, cukup berikan URL-nya.

Tools

alatfungsinya
get_wia_code_infoMenjelaskan apa itu WIA Code, bedanya dengan kode QR, dan kapasitas setiap siluet. Memanggil ini lebih dulu mengurangi kegagalan.
generate_wia_codeMengubah teks menjadi gambar kode. Jika melebihi kapasitas, ia memberi tahu siluet mana yang muat.
generate_wia_code_wifiKredensial Wi-Fi — memindai langsung menyambung tanpa mengetik kata sandi.
generate_wia_code_cardKontak sebagai vCard standar — memindai membuat ponsel menawarkan menyimpannya.
generate_wia_code_eventAcara sebagai iCalendar standar — memindai menambahkannya ke kalender.

Batas gratis

Jika Anda butuh lebih banyak — untuk penerbitan massal, kemitraan, atau penggunaan komersial, kirimi kami email. Kami akan memberi Anda kunci yang menaikkan batas. wiasoom@smilestory.ai

WIA Stream — when one code isn't enough

A single WIA Code holds up to 1,450 bytes. When the payload is larger — a document, a book chapter, an audio clip — Stream splits it across many frames. A screen plays them in sequence, a camera collects them, and the scanner reassembles the file. No internet, no server. It already ships in the generator.

What matters here is not speed — it is whether the transfer finishes at all. Stream needs every frame. A frame that fails to read must wait for the next pass, and may fail again. So a per-frame reading gap does not average out; it multiplies into the completion time. In our degradation sweep at matched physical size (1064 vs 1088 px, n=17, QR read with ZBar), a high-version QR frame read 52.9% of the time while a WIA frame read 17 of 17. Feeding those rates into a cyclic-broadcast model, a 286-frame QR transfer needs about 8 passes to complete while a 155-frame WIA transfer needs about one.

Read this honestly: n = 17 is a small sample. By the rule of three, "17 of 17" should be read as ≥ 82% with 95% confidence, and the 52.9% figure carries a 29–77% interval. Taking the least favourable end of both, the completion-time gap is still about 2.4×. Screen-to-camera capture on real handsets and printed output have not been measured yet. And QR wins on blur resistance at equal frame size — we only pull ahead once capacity is matched.

Lainnya

Buka generator →

WIA Code adalah produk dari SmileStory Co., Ltd. Booster QR adalah panduan yang membantu orang tanpa pemindai khusus untuk tetap bisa membacanya.