Loading icons...

API

Search icons programmatically. All endpoints return JSON. No authentication required.

Icons

GET /api/icons/search

Search icons by name across all icon sets. Supports full-text search, trigram similarity, and synonym matching.

Parameters
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
GET /api/icons/:id

Get a single icon by ID. Returns full metadata including filenames, platform identifiers, categories, phrases, and SVG URLs for all sizes.

Icon Sets

GET /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).

Response Formats

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)

Response Fields

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

Other Endpoints

GET /api/health

Health check. Returns icon count and status.

GET /icons/:icon_set/:style/:filename

Serve an icon SVG file. Cached for 1 year with immutable header.

Response: image/svg+xml
GET /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.

POST /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).

Parameters
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.

AI / LLM Integration

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.

MCP Server (Claude Desktop / Claude Code)

{
  "mcpServers": {
    "pure-admin-icons": {
      "command": "npx",
      "args": ["-y", "-p", "@keenmate/pure-admin-icons-mcp", "pure-admin-icons-mcp"]
    }
  }
}

LLM-friendly endpoint

curl 'https://icons.pureadmin.io/api/icons/search?q=calendar&format=text'

Machine-readable docs

/llms.txt · /.well-known/ai-plugin.json

Usage Examples

Search icons

curl 'https://icons.pureadmin.io/api/icons/search?q=pen&size=24&limit=5'

Filter by multiple icon sets

curl 'https://icons.pureadmin.io/api/icons/search?q=arrow&set=heroicons&set=lucide&set=fontawesome'

Get icon detail

curl 'https://icons.pureadmin.io/api/icons/5403'

List icon sets

curl 'https://icons.pureadmin.io/api/icon-sets'

JavaScript

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}`));

Trigger sync (authenticated)

curl -X POST -H "X-API-Key: your-key" 'https://icons.pureadmin.io/api/maintenance/sync/fontawesome'