{ "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/" } }