Desenvolvedores — API · MCP · CLI

Crea un WIA Code nunha liña. Non fai falta clave dentro dos límites gratuítos.

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.

O QR potenciador está sempre incluído. Non hai opción para desactivalo — o mesmo vale para a API, o MCP e a CLI. "Cando o uso acumulado chegue a 100 millóns de veces, o potenciador separarase e o teu propio logo ocupará o seu lugar" é unha promesa do produto, así que non fixemos ningunha excepción para ningunha vía. Os parámetros de codificación (grid, bpc, bridge) tamén están fixados no servidor.

CLI — unha liña, sen instalación

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

Execútase directamente en Node 18 ou posterior, sen instalación. Non ten dependencias, así que descargalo leva uns segundos.

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

Tipos — Wi-Fi, tarxeta de contacto, evento

Tres tipos xa preparados. Non tes que montar as cadeas ti mesmo — pasa os campos e o servidor constrúe contido estándar de Wi-Fi / vCard / iCalendar, idéntico byte a byte ao que produce o xerador deste sitio.

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

Campos

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

As horas van en formato "2026-09-01 19:00". Para unha rede Wi-Fi aberta, pasa security=nopass e omite o contrasinal. Os campos ausentes ou mal formados devolven un HTTP 400 cunha mensaxe que nomea o campo — non se renderiza ningunha imaxe, así que unha petición incorrecta nunca ocupa unha praza de renderizado.

Varios á vez

Unha liña por código. Cando se acada o límite de taxa, espera e continúa en vez de deterse a metade, e informa das liñas fallidas co seu número de liña 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

A resposta é image/png. Engade ?format=json para obter base64 e metadatos en JSON.

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

Chamada desde o navegador

Podes chamala directamente desde unha aplicación web en calquera orixe. É unha API pública que non usa cookies, así que CORS está aberto.

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ámetros

nomeobrigatoriodescrición
textO texto ou a URL a codificar. É mellor acurtar antes as URL longas.
typewifi · card · event. Dáse no canto de text — o servidor monta a cadea estándar a partir dos campos. Consulta a sección Tipos de arriba.
shapeSilueta (por defecto heart). Ver a táboa de abaixo.
cellPxPíxeles por cela (3–20, por defecto 8). Canto maior, máis grande a imaxe.
labelUnha etiqueta que se garda nos metadatos. Non se debuxa na imaxe.

Siluetas e capacidade

Cada silueta admite unha cantidade distinta (bytes UTF-8). Usa square para contido longo; calquera forma serve para ligazóns curtas.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — deixa que a IA o faga

Conéctao a un cliente de IA como Claude e creará códigos directamente na conversa. O endpoint é https://mcp.wiacode.com/mcp e non require clave.

Configuración de Claude Desktop

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

Se o teu cliente admite Streamable HTTP directamente, só tes que darlle a URL.

Ferramentas

ferramentafunción
get_wia_code_infoExplica que é un WIA Code, en que se diferencia dun código QR e a capacidade de cada silueta. Chamar a isto primeiro reduce os fallos.
generate_wia_codeConverte texto nunha imaxe de código. Se excede a capacidade, indica que siluetas encaixarían.
generate_wia_code_wifiCredenciais de Wi-Fi — ao escanear conéctase á rede sen ter que escribir o contrasinal.
generate_wia_code_cardUn contacto como vCard estándar — ao escanear ofrécese gardalo nos contactos do teléfono.
generate_wia_code_eventUn evento como iCalendar estándar — ao escanear engádese ao calendario.

Límites gratuítos

Se necesitas máis — para emisión masiva, alianzas ou uso comercial, envíanos un correo. Daremosche unha clave que aumenta o límite. 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áis

Abrir o xerador →

WIA Code é un produto de SmileStory Co., Ltd. O QR potenciador é unha guía que tamén axuda a lelo a quen non ten o escáner dedicado.