Розробники — API · MCP · CLI

Створіть WIA Code одним рядком. Ключ не потрібен у межах безкоштовних лімітів.

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.

Бустер QR завжди включений. Немає можливості його вимкнути — те саме стосується API, MCP та CLI. «Коли сукупне використання досягає 100 мільйонів разів, бустер відокремлюється, і на його місце стає ваш власний логотип» — це обіцянка продукту, тому ми не зробили винятку для жодного зі шляхів. Параметри кодування (grid, bpc, bridge) також фіксовані на сервері.

CLI — один рядок, без встановлення

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

Працює одразу на Node 18 або новішій версії, без встановлення. Не має залежностей, тому завантаження займає лише кілька секунд.

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

Типи — Wi-Fi, контакт, подія

Три готові типи. Не потрібно складати рядки самостійно — передайте поля, і сервер побудує стандартний вміст Wi-Fi / vCard / iCalendar, байт у байт такий самий, як створює генератор на цьому сайті.

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

Поля

typeобов'язковонеобов'язково
wifissid, passwordsecurity (WPA·WEP·nopass), hidden
cardnameorg, tel, email
eventtitle, startend, location, desc

Час у форматі «2026-09-01 19:00». Для відкритої мережі Wi-Fi передайте security=nopass і не вказуйте пароль. Відсутні або хибні поля повертаються як HTTP 400 із назвою поля — зображення не створюється, тож помилковий запит ніколи не займає місце в черзі відтворення.

Багато за раз

Один рядок — один код. Досягнувши ліміту за хвилину, програма чекає і продовжує, а не спиняється на півдорозі, і повідомляє про невдалі рядки з їхніми справжніми номерами.

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

Відповідь має тип image/png. Додайте ?format=json, щоб отримати base64 та метадані у форматі JSON.

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

Виклик із браузера

Ви можете викликати його безпосередньо з веб-застосунку з будь-якого джерела (origin). Це публічний API, який не використовує кукі, тому CORS відкрито.

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

Параметри

назваобов'язковоопис
textТекст або URL для кодування. Довгі URL краще спочатку скоротити.
typewifi · card · event. Надсилається замість text — сервер збирає стандартний рядок із полів. Див. розділ «Типи» вище.
shapeСилует (за замовчуванням heart). Дивіться таблицю нижче.
cellPxПікселів на комірку (3–20, за замовчуванням 8). Більше значення означає більше зображення.
labelМітка, що зберігається в метаданих. Вона не малюється на зображенні.

Силуети та місткість

Кожен силует вміщує різну кількість (байтів UTF-8). Використовуйте square для довгого вмісту; для коротких посилань підійде будь-яка форма.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — нехай ШІ це зробить

Підключіть його до ШІ-клієнта, наприклад Claude, і він створюватиме коди прямо в розмові. Endpoint — https://mcp.wiacode.com/mcp, ключ не потрібен.

Налаштування Claude Desktop

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

Якщо ваш клієнт напряму підтримує Streamable HTTP, просто вкажіть йому URL.

Інструменти

інструментщо робить
get_wia_code_infoПояснює, що таке WIA Code, чим він відрізняється від QR-коду, та місткість кожного силуету. Виклик цього першим зменшує кількість помилок.
generate_wia_codeПеретворює текст на зображення коду. Якщо перевищено місткість, повідомляє, які силуети підійдуть.
generate_wia_code_wifiДані Wi-Fi — сканування під'єднує до мережі без введення пароля.
generate_wia_code_cardКонтакт як стандартна vCard — після сканування телефон запропонує зберегти його.
generate_wia_code_eventПодія у форматі стандартного iCalendar — після сканування додається до календаря.

Безкоштовні ліміти

Якщо вам потрібно більше — для масового випуску, партнерства чи комерційного використання надішліть нам електронного листа. Ми дамо вам ключ, який підвищує ліміт. 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.

Більше

Відкрити генератор →

WIA Code — продукт компанії SmileStory Co., Ltd. Бустер QR — це підказка, яка допомагає людям без спеціального сканера теж прочитати його.