Search icons programmatically. All endpoints return JSON. No authentication required.
/api/icons/search
Search icons by name across all icon sets. Supports full-text search, trigram similarity, and synonym matching.
q
—
Search query (required)
set
—
Filter by icon set code, e.g. fluentui, material, phosphor, tabler, lucide, solar (repeatable) — see /api/icon-sets for all codes
size
—
Filter by size, e.g. 16, 20, 24, 28, 32, 48 (most sets are scalable)
style
—
Filter by style: outline, filled, thin, light, regular, bold, rounded, sharp, duotone, line-duotone, broken, color, brands (varies by set)
limit
—
Max results (default: 50, max: 100)
format
—
Response format: json (default), compact, text
/api/icons/:id
Get a single icon by ID. Returns full metadata including filenames, platform identifiers, categories, phrases, and SVG URLs for all sizes.
/api/icon-sets
List all available icon sets with metadata: styles, sizes, license, color methods, icon count, plus each set's description and notes (e.g. whether its served SVGs are normalized from upstream).
The format parameter on /api/icons/search controls the response shape:
json
—
Full response: id, icon_set, name, style, style_color_method, sizes, ios/android identifiers, svg_url
compact
—
Minimal JSON: icon_set, name, style, url
text
—
Plain text, one icon per line (most token-efficient for AI)
Key fields in the JSON response:
style_color_method
—
How to set icon color via CSS: "fill", "stroke", or "multicolor" (not recolorable)
svg_url
—
Relative URL to the SVG file (e.g., /icons/fluentui/regular/ic_fluent_calendar_24_regular.svg)
ios
—
iOS/Swift identifier per size (e.g., {"24": "calendar24Solid"})
android
—
Android/Kotlin identifier per size (e.g., {"24": "ic_heroicons_calendar_24_solid"})
/icons/:icon_set/:style/:filename
Serve an icon SVG file. Cached for 1 year with immutable header.
Response: image/svg+xml/api/mcp/version
MCP client version contract: the accepted latest and min_supported versions of the MCP server, plus an optional message and changelog URL. The MCP server checks this at startup to warn when an update is available. This endpoint stays backward-compatible so the signal survives changes elsewhere.
/api/maintenance/:task
Trigger a maintenance task. Requires X-API-Key header. Rate limited to 5 requests per 5 minutes.
Use POST /api/maintenance/sync/:icon_set to sync a specific set (e.g., fontawesome, fluentui).
task
—
Task to run: sync, clean, cube
X-API-Key
—
API key (header, required)
Every response also carries the current MCP version contract as headers, so clients learn about updates even from an error response:
X-MCP-Latest
—
Newest published MCP version.
X-MCP-Min-Supported
—
Oldest MCP version still accepted; below this a client should upgrade.
For AI assistants and LLMs, use the text format for maximum token efficiency. We also provide an MCP server for direct integration with Claude Desktop and Claude Code.
{
"mcpServers": {
"pure-admin-icons": {
"command": "npx",
"args": ["-y", "-p", "@keenmate/pure-admin-icons-mcp", "pure-admin-icons-mcp"]
}
}
}
curl 'https://icons.pureadmin.io/api/icons/search?q=calendar&format=text'
curl 'https://icons.pureadmin.io/api/icons/search?q=pen&size=24&limit=5'
curl 'https://icons.pureadmin.io/api/icons/search?q=arrow&set=heroicons&set=lucide&set=fontawesome'
curl 'https://icons.pureadmin.io/api/icons/5403'
curl 'https://icons.pureadmin.io/api/icon-sets'
const res = await fetch('https://icons.pureadmin.io/api/icons/search?q=calendar&format=compact');
const { results } = await res.json();
console.log(results.map(i => `${i.icon_set}/${i.name}`));
curl -X POST -H "X-API-Key: your-key" 'https://icons.pureadmin.io/api/maintenance/sync/fontawesome'