Pixel Joint APIpixeljoint.com ↗
Access Pixel Joint gallery listings and artwork details via API. Filter by canvas size, sort results, and retrieve metadata for individual pixel art pieces.
What is the Pixel Joint API?
The Pixel Joint API provides 2 endpoints to browse and inspect pixel art from the Pixel Joint community gallery. Use list_artworks to retrieve paginated gallery listings with artist names, engagement counts, and thumbnail URLs, or call get_artwork_details with a numeric artwork ID to get the full-resolution image URL, canvas dimensions, and post date for a specific piece.
curl -X GET 'https://api.parse.bot/scraper/11bcd060-1932-4804-87d3-d71211832c9b/list_artworks?dim=10&dimo=%3E%3D&page=1&sort=rating&keyword=dragon' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace pixeljoint-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Pixel Joint API — browse pixel art by size, drill into details."""
from parse_apis.pixeljoint_com_api import PixelJoint, Sort, DimOperator, ArtworkNotFound
client = PixelJoint()
# List newest artworks, capped to 5 total items
for art in client.artwork_summaries.list(sort=Sort.DATE, limit=5):
print(art.title, art.artist, art.thumbnail_width, art.thumbnail_height)
# Filter to large canvases (>= 96px) sorted by rating
for art in client.artwork_summaries.list(sort=Sort.RATING, dim="96", dimo=DimOperator.GTE, limit=3):
print(art.title, art.favorites)
# Drill into one artwork for full canvas dimensions
summary = client.artwork_summaries.list(sort=Sort.RATING, limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.canvas_width, detail.canvas_height, detail.image_url)
# Fetch a specific artwork by ID
try:
artwork = client.artworks.get(artwork_id="17123")
print(artwork.title, artwork.canvas_width, artwork.canvas_height)
except ArtworkNotFound as exc:
print(f"Artwork not found: {exc.artwork_id}")
print("exercised: artwork_summaries.list / summary.details / artworks.get")
List pixel artworks from the Pixel Joint gallery with optional sorting and canvas size filtering. Results are paginated with 24 artworks per page. Use the dim and dimo parameters to filter artworks by canvas dimensions — for example, dimo='>=' with dim='96' returns artworks whose canvas is at least 96 pixels. Results are auto-iterated across pages.
| Param | Type | Description |
|---|---|---|
| dim | string | Canvas dimension filter value. Accepted values: 10, 16, 32, 48, 50, 64, 96. Represents the pixel dimension threshold for filtering (e.g. 96 means 96x96). |
| dimo | string | Canvas dimension comparison operator used with dim. Accepted values: '>=', '=', '<='. |
| page | integer | Page number (1-based). |
| sort | string | Sort order for results. |
| keyword | string | Keyword to filter artworks by title. |
{
"type": "object",
"fields": {
"page": "integer",
"sort": "string",
"artworks": "array of artwork summary objects with artwork_id, url, thumbnail_url, title, artist, comments, favorites, date_added",
"total_pages": "integer"
},
"sample": {
"data": {
"page": 1,
"sort": "date",
"artworks": [
{
"url": "https://pixeljoint.com/pixelart/164313.htm",
"title": "Medieval march",
"artist": "Yavor984",
"comments": 1,
"favorites": 0,
"artist_url": "https://pixeljoint.com/p/269281.htm",
"artwork_id": "164313",
"date_added": "7/4/2026 11:26",
"thumbnail_url": "https://pixeljoint.com/files/icons/sprite026023r.png",
"thumbnail_width": 64,
"thumbnail_height": 64
}
],
"total_pages": 84
},
"status": "success"
}
}About the Pixel Joint API
Gallery Listings
The list_artworks endpoint returns up to 24 artworks per page, each represented as a summary object containing artwork_id, title, artist, thumbnail_url, url, comments, favorites, and date_added. Use the page parameter for pagination and keyword to filter results by title. The sort parameter controls result ordering, and the dim / dimo pair lets you filter by canvas size — for example, setting dimo to >= and dim to 96 returns only artworks on canvases 96 pixels or larger. Accepted dim values are 10, 16, 32, 48, 50, 64, and 96.
Artwork Details
The get_artwork_details endpoint accepts a numeric artwork_id (found in Pixel Joint URLs such as pixeljoint.com/pixelart/17123.htm) and returns a single artwork record with fields including title, artist, artist_url, image_url (full resolution), canvas_width, canvas_height, date_posted, comments, and favorites. The canvas_width and canvas_height fields reflect the actual pixel art canvas size, not any display or thumbnail scaling.
Coverage Notes
Both endpoints reflect the public Pixel Joint gallery. The list_artworks response includes total_pages alongside the current page value, so you can iterate through the full gallery programmatically. Artwork IDs are stable and map directly to the canonical Pixel Joint URL scheme.
The Pixel Joint API is a managed, monitored endpoint for pixeljoint.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when pixeljoint.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official pixeljoint.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a pixel art discovery feed filtered to small canvases (e.g., 16x16 icons) using the
dimanddimoparameters. - Archive pixel art metadata — titles, artists, post dates, and engagement stats — for a community dataset.
- Populate a curated gallery by sorting and filtering
list_artworksresults and displayingthumbnail_urlimages. - Track artist activity by collecting
artwork_idvalues and fetchingartist_urlfromget_artwork_details. - Build a canvas-size histogram across the Pixel Joint gallery using
canvas_widthandcanvas_heightfields. - Monitor community engagement trends by collecting
commentsandfavoritescounts across paginated results. - Search for artworks matching a specific subject by passing a
keywordtolist_artworksand resolving full details per result.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Pixel Joint have an official developer API?+
How does canvas size filtering work in `list_artworks`?+
dim to one of the accepted dimension values (10, 16, 32, 48, 50, 64, or 96) and dimo to a comparison operator (>=, =, or <=). Both parameters must be provided together. For example, dim=32&dimo== returns only artworks with a canvas exactly 32 pixels in the relevant dimension.Does `get_artwork_details` return individual pixel color data or the raw sprite sheet?+
image_url, which is a URL to the full-resolution image file, along with canvas_width and canvas_height. Per-pixel color data or raw sprite sheets are not part of the response. You can fork this API on Parse and revise it to add an endpoint that fetches and parses the image for per-pixel data.Is artist profile data — such as bio, total artwork count, or follower count — available?+
artist (name) and artist_url per artwork, but dedicated artist profile endpoints are not included. You can fork it on Parse and revise to add an artist profile endpoint that returns profile-level stats.How fresh is the gallery data, and is there a way to get only recently added artworks?+
list_artworks endpoint includes date_added in each artwork summary, and the sort parameter can order results to surface newer work. The API reflects Pixel Joint's current public gallery state, but there is no explicit date-range filter parameter at this time.