Entwéckler — API · MCP · CLI

Maacht e WIA Code an enger Zeil. Bannent de gratis Limitten brauch een keen Schlëssel.

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.

De Booster-QR ass ëmmer mat dobäi. Et gëtt keng Optioun fir en auszeschalten — dat gëllt genee esou fir d'API, MCP an CLI. "Wann d'kumulativ Notzung 100 Millioune Mol erreecht, trennt sech de Booster of a säin eegent Logo kënnt un déi Plaz" ass e Produktversprieche, dofir hu mir keng Ausnam fir engen eenzelen Wee gemaach. D'Codéierungsparameter (grid, bpc, bridge) sinn och um Server fixéiert.

CLI — eng Zeil, keng Installatioun

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

Leeft direkt op Node 18 oder méi neier, ouni Installatioun. Et huet keng Ofhängegkeeten, dowéinst dauert et nëmmen e puer Sekonnen fir et ze lueden.

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

Typen — Wi-Fi, Kontaktkaart, Event

Dräi fäerdeg Typen. Dir musst d'Zeechenketten net selwer zesummesetzen — gitt d'Felder un, an de Server baut de Standard-Wi-Fi- / vCard- / iCalendar-Inhalt, Byte fir Byte identesch mat deem, wat de Generator op dëser Säit produzéiert.

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

Felder

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

D'Zäiten sinn am Format "2026-09-01 19:00". Fir en oppent Wi-Fi-Netzwierk gitt security=nopass un a loosst d'Passwuert ewech. Feelend oder falsch formatéiert Felder ginn als HTTP 400 zréck mat enger Message, déi d'Feld nennt — et gëtt keen Bild gerendert, sou datt eng falsch Ufro ni e Render-Plaz aweist.

Vill op eemol

Eng Zeil pro Code. Bei enger Rate-Limit waart de Prozess an mécht weider, amplaz op der Hallschent ze stoppen, a mellt fehlgeschloe Zeilen mat hire richtege Zeilennummeren.

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

D'Äntwert ass image/png. Setzt ?format=json derbäi fir base64 a Metadaten als JSON ze kréien.

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

Vum Browser opruffen

Dir kënnt et direkt vun enger Web-App op egal wéi engem Origin opruffen. Et ass eng ëffentlech API déi keng Cookien benotzt, dofir ass de CORS op.

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

Parameteren

NummobligatoreschBeschreiwung
textDen Text oder d'URL déi codéiert soll ginn. Laang URLen sollt een léiwer fir d'éischt kierzen.
typewifi · card · event. Gëtt amplaz vun text ugewannt — de Server baut de Standard-String aus de Felder. Kuckt de Kapitel «Typen» hei driwwer.
shapeSilhouette (Standard heart). Kuckt d'Tabell hei drënner.
cellPxPixel pro Zell (3–20, Standard 8). Méi grouss heescht e méi grousst Bild.
labelEn Label deen an de Metadaten gespäichert gëtt. Hie gëtt net op d'Bild gezeechent.

Silhouetten a Kapazitéit

All Silhouette hält eng aner Quantitéit (UTF-8 Bytes). Benotzt square fir laangen Inhalt; fir kuerz Linken passt all Form.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — loosst d'AI et maachen

Verbannt et mat engem AI-Client wéi Claude, an hie mécht Coden direkt am Gespréich. Den Endpoint ass https://mcp.wiacode.com/mcp a kee Schlëssel néideg.

Claude Desktop Astellung

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

Wann äre Client Streamable HTTP direkt ënnerstëtzt, gitt him einfach d'URL.

Tools

Toolwat et mécht
get_wia_code_infoErkläert wat e WIA Code ass, wéi hie sech vun engem QR-Code ënnerscheet, an d'Kapazitéit vun all Silhouette. Dëst als éischt opzeruffen reduzéiert Feeler.
generate_wia_codeWandelt Text an e Code-Bild ëm. Wann et d'Kapazitéit iwwerschreit, seet et wéi eng Silhouetten passen géifen.
generate_wia_code_wifiWi-Fi-Login-Donnéeën — d'Scannen tritt dem Netzwierk bäi ouni d'Passwuert anzeginn.
generate_wia_code_cardE Kontakt als Standard-vCard — d'Scannen bitt un, e an de Kontakter vum Telefon ze späicheren.
generate_wia_code_eventEn Event als Standard-iCalendar — d'Scannen setzt en an de Kalenner derbäi.

Gratis Limitten

Wann Dir méi braucht — fir Massenausgabe, Partnerschaften oder kommerziell Notzung, schéckt eis eng E-Mail. Mir ginn iech e Schlëssel deen d'Limit erhéicht. 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.

Méi

Generator opmaachen →

WIA Code ass e Produkt vun SmileStory Co., Ltd. Den Booster-QR ass e Guide deen och Leit ouni engagéierte Scanner hëlleft en ze liesen.