Dezvoltatori — API · MCP · CLI

Creează un WIA Code într-o singură linie. Nu ai nevoie de cheie în limitele gratuite.

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.

Booster QR este mereu inclus. Nu există opțiune de dezactivare — la fel și pentru API, MCP și CLI. „Când utilizarea cumulată ajunge la 100 de milioane, boosterul se separă și în locul lui apare propriul tău logo” este o promisiune a produsului, așa că nu am făcut excepție pentru nicio cale. Parametrii de codare (grid, bpc, bridge) sunt fixați și pe server.

CLI — o singură linie, fără instalare

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

Rulează imediat pe Node 18 sau mai nou, fără instalare. Nu are dependențe, deci descărcarea durează câteva secunde.

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

Tipuri — Wi-Fi, card de contact, eveniment

Trei tipuri gata pregătite. Nu trebuie să asamblați dumneavoastră șirurile — trimiteți câmpurile, iar serverul construiește conținutul standard Wi-Fi/vCard/iCalendar, identic octet cu octet cu ceea ce produce generatorul de pe acest 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

Câmpuri

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

Orele sunt scrise "2026-09-01 19:00". Pentru o rețea Wi-Fi deschisă, trimiteți security=nopass și omiteți parola. Câmpurile lipsă sau incorect formatate sunt returnate ca HTTP 400 cu un mesaj care indică numele câmpului — nu se generează nicio imagine, deci o cerere incorectă nu ocupă niciodată un loc de randare.

Mai multe deodată

O linie pentru fiecare cod. La atingerea limitei de rată, așteaptă și continuă în loc să se oprească la jumătate, iar liniile eșuate sunt raportate cu numărul lor real de linie.

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"}

REST API

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

Răspunsul este image/png. Adaugă ?format=json pentru a primi base64 și metadate ca JSON.

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

Apelarea din browser

O poți apela direct dintr-o aplicație web de pe orice origine. Este un API public care nu folosește cookie-uri, astfel încât CORS este deschis.

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

Parametri

numeobligatoriudescriere
textTextul sau URL-ul de codat. URL-urile lungi e mai bine să fie scurtate mai întâi.
typewifi · card · event. Dat în locul lui text — serverul asamblează șirul standard din câmpuri. Vezi secțiunea Tipuri de mai sus.
shapeSiluetă (implicit heart). Vezi tabelul de mai jos.
cellPxPixeli per celulă (3–20, implicit 8). Cu cât mai mare, cu atât imaginea e mai mare.
labelO etichetă păstrată în metadate. Nu este desenată pe imagine.

Siluete și capacitate

Fiecare siluetă are o capacitate diferită (bytes UTF-8). Folosește square pentru conținut lung; orice siluetă merge pentru linkuri scurte.

shapebytesshapebytes
square1450rose586
round1093clover521
hex861star386
heart854boomerang386

MCP — lasă AI-ul să-l creeze

Conectează-l la un client AI precum Claude și codurile se creează direct în conversație. Endpoint-ul este https://mcp.wiacode.com/mcp și nu necesită cheie.

Configurare Claude Desktop

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

Dacă clientul tău suportă direct Streamable HTTP, e suficient să introduci acest URL.

Instrumente

instrumentce face
get_wia_code_infoExplică ce este un WIA Code, cum diferă de un cod QR și care e capacitatea fiecărei siluete. Apelarea acestuia primul reduce eșecurile.
generate_wia_codeTransformă textul într-o imagine cod. Dacă depășește capacitatea, îți spune ce siluete s-ar potrivi.
generate_wia_code_wifiDatele de acces Wi-Fi — scanarea se conectează la rețea fără a introduce parola.
generate_wia_code_cardUn contact ca vCard standard — scanarea propune salvarea lui în contactele telefonului.
generate_wia_code_eventUn eveniment ca iCalendar standard — scanarea îl adaugă în calendar.

Limite gratuite

Dacă ai nevoie de mai mult — pentru emitere în masă, parteneriate sau uz comercial, trimite-ne un e-mail. Îți vom da o cheie care ridică limita. 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.

Mai multe

Deschide generatorul →

WIA Code este un produs SmileStory Co., Ltd. Booster QR este un ghid care ajută și persoanele fără scaner dedicat să îl citească.