# OP Mainnet NFT Metadata Lookup

> OP Mainnet NFT Metadata Lookup is a paid API for AI agents from onchaincheck.dev, paid per call via x402, $0.008/call, status unknown (last checked 2026-10-29).

Fetches full metadata for an ERC-721 or ERC-1155 token on OP Mainnet, including collection name, owner, token URI, and decoded metadata with a browser-loadable image URL.

## Facts

- Endpoint: GET https://onchaincheck.dev/optimism/nft?utm_source=zero.xyz
- Price: $0.008/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/op-mainnet-nft-metadata-lookup-7aeba6ba
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_xFTtSJZ_4SpL3J2GMJZYS

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability op-mainnet-nft-metadata-lookup-7aeba6ba
```

Example prompt: Can you pull up the full metadata for NFT token ID 1043 from contract 0x4857DB576eE0e45F10525eC59527BfD10beeC60b on OP Mainnet — I want to know the collection name, current owner, and see the image?

## When to prefer this

Choose this endpoint when you need complete, decoded NFT metadata for a specific token on OP Mainnet (Optimism), including image resolution from IPFS, Arweave, or inline data URIs. Prefer this over generic blockchain RPC calls when you need a human-readable, browser-ready result without writing custom decoding logic. Use this instead of the Base or Polygon PoS equivalents when the NFT contract is deployed specifically on Optimism.

## Known failure modes

- Invalid contract address format returns a validation error
- Token ID out of range or non-existent token returns a not-found error
- IPFS or Arweave gateway timeout if metadata is hosted on a slow or unavailable node
- Contract exists but does not implement ERC-721 or ERC-1155 returns a standard-detection error
- Token URI points to an unreachable or malformed metadata endpoint

## How this service works

Metadata for an ERC-721 or ERC-1155 token on OP Mainnet: collection name, current owner (ERC-721), token URI, and the metadata JSON fetched and decoded from IPFS, Arweave, HTTPS or an inline data URI, with a browser-loadable image URL.

## Output

Returns a JSON object with the chain (optimism), contract address, token ID, NFT standard (ERC-721 or ERC-1155), collection name, current owner address (for ERC-721), raw token URI, a browser-loadable imageUrl, and a fully decoded metadata object (name, description, image, attributes) resolved from IPFS, Arweave, HTTPS, or inline data URIs, along with the source it was fetched from.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "contract",
      "tokenId"
     ],
     "properties": {
      "tokenId": {
       "type": "string",
       "pattern": "^\\d{1,78}$",
       "description": "Token id as a decimal string"
      },
      "contract": {
       "type": "string",
       "pattern": "^0x[0-9a-fA-F]{40}$",
       "description": "NFT collection contract on OP Mainnet"
      }
     },
     "additionalProperties": false
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "chain": "optimism",
  "owner": "0xc2EEdF3bC7F93366c00c6074DF0e6F122fa2445c",
  "tokenId": "1043",
  "contract": "0x4857DB576eE0e45F10525eC59527BfD10beeC60b",
  "imageUrl": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLz… (240 chars, truncated in this example)",
  "metadata": {
   "name": "CL - USDC/ETH - 2397.1<>2421.2",
   "image": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAwIiBoZWlnaHQ9IjQwMCIgdmlld0JveD0iMCAwIDQwMCA0MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLz… (240 chars, truncated in this example)",
   "description": "This NFT represents a liquidity position in a Velodrome Finance USDC-ETH pool. The owner of this NFT can modify or redeem the position.\n\nPool Address: 0xca231d91ec00385a54e541f504617d2197f9b7c3\nUSDC A… (240 chars, truncated in this example)"
  },
  "standard": "ERC-721",
  "tokenUri": "data:application/json;base64,eyJuYW1lIjo…",
  "collection": "Slipstream V3 Deposit",
  "fetchedFrom": "inline data URI"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/op-mainnet-nft-metadata-lookup-7aeba6ba/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from onchaincheck.dev](https://www.zero.xyz/host/onchaincheck.dev/llms.txt)
