Dasturchilar — API · MCP · CLI

Bir qatorda WIA Code yarating. Bepul chegaralar doirasida kalit talab qilinmaydi.

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 har doim kiritilgan. Uni o'chirish imkoni yo'q — bu API, MCP va CLI uchun ham amal qiladi. "Umumiy foydalanish 100 million martaga yetganda, booster ajraladi va o'z logotipingiz uning o'rniga keladi" — bu mahsulot va'dasi, shuning uchun biz hech bir yo'l uchun istisno qilmadik. Kodlash parametrlari (grid, bpc, bridge) serverda ham qat'iy belgilangan.

CLI — bir qator, o'rnatishsiz

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

Node 18 yoki undan yangi versiyada o'rnatishsiz darhol ishlaydi. Bog'liqliklari yo'q, shuning uchun uni olish bir necha soniya vaqt oladi.

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

Turlar — Wi-Fi, kontakt karta, tadbir

Uchta tayyor tur. Satrlarni o'zingiz yig'ishingiz shart emas — maydonlarni bering, server standart Wi-Fi / vCard / iCalendar kontentini yaratadi, bu shu saytdagi generator yaratadigan kontent bilan bayt-baytiga bir xil bo'ladi.

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

Maydonlar

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

Vaqt "2026-09-01 19:00" ko'rinishida bo'ladi. Ochiq Wi-Fi tarmoq uchun security=nopass qiymatini bering va parolni qoldiring. Yetishmayotgan yoki noto'g'ri formatdagi maydonlar HTTP 400 xatosi va maydon nomini ko'rsatuvchi xabar bilan qaytadi — rasm yaratilmaydi, shuning uchun noto'g'ri so'rov hech qachon render joyini egallamaydi.

Bir vaqtda ko'plab

Har bir kod uchun bitta qator. Tezlik chegarasiga yetganda, yarim yo'lda to'xtash o'rniga kutadi va davom etadi, muvaffaqiyatsiz qatorlarni ularning haqiqiy qator raqamlari bilan xabar qiladi.

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

Javob image/png hisoblanadi. base64 va metama'lumotlarni JSON sifatida olish uchun ?format=json qo'shing.

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

Brauzerdan chaqirish

Uni istalgan origin'dagi veb-ilovadan to'g'ridan-to'g'ri chaqirishingiz mumkin. Bu cookie ishlatmaydigan ochiq (public) API bo'lgani uchun CORS ochiq.

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

Parametrlar

nomimajburiytavsif
textKodlanadigan matn yoki URL. Uzun URL-larni avval qisqartirgan ma'qul.
typewifi · card · event. text o'rniga beriladi — server maydonlardan standart satrni yig'adi. Yuqoridagi Turlar bo'limiga qarang.
shapeSiluet (standart heart). Quyidagi jadvalga qarang.
cellPxHar bir katak uchun piksellar (3–20, standart 8). Katta qiymat kattaroq tasvirni bildiradi.
labelMetama'lumotda saqlanadigan yorliq. U tasvirga chizilmaydi.

Siluetlar va sig'im

Har bir siluet turli miqdorni sig'diradi (UTF-8 baytlari). Uzun kontent uchun squaredan foydalaning; qisqa havolalar uchun har qanday shakl mos keladi.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — buni AI yaratsin

Uni Claude kabi AI mijoziga ulang, u to'g'ridan-to'g'ri suhbat ichida kodlar yaratadi. Endpoint — https://mcp.wiacode.com/mcp, kalit talab qilinmaydi.

Claude Desktop sozlamasi

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

Agar sizning mijozingiz Streamable HTTP-ni bevosita qo'llab-quvvatlasa, unga shunchaki URL-ni bering.

Vositalar

vositanima qiladi
get_wia_code_infoWIA Code nima ekanligini, u QR koddan qanday farq qilishini va har bir siluetning sig'imini tushuntiradi. Buni birinchi bo'lib chaqirish xatolarni kamaytiradi.
generate_wia_codeMatnni kod tasviriga aylantiradi. Agar sig'imdan oshsa, qaysi siluetlar mos kelishini aytadi.
generate_wia_code_wifiWi-Fi ma'lumotlari — skanerlash parolni kiritmasdan tarmoqqa ulanadi.
generate_wia_code_cardKontakt standart vCard sifatida — skanerlash uni telefon kontaktlariga saqlashni taklif qiladi.
generate_wia_code_eventTadbir standart iCalendar sifatida — skanerlash uni kalendarga qo'shadi.

Bepul chegaralar

Agar sizga ko'proq kerak bo'lsa — ommaviy chiqarish, hamkorlik yoki tijorat maqsadida foydalanish uchun bizga elektron xat yuboring. Biz sizga chegarani oshiradigan kalit beramiz. 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.

Ko'proq

Generatorni oching →

WIA Code — SmileStory Co., Ltd. mahsuloti. Booster QR — maxsus skaneri bo'lmagan odamlarga ham uni o'qishga yordam beradigan qo'llanma.