Pembangun — API · MCP · CLI

Cipta WIA Code dalam satu baris. Tiada kunci diperlukan dalam had percuma.

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 sentiasa disertakan. Tiada pilihan untuk mematikannya — begitu juga untuk API, MCP dan CLI. "Apabila penggunaan kumulatif mencecah 100 juta kali, booster akan berasingan dan logo anda sendiri mengambil tempatnya" adalah janji produk, jadi kami tidak membuat pengecualian untuk mana-mana laluan. Parameter pengekodan (grid, bpc, bridge) turut ditetapkan di pelayan.

CLI — satu baris, tiada pemasangan

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

Berjalan terus pada Node 18 atau lebih baharu, tanpa pemasangan. Tiada kebergantungan, jadi mengambilnya hanya beberapa saat.

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

Jenis — Wi-Fi, kad kenalan, acara

Tiga jenis siap sedia. Anda tidak perlu menyusun rentetan itu sendiri — hantar medan-medan tersebut dan pelayan membina kandungan Wi-Fi / vCard / iCalendar standard, sama bait demi bait dengan yang dihasilkan oleh penjana di laman 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

Medan

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

Masa dalam format "2026-09-01 19:00". Untuk rangkaian Wi-Fi terbuka, hantar security=nopass dan tinggalkan kata laluan. Medan yang tiada atau tidak sah dikembalikan sebagai HTTP 400 dengan mesej yang menamakan medan berkenaan — tiada imej dijana, jadi permintaan yang tidak sah tidak sekali-kali mengambil slot penjanaan.

Banyak sekaligus

Satu baris bagi setiap kod. Apabila had kadar dicapai, ia menunggu dan meneruskan dan bukannya berhenti separuh jalan, serta melaporkan baris yang gagal berserta nombor baris sebenarnya.

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

Respons adalah image/png. Tambah ?format=json untuk mendapatkan base64 dan metadata sebagai JSON.

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

Memanggilnya daripada pelayar web

Anda boleh memanggilnya terus daripada aplikasi web pada sebarang origin. Ia adalah API awam yang tidak menggunakan kuki, jadi 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

namawajibpenerangan
textTeks atau URL untuk dikodkan. URL yang panjang lebih baik dipendekkan dahulu.
typewifi · card · event. Diberikan sebagai ganti text — pelayan menyusun rentetan standard daripada medan-medan tersebut. Lihat bahagian Jenis di atas.
shapeSiluet (lalai heart). Lihat jadual di bawah.
cellPxPiksel setiap sel (3–20, lalai 8). Lebih besar bermaksud imej lebih besar.
labelLabel yang disimpan dalam metadata. Ia tidak dilukis pada imej.

Siluet dan kapasiti

Setiap siluet memuatkan jumlah yang berbeza (bait UTF-8). Guna square untuk kandungan panjang; mana-mana bentuk sesuai untuk pautan pendek.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — biar AI ciptakannya

Sambungkan kepada pelanggan AI seperti Claude dan kod dicipta terus dalam perbualan. Titik akhirnya ialah https://mcp.wiacode.com/mcp dan tiada kunci diperlukan.

Persediaan Claude Desktop

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

Jika pelanggan anda menyokong Streamable HTTP secara terus, berikan sahaja URL ini.

Alat

alatfungsi
get_wia_code_infoMenerangkan apa itu WIA Code, bezanya dengan kod QR, dan kapasiti setiap siluet. Memanggil ini dahulu mengurangkan kegagalan.
generate_wia_codeMenukar teks kepada imej kod. Jika melebihi kapasiti, ia memberitahu siluet mana yang muat.
generate_wia_code_wifiKelayakan Wi-Fi — mengimbas menyertai rangkaian tanpa menaip kata laluan.
generate_wia_code_cardKenalan sebagai vCard standard — mengimbas menawarkan untuk menyimpannya ke kenalan telefon.
generate_wia_code_eventAcara sebagai iCalendar standard — mengimbas menambahkannya ke kalendar.

Had percuma

Jika anda perlukan lebih — untuk pengeluaran pukal, perkongsian atau kegunaan komersial, hantar e-mel kepada kami. Kami akan berikan kunci yang menaikkan had. 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.

Lagi

Buka penjana →

WIA Code adalah produk SmileStory Co., Ltd. Booster QR adalah panduan yang membantu mereka yang tiada pengimbas khusus turut boleh membacanya.