Desenvolupadors — API · MCP · CLI

Crea un WIA Code en una línia. No cal clau dins dels límits gratuïts.

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.

El QR booster sempre s'inclou. No hi ha opció per desactivar-lo — el mateix passa amb l'API, MCP i CLI. "Quan l'ús acumulat arribi a 100 milions de vegades, el booster se separa i el teu propi logotip ocupa el seu lloc" és una promesa del producte, per això no hem fet cap excepció per a cap via. Els paràmetres de codificació (grid, bpc, bridge) també estan fixats al servidor.

CLI — una línia, sense instal·lació

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

Funciona immediatament a Node 18 o posterior, sense instal·lació. No té dependències, així que descarregar-lo triga uns segons.

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

Tipus — Wi-Fi, targeta de contacte, esdeveniment

Tres tipus ja preparats. No cal que munteu les cadenes vosaltres mateixos — passeu els camps i el servidor construeix contingut Wi-Fi / vCard / iCalendar estàndard, idèntic byte a byte al que produeix el generador d'aquest lloc.

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

Camps

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

Les hores són "2026-09-01 19:00". Per a una xarxa Wi-Fi oberta, passeu security=nopass i ometeu password. Els camps absents o mal formats retornen un HTTP 400 amb un missatge que indica el camp — no es genera cap imatge, de manera que una sol·licitud incorrecta mai ocupa un lloc de renderització.

Diversos alhora

Una línia per codi. En arribar al límit de velocitat, espera i continua en lloc d'aturar-se a mitges, i informa de les línies fallides amb el seu número de línia real.

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"}

API REST

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

La resposta és image/png. Afegeix ?format=json per obtenir base64 i metadades en format JSON.

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

Cridar-lo des d'un navegador

Podeu cridar-lo directament des d'una aplicació web de qualsevol origen. És una API pública que no utilitza galetes, per la qual cosa el CORS està obert.

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

Paràmetres

nomobligatoridescripció
textEl text o URL a codificar. És millor escurçar primer els URL llargs.
typewifi · card · event. S'indica en lloc de text — el servidor construeix la cadena estàndard a partir dels camps. Vegeu la secció Tipus més amunt.
shapeSilueta (per defecte heart). Consulta la taula de sota.
cellPxPíxels per cel·la (3–20, per defecte 8). Un valor més gran vol dir una imatge més gran.
labelUna etiqueta que es guarda a les metadades. No es dibuixa a la imatge.

Siluetes i capacitat

Cada silueta admet una quantitat diferent (bytes UTF-8). Fes servir square per a contingut llarg; qualsevol forma funciona per a enllaços curts.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — deixa que la IA el faci

Connecta'l a un client d'IA com Claude i crearà codis directament a la conversa. El punt final és https://mcp.wiacode.com/mcp i no cal cap clau.

Configuració de Claude Desktop

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

Si el teu client admet Streamable HTTP directament, només cal donar-li l'URL.

Eines

einaquè fa
get_wia_code_infoExplica què és un WIA Code, en què es diferencia d'un codi QR i la capacitat de cada silueta. Cridar-lo primer redueix els errors.
generate_wia_codeConverteix text en una imatge de codi. Si supera la capacitat, indica quines siluetes hi encaixarien.
generate_wia_code_wifiCredencials Wi-Fi — en escanejar-lo us connecteu a la xarxa sense escriure la contrasenya.
generate_wia_code_cardUn contacte com a vCard estàndard — en escanejar-lo es proposa desar-lo als contactes del telèfon.
generate_wia_code_eventUn esdeveniment com a iCalendar estàndard — en escanejar-lo s'afegeix al calendari.

Límits gratuïts

Si en necessites més — per a emissió a l'engròs, col·laboracions o ús comercial, envia'ns un correu. Et donarem una clau que augmenta el límit. 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és

Obre el generador →

WIA Code és un producte de SmileStory Co., Ltd. El QR booster és una guia que ajuda també les persones sense l'escàner dedicat a llegir-lo.