Udviklere — API · MCP · CLI

Lav en WIA Code med én linje. Ingen nøgle nødvendig inden for de gratis grænser.

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'en er altid inkluderet. Der er ingen mulighed for at slå den fra — det samme gælder API, MCP og CLI. "Når den samlede brug når 100 millioner gange, adskilles boosteren, og dit eget logo tager dens plads" er et produktløfte, så vi lavede ingen undtagelse for nogen vej. Kodningsparametre (grid, bpc, bridge) er også fastlåst på serveren.

CLI — én linje, ingen installation

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

Kører med det samme på Node 18 eller nyere, uden installation. Den har ingen afhængigheder, så det tager kun et par sekunder at hente den.

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

Typer — Wi-Fi, kontaktkort, begivenhed

Tre færdige typer. Du behøver ikke selv sammensætte strengene — send felterne, så bygger serveren standard Wi-Fi- / vCard- / iCalendar-indhold, byte for byte identisk med det, generatoren på dette site producerer.

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

Felter

typepåkrævetvalgfri
wifissid, passwordsecurity (WPA·WEP·nopass), hidden
cardnameorg, tel, email
eventtitle, startend, location, desc

Tidspunkter angives som "2026-09-01 19:00". Til et åbent Wi-Fi-netværk skal du sende security=nopass og udelade password. Manglende eller forkert udfyldte felter returneres som HTTP 400 med en besked, der nævner feltet — der genereres intet billede, så en fejlbehæftet forespørgsel aldrig optager en render-plads.

Flere på én gang

Én linje pr. kode. Ved en hastighedsbegrænsning venter den og fortsætter i stedet for at stoppe halvvejs, og rapporterer fejlede linjer med deres reelle linjenumre.

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

Svaret er image/png. Tilføj ?format=json for at få base64 og metadata som JSON.

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

Kald det fra en browser

Du kan kalde det direkte fra en webapp med en vilkårlig origin. Det er et offentligt API, der ikke bruger cookies, så CORS er åbent.

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

Parametre

navnpåkrævetbeskrivelse
textTeksten eller URL'en, der skal kodes. Lange URL'er bør først forkortes.
typewifi · card · event. Angives i stedet for text — serveren bygger standardstrengen ud fra felterne. Se afsnittet Typer ovenfor.
shapeSilhuet (standard heart). Se tabellen nedenfor.
cellPxPixels pr. celle (3–20, standard 8). Større betyder et større billede.
labelEn etiket, der gemmes i metadata. Den tegnes ikke på billedet.

Silhuetter og kapacitet

Hver silhuet kan indeholde forskellige mængder (UTF-8-bytes). Brug square til langt indhold; enhver form fungerer til korte links.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — lad AI'en lave den

Forbind den til en AI-klient som Claude, så laver den koder direkte i samtalen. Endepunktet er https://mcp.wiacode.com/mcp, og der kræves ingen nøgle.

Opsætning af Claude Desktop

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

Hvis din klient understøtter Streamable HTTP direkte, skal du bare give den URL'en.

Værktøjer

værktøjhvad det gør
get_wia_code_infoForklarer, hvad en WIA Code er, hvordan den adskiller sig fra en QR-kode, og kapaciteten for hver silhuet. Hvis du kalder denne først, reducerer det fejl.
generate_wia_codeOmdanner tekst til et kodebillede. Hvis det overstiger kapaciteten, fortæller den, hvilke silhuetter der ville passe.
generate_wia_code_wifiWi-Fi-loginoplysninger — scanning tilslutter netværket uden at skulle indtaste adgangskoden.
generate_wia_code_cardEn kontakt som standard vCard — scanning tilbyder at gemme den i telefonens kontakter.
generate_wia_code_eventEn begivenhed som standard iCalendar — scanning føjer den til kalenderen.

Gratis grænser

Hvis du har brug for mere — til bulkudstedelse, partnerskaber eller kommerciel brug, så send os en e-mail. Vi giver dig en nøgle, der hæver grænsen. 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.

Mere

Åbn generatoren →

WIA Code er et produkt fra SmileStory Co., Ltd. Booster-QR'en er en guide, der også hjælper folk uden den dedikerede scanner med at læse den.