Art Blocks Media Proxy API

Serves static PNG renders of Art Blocks token artwork captured by a headless browser. These are the canonical static images used on the Art Blocks platform and by NFT marketplaces. Images are accessible at a predictable URL pattern keyed by chain ID, contract address, and token ID.

OpenAPI Specification

art-blocks-media-proxy-api.json Raw ↑
{
  "openapi": "3.1.0",
  "info": {
    "title": "Art Blocks Media Proxy API",
    "description": "Serves static PNG renders of Art Blocks token artwork captured by a headless browser. These are the canonical static images used on the Art Blocks platform and by NFT marketplaces. Images are accessible at a predictable URL pattern keyed by chain ID, contract address, and token ID.",
    "version": "1.0.0",
    "contact": {
      "name": "Art Blocks Developer Documentation",
      "url": "https://docs.artblocks.io/developer/token-and-generator-apis/"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "https://www.apache.org/licenses/LICENSE-2.0"
    }
  },
  "servers": [
    {
      "url": "https://media-proxy.artblocks.io",
      "description": "Production (Ethereum, Arbitrum One, Base)"
    },
    {
      "url": "https://media-proxy.staging.artblocks.io",
      "description": "Staging (Sepolia testnet)"
    }
  ],
  "paths": {
    "/{chainId}/{contractAddress}/{tokenId}.png": {
      "get": {
        "operationId": "getTokenStaticImage",
        "summary": "Get static PNG render of token artwork",
        "description": "Returns a static PNG image of the Art Blocks token artwork, captured by a headless browser executing the generative script. This is the canonical static image used on artblocks.io and by NFT marketplaces for thumbnail display.",
        "tags": [
          "Media"
        ],
        "parameters": [
          {
            "name": "chainId",
            "in": "path",
            "required": true,
            "description": "Chain ID of the network. Use 1 for Ethereum, 42161 for Arbitrum One, 8453 for Base.",
            "schema": {
              "type": "integer",
              "enum": [1, 42161, 8453],
              "example": 1
            }
          },
          {
            "name": "contractAddress",
            "in": "path",
            "required": true,
            "description": "Ethereum address of the Art Blocks core contract.",
            "schema": {
              "type": "string",
              "pattern": "^0x[a-fA-F0-9]{40}$",
              "example": "0x99a9b7c1116f9ceeb1652de04d5969cce509b069"
            }
          },
          {
            "name": "tokenId",
            "in": "path",
            "required": true,
            "description": "The ERC-721 token ID (without .png extension in the parameter value).",
            "schema": {
              "type": "integer",
              "example": 385000000
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Static PNG image of the token's generative artwork.",
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "302": {
            "description": "Redirect to the cached image CDN URL.",
            "headers": {
              "Location": {
                "schema": {
                  "type": "string",
                  "format": "uri"
                },
                "description": "URL of the cached image."
              }
            }
          },
          "400": {
            "description": "Invalid parameters.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Token image not found or not yet rendered.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Human-readable error message."
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Media",
      "description": "Static image media proxy endpoints."
    }
  ],
  "externalDocs": {
    "description": "Art Blocks Developer Documentation",
    "url": "https://docs.artblocks.io/developer/token-and-generator-apis/"
  }
}