# OP Mainnet NFT Metadata Lookup

> OP Mainnet NFT Metadata Lookup is a paid API for AI agents from ca-tax-api-mainnet.lxtap.workers.dev, paid per call via x402, $0.008/call, status unknown (last checked 2026-10-23).

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

## Facts

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

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-e15078ed
```

Example prompt: Can you pull up the metadata and image for token ID 1234 from the Optimism NFT contract at 0x4200000000000000000000000000000000000042? I want to see the collection name, who owns it, and the image.

## When to prefer this

Use this endpoint when you need comprehensive NFT metadata for a specific token on OP Mainnet (Optimism), including off-chain metadata resolution from IPFS, Arweave, or HTTPS sources. Prefer this over generic blockchain RPCs when you need the full decoded metadata JSON and a ready-to-use image URL without writing your own URI resolution logic. Choose the Ethereum sibling endpoint for Ethereum mainnet NFTs.

## Known failure modes

- Invalid contract address format returns a validation error
- Token ID does not exist on the contract returns not-found error
- IPFS or Arweave metadata gateway timeout causes incomplete metadata response
- Contract is not an ERC-721 or ERC-1155 token returns an error
- Network or RPC unavailability for OP Mainnet causes fetch failure

## How this service works

Pay-per-call data for AI agents, paid in USDC on Base with x402: token risk checks (rug check) on Base, Ethereum, Arbitrum, Optimism, Polygon and Solana, onchain reads (balances, transactions, gas, contracts, NFTs, whale trades, new pools, ENS and Basenames), ECB exchange rates, and Canadian sales tax and business days.

## Output

Returns the collection name, current owner address (for ERC-721), token URI, decoded metadata JSON (resolved from IPFS, Arweave, HTTPS, or inline data URI), and a browser-loadable image URL for the specified NFT on OP Mainnet.

## 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-e15078ed/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ca-tax-api-mainnet.lxtap.workers.dev](https://www.zero.xyz/host/ca-tax-api-mainnet.lxtap.workers.dev/llms.txt)
