Skip to content

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.

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.

Terminal window
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.webp

201 {"ok": true, "iconUrl": "…/….webp", "iconSpec": null}

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 example ph:notebook). Phosphor Icons are MIT licensed.

Through the API:

Terminal window
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:

Terminal window
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.webp

The 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 Icon in the portal, or:

Terminal window
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.

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