Développeurs — API · MCP · CLI

Créez un WIA Code en une ligne. Aucune clé n'est nécessaire dans les limites gratuites.

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.

Le QR booster est toujours inclus. Il n'y a aucune option pour le désactiver — c'est la même chose pour l'API, le MCP et le CLI. « Lorsque l'utilisation cumulée atteindra 100 millions de fois, le booster se détachera et votre propre logo prendra sa place » est une promesse du produit, donc nous n'avons fait d'exception pour aucune voie. Les paramètres d'encodage (grid, bpc, bridge) sont également fixés côté serveur.

CLI — une ligne, sans installation

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

Fonctionne directement sur Node 18 ou supérieur, sans installation. Il n'a aucune dépendance, donc le récupérer prend quelques secondes.

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

Types — Wi-Fi, carte de contact, événement

Trois types prêts à l'emploi. Vous n'avez pas à assembler les chaînes vous-même : transmettez les champs et le serveur produit un contenu Wi-Fi / vCard / iCalendar standard, identique octet pour octet à celui du générateur de ce site.

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

Champs

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

Les horaires s'écrivent « 2026-09-01 19:00 ». Pour un réseau Wi-Fi ouvert, passez security=nopass et omettez le mot de passe. Un champ manquant ou mal formé renvoie un HTTP 400 nommant le champ — aucune image n'est générée, une requête incorrecte n'occupe donc jamais un créneau de rendu.

Plusieurs à la fois

Une ligne par code. En cas de limite par minute, l'outil attend et poursuit au lieu de s'arrêter en chemin, et signale les lignes en échec avec leur numéro de ligne réel.

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 réponse est image/png. Ajoutez ?format=json pour obtenir le base64 et les métadonnées 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"}'

Appel depuis le navigateur

Vous pouvez l'appeler directement depuis une application web sur n'importe quelle origine. C'est une API publique qui n'utilise pas de cookies, donc CORS est ouvert.

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

Paramètres

nomrequisdescription
textLe texte ou l'URL à encoder. Mieux vaut raccourcir d'abord les URL longues.
typewifi · card · event. À envoyer à la place de text — le serveur assemble la chaîne standard à partir des champs. Voir la section Types ci-dessus.
shapeSilhouette (par défaut heart). Voir le tableau ci-dessous.
cellPxPixels par cellule (3–20, par défaut 8). Plus la valeur est grande, plus l'image est grande.
labelUne étiquette conservée dans les métadonnées. Elle n'est pas dessinée sur l'image.

Silhouettes et capacité

Chaque silhouette contient une quantité différente (octets UTF-8). Utilisez square pour un contenu long ; n'importe quelle forme convient pour les liens courts.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — laissez l'IA le créer

Connectez-le à un client IA comme Claude et il créera des codes directement dans la conversation. Le point de terminaison est https://mcp.wiacode.com/mcp et aucune clé n'est requise.

Configuration de Claude Desktop

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

Si votre client prend en charge Streamable HTTP directement, indiquez-lui simplement l'URL.

Outils

outilfonction
get_wia_code_infoExplique ce qu'est un WIA Code, en quoi il diffère d'un code QR, et la capacité de chaque silhouette. Appeler ceci en premier réduit les échecs.
generate_wia_codeTransforme un texte en image de code. S'il dépasse la capacité, il indique quelles silhouettes conviendraient.
generate_wia_code_wifiIdentifiants Wi-Fi — le scan connecte au réseau sans saisir le mot de passe.
generate_wia_code_cardUn contact au format vCard standard — le scan propose de l'enregistrer dans le répertoire.
generate_wia_code_eventUn événement au format iCalendar standard — le scan l'ajoute au calendrier.

Limites gratuites

Si vous avez besoin de plus — pour une émission en masse, des partenariats ou un usage commercial, envoyez-nous un e-mail. Nous vous donnerons une clé qui relève la 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.

Plus

Ouvrir le générateur →

WIA Code est un produit de SmileStory Co., Ltd. Le QR booster est un guide qui aide aussi les personnes sans scanner dédié à le lire.