Ontwikkelaars — API · MCP · CLI

Maak 'n WIA Code in een reël. Geen sleutel nodig binne die gratis perke nie.

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.

Die booster QR is altyd ingesluit. Daar is geen opsie om dit af te skakel nie — dieselfde geld vir die API, MCP en CLI. "Wanneer kumulatiewe gebruik 100 miljoen keer bereik, skei die booster en jou eie logo kom in sy plek" is 'n produkbelofte, dus het ons geen uitsondering vir enige een pad gemaak nie. Enkoderingsparameters (grid, bpc, bridge) is ook op die bediener vasgestel.

CLI — een reël, geen installasie

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

Loop dadelik op Node 18 of later, sonder installasie. Dit het geen afhanklikhede nie, so om dit af te haal neem 'n paar sekondes.

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

Tipes — Wi-Fi, kontakkaart, gebeurtenis

Drie kant-en-klare soorte. Jy hoef nie self die stringe saam te stel nie — gee die velde en die bediener bou standaard Wi-Fi / vCard / iCalendar-inhoud, greep-vir-greep identies aan wat die generator op hierdie werf produseer.

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

Velde

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

Tye is "2026-09-01 19:00". Vir 'n oop Wi-Fi-netwerk gee security=nopass en laat die wagwoord weg. Ontbrekende of foutiewe velde kom terug as HTTP 400 met 'n boodskap wat die veld noem — geen beeld word gerender nie, sodat 'n slegte versoek nooit 'n renderplek opneem nie.

Baie op eenslag

Een reël per kode. By 'n tempolimiet wag dit en gaan voort in plaas daarvan om halfpad te stop, en rapporteer mislukte reëls met hul werklike reëlnommers.

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

Die antwoord is image/png. Voeg ?format=json by om base64 en metadata as JSON te kry.

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

Dit vanuit 'n blaaier aanroep

U kan dit direk vanaf 'n webtoepassing op enige oorsprong aanroep. Dit is 'n publieke API wat geen koekies gebruik nie, so CORS is oop.

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

Parameters

naamverpligtendbeskrywing
textDie teks of URL om te enkodeer. Lang URL's word beter eers verkort.
typewifi · card · event. Gegee in plaas van text — die bediener stel die standaardstring uit die velde saam. Sien die Tipes-afdeling hierbo.
shapeSilhoeët (verstek heart). Sien die tabel hieronder.
cellPxPixels per sel (3–20, verstek 8). Groter beteken 'n groter beeld.
label'n Etiket wat in die metadata gehou word. Dit word nie op die beeld geteken nie.

Silhoeëtte en kapasiteit

Elke silhoeët hou 'n ander hoeveelheid (UTF-8 grepe). Gebruik square vir lang inhoud; enige vorm werk vir kort skakels.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — laat die AI dit maak

Verbind dit met 'n KI-kliënt soos Claude en dit maak kodes reg in die gesprek. Die eindpunt is https://mcp.wiacode.com/mcp en geen sleutel is nodig nie.

Claude Desktop-opstelling

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

As jou kliënt Streamable HTTP direk ondersteun, gee dit net die URL.

Gereedskap

hulpmiddelwat dit doen
get_wia_code_infoVerduidelik wat 'n WIA Code is, hoe dit van 'n QR-kode verskil, en die kapasiteit van elke silhoeët. Om dit eerste te roep verminder foute.
generate_wia_codeVerander teks in 'n kode-beeld. As dit die kapasiteit oorskry, sê dit vir jou watter silhoeëtte sou pas.
generate_wia_code_wifiWi-Fi-toegangsbesonderhede — skandering sluit by die netwerk aan sonder om die wagwoord in te tik.
generate_wia_code_card'n Kontak as 'n standaard vCard — skandering bied aan om dit in die foon se kontakte te stoor.
generate_wia_code_event'n Gebeurtenis as standaard iCalendar — skandering voeg dit by die kalender.

Gratis perke

As jy meer nodig het — vir grootmaat-uitreiking, vennootskappe of kommersiële gebruik, stuur vir ons 'n e-pos. Ons sal vir jou 'n sleutel gee wat die perk verhoog. 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.

Meer

Maak die generator oop →

WIA Code is 'n produk van SmileStory Co., Ltd. Die booster QR is 'n gids wat mense sonder die toegewyde skandeerder ook help om dit te lees.