# NFT Owner Lookup by Token ID (ERC721)

> NFT Owner Lookup by Token ID (ERC721) is a paid API for AI agents from skills.onesource.io, paid per call via x402, $0.003000/call, status unknown (last checked 2026-09-13).

Returns the current on-chain owner address of a specific ERC721 NFT by querying ownerOf via eth_call

## Facts

- Endpoint: GET https://skills.onesource.io/api/chain/nft-owner
- Price: $0.003000/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/skills-onesource-io-a0427b34
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zf1VYu5Fxb9-nQmCjWXcF

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 skills-onesource-io-a0427b34
```

Example prompt: Who currently owns token ID 4231 from the CryptoPunks contract at 0xb47e3cd837dDF8e4c57F05d70Ab865de6e193BBB on Ethereum mainnet?

## When to prefer this

Use this endpoint when you need the current on-chain owner of a specific ERC721 token and need a simple, low-latency lookup without indexing overhead. Prefer this over NFT marketplace APIs when you need authoritative on-chain data rather than cached or indexed data. Good for verification, compliance, or automation workflows that need real-time ownership state across Ethereum, Base, Avalanche, or Sepolia.

## Known failure modes

- Token ID does not exist (reverted or not minted) — contract call reverts
- Invalid contract address format — 400 validation error
- Network not supported or unavailable — 400 or 503 error
- Contract is not ERC721 or does not implement ownerOf — call reverts or returns unexpected data
- Token has been burned — may revert or return zero address

## How this service works

Look up the current owner of an ERC721 NFT by token_id via ownerOf (eth_call)

## Output

Returns the wallet address of the current owner of the specified ERC721 token, as returned by the on-chain ownerOf function via eth_call on the requested network.

## Example request

```json
{
 "network": "ethereum",
 "contract": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
 "token_id": "1"
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "network": {
   "enum": [
    "ethereum",
    "sepolia",
    "avax",
    "megaeth",
    "megaeth-testnet",
    "base"
   ],
   "type": "string",
   "default": "ethereum"
  },
  "contract": {
   "type": "string",
   "pattern": "^0x[a-fA-F0-9]{40}$"
  },
  "token_id": {
   "type": "string",
   "pattern": "^[0-9]+$"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "data",
  "meta"
 ],
 "properties": {
  "data": {
   "type": "object",
   "required": [
    "owner",
    "token_id",
    "contract_address"
   ],
   "properties": {
    "owner": {
     "type": "string"
    },
    "token_id": {
     "type": "string"
    },
    "contract_address": {
     "type": "string"
    }
   }
  },
  "meta": {
   "type": "object",
   "required": [
    "endpoint",
    "request_id"
   ],
   "properties": {
    "endpoint": {
     "type": "string"
    },
    "request_id": {
     "type": "string"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/skills-onesource-io-a0427b34/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from skills.onesource.io](https://www.zero.xyz/host/skills.onesource.io/llms.txt)
