Sviluppatori — API · MCP · CLI

Crea un WIA Code in una riga. Non serve una chiave entro i limiti gratuiti.

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.

Il booster QR è sempre incluso. Non c'è modo di disattivarlo — vale lo stesso per API, MCP e CLI. "Quando l'uso cumulativo raggiunge i 100 milioni di volte, il booster si separa e al suo posto va il tuo logo" è una promessa di prodotto, quindi non abbiamo fatto eccezioni per nessun percorso. Anche i parametri di codifica (grid, bpc, bridge) sono fissati sul server.

CLI — una riga, senza installazione

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

Funziona subito su Node 18 o versioni successive, senza installazione. Non ha dipendenze, quindi scaricarlo richiede pochi secondi.

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

Tipi — Wi-Fi, biglietto da visita, evento

Tre tipi pronti all'uso. Non devi comporre tu le stringhe: passa i campi e il server costruisce contenuti Wi-Fi / vCard / iCalendar standard, identici byte per byte a quelli prodotti dal generatore di questo sito.

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

Campi

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

Gli orari usano il formato «2026-09-01 19:00». Per una rete Wi-Fi aperta passa security=nopass e ometti la password. I campi mancanti o malformati tornano come HTTP 400 con il nome del campo — non viene generata alcuna immagine, quindi una richiesta errata non occupa mai uno slot di rendering.

Molti in una volta

Una riga per codice. Al limite al minuto attende e prosegue invece di fermarsi a metà, e segnala le righe fallite con il loro numero di riga reale.

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

La risposta è image/png. Aggiungi ?format=json per ottenere base64 e metadati in formato JSON.

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

Chiamarlo da un browser

Puoi chiamarlo direttamente da una web app su qualsiasi origine. È un'API pubblica che non usa cookie, quindi il CORS è aperto.

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

Parametri

nomeobbligatoriodescrizione
textIl testo o l'URL da codificare. È meglio accorciare prima gli URL lunghi.
typewifi · card · event. Da inviare al posto di text: il server compone la stringa standard dai campi. Vedi la sezione Tipi qui sopra.
shapeSagoma (predefinita heart). Vedi la tabella qui sotto.
cellPxPixel per cella (3–20, predefinito 8). Un valore maggiore significa un'immagine più grande.
labelUn'etichetta conservata nei metadati. Non viene disegnata sull'immagine.

Sagome e capacità

Ogni sagoma contiene una quantità diversa (byte UTF-8). Usa square per contenuti lunghi; qualsiasi forma va bene per link brevi.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — lascia che sia l'IA a crearlo

Collegalo a un client IA come Claude e crea i codici direttamente nella conversazione. L'endpoint è https://mcp.wiacode.com/mcp e non serve alcuna chiave.

Configurazione di Claude Desktop

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

Se il tuo client supporta direttamente Streamable HTTP, basta fornirgli l'URL.

Strumenti

strumentocosa fa
get_wia_code_infoSpiega cos'è un WIA Code, in cosa differisce da un codice QR e la capacità di ogni sagoma. Chiamarlo per primo riduce gli errori.
generate_wia_codeTrasforma il testo in un'immagine codice. Se supera la capacità, indica quali sagome andrebbero bene.
generate_wia_code_wifiCredenziali Wi-Fi — la scansione connette alla rete senza digitare la password.
generate_wia_code_cardUn contatto come vCard standard — la scansione propone di salvarlo in rubrica.
generate_wia_code_eventUn evento come iCalendar standard — la scansione lo aggiunge al calendario.

Limiti gratuiti

Se ti serve di più — per emissione in blocco, partnership o uso commerciale, inviaci un'email. Ti daremo una chiave che alza il limite. 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.

Altro

Apri il generatore →

WIA Code è un prodotto di SmileStory Co., Ltd. Il booster QR è una guida che aiuta anche chi non ha lo scanner dedicato a leggerlo.