BUILD WITH YES

Public punk data, fast trait filtering, and YesPunks transformations.

What This Is

The YesPunks API exposes original punk data and the YesPunks transformation layer as public read-only endpoints.

Builders can use it for explorers, bots, visual tools, mint interfaces, smart-contract experiments, and research around the dataset.

The API now also includes a full traits dataset endpoint, making filtering by punk type and attributes much faster and more reliable.

Version one is intentionally simple:
JSON and SVG only.

Rate limited at the edge through Vercel WAF.

Pixel Formats

/api/punks/:id/pixels and /api/yespunks/:id/pixels both return the same grid-based pixel format:
{ w, h, palette, idx }

This makes original punks and YesPunks easier to compare, render, and use in frontend pixel tools.

If you need the unprocessed CryptoPunks RGBA bytes, use /api/punks/:id/raw.

Traits Filtering

/api/punks/traits returns the full normalized punk traits dataset.

You can filter by typeGroup and attributes using query params.

Supported examples:
?attributes=mohawk
?typeGroup=female
?typeGroup=male&attributes=earring,mohawk

Attribute filters are matched against normalized lowercase trait names for consistent results.

Endpoints
Limits

Rate limit: 60 requests / 60 seconds / IP

Formats: JSON, SVG

No auth required in v1

Builder Starter

You can start building with YesPunks in seconds using the official starter template.

The starter includes API integration, SVG rendering, punk data fetching, and a random YesPunk loader.

npx create-yespunks-app my-project
Examples
GET /api/yespunks/3083/pixels

{
  "w": 24,
  "h": 24,
  "palette": ["#fbfbfb", "#12ab34"],
  "idx": [-1, -1, 0, 1, ...]
}
GET /api/punks/622/pixels

{
  "w": 24,
  "h": 24,
  "palette": ["#f7d1c3", "#000000", "#ffffff", ...],
  "idx": [-1, 0, 1, 1, ...]
}
GET /api/punks/traits?attributes=mohawk

{
  "success": true,
  "total": 10000,
  "totalMatches": 441,
  "filters": {
    "typeGroup": null,
    "attributes": ["mohawk"],
    "ids": [],
    "limit": null,
    "offset": 0
  },
  "data": [
    {
      "id": 1,
      "attributesText": "Male 1, Smile, Mohawk",
      "type": "Male 1",
      "typeGroup": "male",
      "attributes": ["Smile", "Mohawk"],
      "attributesNormalized": ["smile", "mohawk"],
      "attributeCount": 2
    }
  ]
}