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.
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
Trois types prêts à l'emploi. Vous n'avez pas à assembler les chaînes vous-même — fournissez les champs et le serveur construit un contenu Wi-Fi / vCard / iCalendar standard, identique octet pour octet à ce que produit le générateur de ce site.
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 | obligatoire | facultatif |
|---|---|---|
| wifi | ssid, password | security (WPA·WEP·nopass), hidden |
| card | name | org, tel, email |
| event | title, start | end, location, desc |
Les heures sont au format « 2026-09-01 19:00 ». Pour un réseau Wi-Fi ouvert, indiquez security=nopass et omettez le mot de passe. Un champ manquant ou mal formé renvoie une erreur HTTP 400 qui nomme le champ en cause — aucune image n'est générée, donc une requête invalide n'occupe jamais de créneau de rendu.
Une ligne par code. En cas de limite de débit, le traitement attend puis continue au lieu de s'arrêter à mi-chemin, et signale les lignes en échec avec leur vrai numéro de ligne.
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 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"}'
Vous pouvez l'appeler directement à partir d'une application Web sur n'importe quelle origine. C'est une API publique qui n'utilise pas de témoins, alors 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,...
curl https://wiacode.com/api/v1/shapes
| nom | obligatoire | description |
|---|---|---|
| text | ✓ | Le texte ou l'URL à encoder. Mieux vaut raccourcir d'abord les URL longues. |
| type | — | wifi · card · event. Fourni à la place de text — le serveur assemble la chaîne standard à partir des champs. Voir la section Types ci-dessus. |
| shape | — | Silhouette (par défaut heart). Voir le tableau ci-dessous. |
| cellPx | — | Pixels par cellule (3–20, par défaut 8). Plus la valeur est grande, plus l'image est grande. |
| label | — | Une étiquette conservée dans les métadonnées. Elle n'est pas dessinée sur l'image. |
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.
| shape | bytes | shape | bytes |
|---|---|---|---|
| square | 1450 | rose | 586 |
| round | 1093 | clover | 521 |
| hex | 861 | star | 386 |
| heart | 854 | boomerang | 386 |
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.
{
"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.
| outil | fonction |
|---|---|
| get_wia_code_info | Explique 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_code | Transforme un texte en image de code. S'il dépasse la capacité, il indique quelles silhouettes conviendraient. |
| generate_wia_code_wifi | Identifiants Wi-Fi — la numérisation connecte au réseau sans avoir à saisir le mot de passe. |
| generate_wia_code_card | Un contact au format vCard standard — la numérisation propose de l'enregistrer dans les contacts du téléphone. |
| generate_wia_code_event | Un événement au format iCalendar standard — la numérisation l'ajoute au calendrier. |
503. Il suffit de réessayer peu après.429 avec le nombre de secondes à attendre.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
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 est un produit de SmileStory Co., Ltd. Le QR booster est un guide qui aide aussi les personnes sans scanner dédié à le lire.