API Reference
Complete reference for the GetIllustrations REST API. Search, browse, and download 35,000+ illustrations and 1,200+ icons programmatically.
Base URL and getting started
All API requests use this base URL:
Append the endpoint path to the base URL. For example, to search:
Step 1: Create an API key from your dashboard.
Step 2: Include your key in the Authorization header:
const response = await fetch('https://getillustrations.com/api/v1/plugin/search?q=business', {
headers: { 'Authorization': 'Bearer gi_pro_your_key_here' }
});
const data = await response.json();
Step 3: Parse the JSON response and use the asset URLs in your application.
API key setup and usage
Every API request must include your API key in the Authorization header:
API keys are prefixed by tier: gi_included_ (bundle holders), gi_pro_ (Pro), gi_ent_ (Enterprise).
POST /auth
Authenticate with email and password to get an access token (used by the Figma plugin).
| Parameter | Type | Description | |
|---|---|---|---|
| string | required | Your account email | |
| password | string | required | Your account password |
Returns a JWT access token. Include in subsequent requests as Authorization: Bearer {token}.
Access requirements and tiers
API access is a premium feature. To protect our assets from unauthorized distribution, API access is available only to:
| Customer Type | API Access | Calls/Month |
|---|---|---|
| Illustration All Access | Included | 1,500 |
| Icons All Access | Included | 1,500 |
| Ultimate Bundle | Included | 1,500 |
| Pro API (add-on) | $49/month | 100,000 |
| Enterprise API | Custom | Unlimited |
| Free account | No access | — |
| Individual pack purchase | No access | — |
Find illustrations and icons
Unified search across all illustrations and icons using Meilisearch.
| Parameter | Type | Description | |
|---|---|---|---|
| q | string | required | Search query (min 2 characters) |
| type | string | illustration, icon, or all (default) | |
| limit | number | Max results, 1-50 (default 20) |
GET /api/v1/plugin/search?q=business&type=illustration&limit=10
// Response
{
"hits": [
{ "id": "123", "name": "Business Meeting", "thumbnail": "https://..." }
],
"total": 245
}
Browse and list illustration packs
| Parameter | Type | Description | |
|---|---|---|---|
| featured | boolean | Filter featured packs only | |
| free | boolean | Filter free packs only | |
| styleId | number | Filter by illustration style ID | |
| page | number | Page number (default 1) | |
| limit | number | Items per page, max 100 (default 20) |
| Parameter | Type | Description | |
|---|---|---|---|
| packId | number | required | Pack ID (URL path) |
| page | number | Page number | |
| limit | number | Items per page |
Returns illustration objects with id, name, tags, thumbnail, and packName.
Browse and list icon packs
| Parameter | Type | Description | |
|---|---|---|---|
| featured | boolean | Filter featured only | |
| free | boolean | Filter free only | |
| page | number | Page number | |
| limit | number | Items per page |
| Parameter | Type | Description | |
|---|---|---|---|
| packId | string | required | Icon pack UUID (URL path) |
| page | number | Page number | |
| limit | number | Items per page |
Download individual assets
| Parameter | Type | Description | |
|---|---|---|---|
| type | string | required | illustration or icon |
| packId | string | required | Pack ID |
| assetId | string | required | Asset ID |
| format | string | svg (default) or png | |
| size | string | PNG size: small, medium, large, xl, original |
Save and manage favorite assets
Returns all packs, icon packs, and illustrations the user has favorited.
| Parameter | Type | Description | |
|---|---|---|---|
| type | string | required | pack, iconPack, or illustration |
| id | string | required | Item ID to favorite/unfavorite (toggle) |
Usage limits and headers
| Tier | Calls/Month | Price | Downloads |
|---|---|---|---|
| Included (Bundle) | 1,500 | Included with bundle | Full quality SVG + PNG |
| Pro API | 100,000 | $49/month | Full quality SVG + PNG |
| Enterprise | Unlimited | Custom | Full quality + SLA |
Rate limit information is included in every response header:
X-RateLimit-Remaining: 1423
X-RateLimit-Reset: 2026-04-01T00:00:00Z
HTTP status codes and error responses
200 OK 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 429 Rate Limited
{
"error": "Rate limit exceeded",
"code": "RATE_LIMITED",
"retryAfter": 3600
}
Available download formats via API
| Format | Available via API | Notes |
|---|---|---|
| SVG | Yes | Full scalable vector |
| PNG 1x | Yes | Standard resolution |
| PNG 2x | Yes | Retina / HiDPI |
| Thumbnails | Yes | Low-res for UI previews |
| AI / Source | No | Download from website only |
| IconJar | No | Download from website only |
Integration examples
const API_KEY = 'gi_pro_your_key_here';
const BASE = 'https://getillustrations.com/api/v1/plugin';
const res = await fetch(`${BASE}/search?q=teamwork&limit=5`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const { hits } = await res.json();
// Download an SVG
const dl = await fetch(`${BASE}/download/illustration/${packId}/${assetId}?format=svg`, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
const svgContent = await dl.text();
API_KEY = 'gi_pro_your_key_here'
BASE = 'https://getillustrations.com/api/v1/plugin'
headers = {'Authorization': f'Bearer {API_KEY}'}
# Search
r = requests.get(f'{BASE}/search', params={'q': 'nature'}, headers=headers)
results = r.json()
# List packs
r = requests.get(f'{BASE}/packs', params={'limit': 10}, headers=headers)
packs = r.json()
curl -H "Authorization: Bearer gi_pro_xxx" \
"https://getillustrations.com/api/v1/plugin/search?q=business"
# List icon packs
curl -H "Authorization: Bearer gi_pro_xxx" \
"https://getillustrations.com/api/v1/plugin/icon-packs?limit=5"
We’ve prepared something special for you
- 25% Discount code: Hunters25Off
- A special illustration pack for product hunt And your stack - Free Download