Maak een WIA Code met één regel. Binnen de gratis limiet is geen sleutel nodig.
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.
De booster-QR is altijd inbegrepen. Er is geen optie om hem uit te schakelen — dat geldt evengoed voor de API, MCP en CLI. "Zodra het cumulatieve gebruik 100 miljoen keer bereikt, splitst de booster zich af en komt uw eigen logo op zijn plaats" is een belofte van het product, dus we hebben geen uitzondering gemaakt voor één specifiek pad. Encoderingsparameters (grid, bpc, bridge) liggen ook op de server vast.
npx wiacode "https://wiacode.com" --shape heart
Werkt meteen op Node 18 of nieuwer, zonder installatie. Er zijn geen afhankelijkheden, dus het ophalen duurt maar een paar seconden.
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
Drie kant-en-klare typen. Je hoeft de tekenreeksen niet zelf samen te stellen: geef de velden door en de server bouwt standaard wifi-/vCard-/iCalendar-inhoud, byte voor byte gelijk aan wat de generator op deze site maakt.
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 | verplicht | optioneel |
|---|---|---|
| wifi | ssid, password | security (WPA·WEP·nopass), hidden |
| card | name | org, tel, email |
| event | title, start | end, location, desc |
Tijden hebben de vorm "2026-09-01 19:00". Geef bij een open wifinetwerk security=nopass door en laat het wachtwoord weg. Ontbrekende of onjuiste velden komen terug als HTTP 400 met de naam van het veld — er wordt geen afbeelding gemaakt, dus een foute aanvraag bezet nooit een renderplek.
Eén regel per code. Bij de limiet per minuut wacht het en gaat het door in plaats van halverwege te stoppen, en mislukte regels worden gemeld met hun echte regelnummer.
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
Het antwoord is image/png. Voeg ?format=json toe om base64 en metadata als JSON te krijgen.
curl -X POST 'https://wiacode.com/api/v1/code?format=json' \
-H 'Content-Type: application/json' \
-d '{"text":"https://wiacode.com","shape":"square"}'
Je kunt het rechtstreeks aanroepen vanuit een webapp op elke origin. Het is een publieke API die geen cookies gebruikt, dus CORS staat open.
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
| naam | verplicht | beschrijving |
|---|---|---|
| text | ✓ | De tekst of URL om te coderen. Lange URL's kun je beter eerst inkorten. |
| type | — | wifi · card · event. Wordt in plaats van text meegegeven — de server stelt de standaardtekst uit de velden samen. Zie het onderdeel Typen hierboven. |
| shape | — | Silhouet (standaard heart). Zie de tabel hieronder. |
| cellPx | — | Pixels per cel (3–20, standaard 8). Groter betekent een grotere afbeelding. |
| label | — | Een label dat in de metadata bewaard blijft. Wordt niet op de afbeelding getekend. |
Elk silhouet bevat een andere hoeveelheid (UTF-8-bytes). Gebruik square voor lange inhoud; voor korte links werkt elke vorm.
| shape | bytes | shape | bytes |
|---|---|---|---|
| square | 1450 | rose | 586 |
| round | 1093 | clover | 521 |
| hex | 861 | star | 386 |
| heart | 854 | boomerang | 386 |
Verbind hem met een AI-client zoals Claude en er worden codes gemaakt, rechtstreeks in het gesprek. Het endpoint is https://mcp.wiacode.com/mcp en er is geen sleutel nodig.
{
"mcpServers": {
"wiacode": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.wiacode.com/mcp"]
}
}
}
Als uw client Streamable HTTP rechtstreeks ondersteunt, geeft u gewoon de URL op.
| tool | wat het doet |
|---|---|
| get_wia_code_info | Legt uit wat een WIA Code is, hoe hij verschilt van een QR-code en wat de capaciteit van elk silhouet is. Dit eerst aanroepen vermindert fouten. |
| generate_wia_code | Zet tekst om in een codeafbeelding. Als de capaciteit wordt overschreden, wordt aangegeven welke silhouetten wél zouden passen. |
| generate_wia_code_wifi | Wifigegevens — scannen verbindt met het netwerk zonder het wachtwoord te typen. |
| generate_wia_code_card | Een contact als standaard-vCard — na scannen biedt de telefoon aan het op te slaan. |
| generate_wia_code_event | Een afspraak als standaard-iCalendar — na scannen komt die in de agenda. |
503. Probeer het gewoon zo weer opnieuw.429, samen met het aantal seconden wachten.Als u meer nodig heeft — voor bulkuitgifte, partnerships of commercieel gebruik, mail ons. We geven u een sleutel die de limiet verhoogt. 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 is een product van SmileStory Co., Ltd. De booster-QR is een hulpmiddel waarmee ook mensen zonder speciale scanner de code kunnen lezen.