Genera un WIA Code en una sola línea. No necesitas una clave dentro de los límites gratuitos.
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 potenciador siempre está incluido. No hay opción para desactivarlo — lo mismo aplica para la API, MCP y CLI. "Cuando el uso acumulado llegue a 100 millones de veces, el potenciador se separa y tu propio logo ocupa su lugar" es una promesa del producto, así que no hicimos ninguna excepción para ninguna vía. Los parámetros de codificación (grid, bpc, bridge) también están fijos en el servidor.
npx wiacode "https://wiacode.com" --shape heart
Se ejecuta de inmediato en Node 18 o posterior, sin instalación. No tiene dependencias, así que descargarlo toma solo unos 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
Tres tipos listos para usar. No hace falta armar las cadenas de texto manualmente: se pasan los campos y el servidor genera contenido Wi-Fi / vCard / iCalendar estándar, idéntico byte a byte al que produce el generador de este sitio.
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"
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
| type | obligatorio | opcional |
|---|---|---|
| wifi | ssid, password | security (WPA·WEP·nopass), hidden |
| card | name | org, tel, email |
| event | title, start | end, location, desc |
Las horas se indican como "2026-09-01 19:00". Para una red Wi-Fi abierta, se pasa security=nopass y se omite la contraseña. Si falta un campo o tiene un formato incorrecto, la respuesta es un HTTP 400 con un mensaje que indica cuál es el campo — no se genera ninguna imagen, así que una solicitud incorrecta nunca ocupa un turno de generación.
Una línea por código. Si se alcanza el límite de solicitudes, el proceso espera y continúa en lugar de detenerse a mitad de camino, e informa las líneas fallidas con su número real dentro del archivo.
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"}
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 respuesta es image/png. Agrega ?format=json para obtener base64 y 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"}'
Puedes llamarla directamente desde una aplicación web en cualquier origen. Es una API pública que no usa cookies, por lo que CORS está abierto.
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,...
curl https://wiacode.com/api/v1/shapes
| nombre | obligatorio | descripción |
|---|---|---|
| text | ✓ | El texto o URL a codificar. Es mejor acortar primero las URLs largas. |
| type | — | wifi · card · event. Se indica en lugar de text — el servidor arma la cadena estándar a partir de los campos. Ver la sección Tipos más arriba. |
| shape | — | Silueta (por defecto heart). Consulta la tabla más abajo. |
| cellPx | — | Píxeles por celda (3–20, por defecto 8). Un valor mayor genera una imagen más grande. |
| label | — | Una etiqueta que se guarda en los metadatos. No se dibuja en la imagen. |
Cada silueta admite una cantidad distinta (bytes UTF-8). Usa square para contenido largo; cualquier forma sirve para enlaces cortos.
| shape | bytes | shape | bytes |
|---|---|---|---|
| square | 1450 | rose | 586 |
| round | 1093 | clover | 521 |
| hex | 861 | star | 386 |
| heart | 854 | boomerang | 386 |
Conéctalo a un cliente de IA como Claude y generará códigos directamente en la conversación. El endpoint es https://mcp.wiacode.com/mcp y no se requiere clave.
{
"mcpServers": {
"wiacode": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.wiacode.com/mcp"]
}
}
}
Si tu cliente admite Streamable HTTP directamente, solo indícale la URL.
| herramienta | qué hace |
|---|---|
| get_wia_code_info | Explica qué es un WIA Code, en qué se diferencia de un código QR y la capacidad de cada silueta. Llamarla primero reduce los fallos. |
| generate_wia_code | Convierte texto en una imagen de código. Si excede la capacidad, indica qué siluetas sí encajarían. |
| generate_wia_code_wifi | Credenciales de Wi-Fi — al escanear, el dispositivo se conecta a la red sin necesidad de escribir la contraseña. |
| generate_wia_code_card | Un contacto como vCard estándar — al escanear, se ofrece guardarlo en los contactos del celular. |
| generate_wia_code_event | Un evento como iCalendar estándar — al escanear, se agrega al calendario. |
503. Simplemente vuelve a llamar en breve.429 junto con la cantidad de segundos que debes esperar.Si necesitas más — para emisión masiva, alianzas o uso comercial, envíanos un correo. Te daremos una clave que eleva el límite. wiasoom@smilestory.ai
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.
WIA Code es un producto de SmileStory Co., Ltd. El QR potenciador es una guía que también ayuda a leerlo a quienes no tienen el escáner dedicado.