Icon Maker
Share
The icon maker is on the app’s page in the portal. It has three tabs: Upload Image, Icon and Emoji. What an icon was made from is remembered, so the maker shows it again the next time.
Upload Image
Section titled “Upload Image”Choose an image, crop it to a square, and it is saved as a 512 x 512 WebP (or JPEG where the browser cannot encode WebP). The browser removes metadata before uploading.
Through the API, send the bytes yourself: exactly 512 x 512 pixels, WebP or JPEG, at most 400 KB, no EXIF, XMP or ICC.
curl -s -X POST https://accounts.aidenkt.com/api/agent/apps/$APP_ID/icon -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: image/webp" --data-binary @icon.webp201 {"ok": true, "iconUrl": "…/….webp", "iconSpec": null}
Icon From the Pack
Section titled “Icon From the Pack”Search the pack, pick an icon, pick a Background from the palette, and choose Save Icon. KT Accounts draws the icon itself as an SVG: the background colour filling a square, the icon centred in Black or Tech White, whichever reads on that colour.
The pack holds:
- the KT mark (
kt:mark); - KT Accounts’ own line icons (
kt:passkey,kt:mail,kt:agent,kt:device,kt:phone,kt:shield,kt:key,kt:settings,kt:pencil,kt:sprout,kt:code,kt:person,kt:list,kt:check); - the badge icons (
badge:aiden,badge:sysadmin,badge:partner,badge:friend,badge:developer,badge:agent,badge:test); - 214 icons from Phosphor Icons, regular weight (
ph:<name>, for exampleph:notebook). Phosphor Icons are MIT licensed.
Through the API:
curl -s -X PUT https://accounts.aidenkt.com/api/agent/apps/$APP_ID/icon -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"kind":"glyph","glyph":"ph:notebook","background":"early-purple"}'201 {"ok": true, "iconUrl": "…/….svg", "iconSpec": {"kind": "glyph", "glyph": "ph:notebook", "background": "early-purple"}}
The canonical agent guide lists every glyph key.
Type one emoji, pick a Background, and choose Save Icon. The emoji is drawn in the browser (only the browser has the emoji font) and uploaded like an image.
Through the API, draw the emoji on the palette colour yourself at 512 x 512 and upload it with two query parameters:
curl -s -X POST "https://accounts.aidenkt.com/api/agent/apps/$APP_ID/icon?emoji=%F0%9F%93%9D&background=early-purple" \ -H "Authorization: Bearer $TOKEN" -H "Content-Type: image/webp" --data-binary @icon.webpThe app then remembers iconSpec: {"kind": "emoji", "emoji": "📝", "background": "early-purple"}. 400 invalid_emoji unless the value is exactly one emoji. Sending {"kind": "emoji"} to the PUT endpoint answers 400 emoji_needs_image.
Remove the Icon
Section titled “Remove the Icon”Remove Icon in the portal, or:
curl -s -X DELETE https://accounts.aidenkt.com/api/agent/apps/$APP_ID/icon -H "Authorization: Bearer $TOKEN"200 {"ok": true, "iconUrl": null}. The remembered iconSpec is forgotten too.
Limits
Section titled “Limits”10 icon changes an hour per app. App icons and in-app pictures share a daily upload budget, with a share of 40 a day per person.
| Error | Meaning |
|---|---|
400 invalid_glyph |
Not a key from the pack |
400 invalid_color |
The background is not a palette key |
400 invalid_icon_kind |
kind is not glyph |
400 invalid_emoji, emoji_needs_image |
See Emoji above |
413 too_large |
Over 400 KB |
415 invalid_image |
Not an acceptable image; reason says why |