Pattern Monster API
An API for repeatable SVG patterns. Fetch pattern metadata as JSON, or ready-to-use SVG with your own colors, scale, angle and stroke. All requests need
an API key - create a free account and generate one in settings. Requests go to
https://api.pattern.monster/v1; that machine-only host has no login page. CORS is enabled, so you can call it straight from the browser. If
you use it in something public, a link back to pattern.monster is appreciated.
Endpoints
| Endpoint | Description |
|---|---|
GET /v1/patterns | List patterns. Supports tag, q (search), limit (max 100) and offset. |
GET /v1/patterns/{slug} | One pattern: metadata, parameter ranges, rendered SVG, seamless tile and a CSS background-image snippet. |
GET /v1/patterns/{slug}/svg | Raw SVG (image/svg+xml). Add tile=true for a single seamless tile at natural size. |
GET /v1/tags | All tags with pattern counts. |
Customization parameters
Both the pattern detail and SVG endpoints accept the same query parameters. Anything you leave out falls back to the pattern's defaults, and
out-of-range values are clamped - the response's applied field tells you what was actually used. Each pattern's valid ranges are in its
ranges field.
| Parameter | Description | Example |
|---|---|---|
colors | Comma-separated hex colors, no #. First color is the background. 8-digit hex sets opacity. | colors=1e293b,38bdf8,f472b6 |
stroke | Stroke width, clamped to the pattern range. | stroke=2 |
scale | Pattern scale, clamped to the pattern range. | scale=3 |
angle | Rotation in degrees, 0 to 360. | angle=45 |
spacingX / spacingY | Extra spacing between tiles, clamped to the pattern range. | spacingX=5 |
join | 1 for square line caps, 2 for round joins (patterns with join support). | join=2 |
tile | SVG endpoint only: true returns one seamless tile instead of a full-bleed document. | tile=true |
Examples
# List patterns tagged "waves"
curl -H "x-api-key: YOUR_KEY" "https://api.pattern.monster/v1/patterns?tag=waves"
# Pattern with custom colors, as JSON (includes svg, svgTile and css fields)
curl -H "x-api-key: YOUR_KEY" "https://api.pattern.monster/v1/patterns/waves-1?colors=1e293b,38bdf8,f472b6,facc15,4ade80&stroke=2&scale=3&angle=25"
# Raw SVG, ready to save or embed
curl -H "x-api-key: YOUR_KEY" "https://api.pattern.monster/v1/patterns/waves-1/svg?colors=1e293b,38bdf8,f472b6,facc15,4ade80&stroke=2&scale=3&angle=25" -o waves.svg
# Single seamless tile (?key= works where headers are not an option, e.g. <img> tags)
curl "https://api.pattern.monster/v1/patterns/waves-1/svg?key=YOUR_KEY&tile=true&colors=1e293b,38bdf8,f472b6,facc15,4ade80&stroke=2&scale=3&angle=25" -o waves-tile.svgModel Context Protocol (MCP)
Connect an AI assistant to Pattern Monster at https://mcp.pattern.monster/mcp. The server provides read-only tools for searching
patterns, reading pattern details, rendering customized SVG, and listing tags. OAuth-capable clients will open Pattern Monster so you can sign in and
approve access—no API key needs to be copied.
In ChatGPT, Codex, or another OAuth-capable MCP client, add the server URL above and follow the sign-in prompt. Clients that only support custom headers can use the API-key configuration below.
{
"mcpServers": {
"pattern-monster": {
"url": "https://mcp.pattern.monster/mcp",
"headers": {
"Authorization": "Bearer YOUR_PATTERN_MONSTER_API_KEY"
}
}
}
} Never place an API key in a tool argument or URL. Whether you connect with OAuth or an API key, each tool call consumes one request from the same account-level monthly quota as REST. Protocol setup and tool discovery do not consume monthly quota, but authenticated MCP requests are burst-limited.
API keys, rate limits & premium patterns
Every request needs an API key. Generate one for free in your account settings, then send it as an
x-api-key header, an Authorization: Bearer header, or a ?key= query parameter. A key from a
Pattern Monster Pro account gets a larger monthly quota and unlocks all premium patterns through the API.
| Tier | Monthly quota | Premium patterns |
|---|---|---|
| Free account key | 500 requests / month | - |
| Pro key | 50,000 requests / month | Included |
Quotas reset at the start of each month (UTC); every response reports usage in X-Quota-Used / X-Quota-Remaining
headers, and your settings page shows it too. Limits of 60 requests per minute and 10 requests per 10 seconds apply to every key. The API is free for personal
and commercial projects - responses are cacheable, so please cache on your side rather than calling per page view.