Utvecklare — API · MCP · CLI

Skapa en WIA Code med en rad. Ingen nyckel behövs inom de kostnadsfria gränserna.

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:n ingår alltid. Det finns inget alternativ för att stänga av den — samma sak gäller för API:et, MCP och CLI:et. "När den kumulativa användningen når 100 miljoner gånger separeras boostern och din egen logotyp tar dess plats" är ett produktlöfte, så vi gjorde inget undantag för någon väg. Kodningsparametrarna (grid, bpc, bridge) är fasta även på servern.

CLI — en rad, ingen installation

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

Körs direkt på Node 18 eller senare, utan installation. Den har inga beroenden, så hämtningen tar bara några sekunder.

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, händelse

Tre färdiga typer. Du behöver inte sätta ihop strängarna själv — du skickar fälten och servern bygger standard-Wi-Fi- / vCard- / iCalendar-innehåll, byte för byte identiskt med det som generatorn på den här sidan producerar.

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

Fält

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

Tider anges som "2026-09-01 19:00". För ett öppet Wi-Fi-nätverk skickar du security=nopass och utelämnar lösenordet. Saknade eller felformaterade fält kommer tillbaka som HTTP 400 med ett meddelande som anger fältet — ingen bild renderas, så en felaktig begäran tar aldrig upp en renderingsplats.

Många på en gång

En rad per kod. Vid en hastighetsbegränsning väntar den och fortsätter istället för att stanna halvvägs, och rapporterar misslyckade rader med deras verkliga radnummer.

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 är image/png. Lägg till ?format=json för att få base64 och 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"}'

Anropa den från en webbläsare

Du kan anropa den direkt från en webbapp på vilket ursprung som helst. Det är ett offentligt API som inte använder cookies, så CORS är öppet.

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

Parametrar

namnobligatorisktbeskrivning
textTexten eller URL:en som ska kodas. Långa URL:er bör förkortas först.
typewifi · card · event. Anges istället för text — servern sätter ihop standardsträngen från fälten. Se avsnittet Typer ovan.
shapeSiluett (standard heart). Se tabellen nedan.
cellPxPixlar per cell (3–20, standard 8). Större värde ger en större bild.
labelEn etikett som sparas i metadata. Den ritas inte ut på bilden.

Siluetter och kapacitet

Varje siluett rymmer olika mycket (UTF-8-byte). Använd square för långt innehåll; vilken form som helst fungerar för korta länkar.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — låt AI:n skapa den

Anslut den till en AI-klient som Claude, så skapar den koder direkt i konversationen. Endpointen är https://mcp.wiacode.com/mcp och ingen nyckel krävs.

Konfiguration av Claude Desktop

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

Om din klient stöder Streamable HTTP direkt räcker det att ange URL:en.

Verktyg

verktygvad det gör
get_wia_code_infoFörklarar vad en WIA Code är, hur den skiljer sig från en QR-kod och kapaciteten för varje siluett. Att anropa den här först minskar antalet misslyckanden.
generate_wia_codeOmvandlar text till en kodbild. Om den överskrider kapaciteten talar den om vilka siluetter som skulle passa.
generate_wia_code_wifiWi-Fi-uppgifter — skanning ansluter till nätverket utan att lösenordet skrivs in.
generate_wia_code_cardEn kontakt som ett standard-vCard — skanning erbjuder att spara den i telefonens kontakter.
generate_wia_code_eventEn händelse som standard-iCalendar — skanning lägger till den i kalendern.

Kostnadsfria gränser

Om du behöver mer — för massutgivning, partnerskap eller kommersiell användning, skicka oss ett mejl. Vi ger dig en nyckel som höjer 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.

Mer

Öppna generatorn →

WIA Code är en produkt från SmileStory Co., Ltd. Booster-QR:n är en guide som hjälper personer utan den dedikerade skannern att också läsa den.