Reference documentation for routes, request formats, and response structures. Actions requiring the player's private key are not included in this documentation. For those operations, use the @skinsprotocol/sdk.
Base URL (staging)
https://sdk-api-production-07d0fe8b0717.herokuapp.com/0x + 40 hex characters.parseBigInt.{ "error": "message" }.POST routes that perform writes use the server operator wallet, not the end-user's key.Base (mainnet)0xef7f7820a001aabAc5E0979b175C9ff8Af3Dd4ec0xBeAfD8600ee870Bb3D5BbE5d248DBBE3FA2B82f0POST routes are signed with the server operator wallet, not the end-user’s key. For player-wallet flows, use `@skinsprotocol/sdk` in the client.
balanceOfReturns an account's token balance for the given ERC-20 contract.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/token/balance-ofPath
/v1/token/balance-ofInputs
**Query:** `tokenAddress: 0x{string}`, `account: 0x{string}`
Response 200
{ "balance": "<decimal string>" }allowanceReturns the amount of tokens the owner has allowed the spender to transfer on their behalf.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/token/allowancePath
/v1/token/allowanceInputs
**Query:** `tokenAddress: 0x{string}`, `owner: 0x{string}`, `spender: 0x{string}`
Response 200
{ "allowance": "<decimal string>" }transferFromTransfers tokens from `from` to `to` using allowance, executed by the operator wallet.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/token/transfer-fromPath
/v1/token/transfer-fromInputs
**Body:** `tokenAddress: 0x{string}`, `from: 0x{string}`, `to: 0x{string}`, `amount: <decimal string>`
Response 200
{ "transactionHash": "0x…" }The `owned-count` route is implemented for **ERC-721** only. Marketplace approval via POST `/v1/nfts/approve` uses the marketplace address from chain deployments for the configured `CHAIN`.
grantMinterGrants the minter role on the NFT collection contract (operator-signed).
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/grant-minterPath
/v1/nfts/grant-minterInputs
**Body:** `contractAddress: 0x{string}`, `minter: 0x{string}`
Response 200
{ "transactionHash": "0x…" }mintMints a new token to `to` with the given `tokenURI`; returns transaction hash, metadata CID, and decimal string `tokenId`.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/mintPath
/v1/nfts/mintInputs
**Body:** `contractAddress: 0x{string}`, `to: 0x{string}`, `tokenURI: string`
Response 200
{ "transactionHash", "metadataCid", "tokenId" } — `tokenId` is a decimal stringbalanceOfReturns how many ERC-721 tokens `account` holds for the collection at `contractAddress`.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/owned-count/:contractAddress/:accountPath
/v1/nfts/owned-count/:contractAddress/:accountInputs
**Path:** `contractAddress: 0x{string}`, `account: 0x{string}`
Response 200
{ "balance": "<decimal string>" }ownerOfReturns the owner wallet for a specific `tokenId` in the collection.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/owner/:contractAddress/:tokenIdPath
/v1/nfts/owner/:contractAddress/:tokenIdInputs
**Path:** `contractAddress: 0x{string}`, `tokenId: <decimal string>`
Response 200
{ "owner": "0x…" }isApprovedForAllReturns whether `operator` is approved to move all tokens of `owner` for this ERC-721 collection.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/is-approved-for-all/:contractAddress/:owner/:operatorPath
/v1/nfts/is-approved-for-all/:contractAddress/:owner/:operatorInputs
**Path:** `contractAddress: 0x{string}`, `owner: 0x{string}`, `operator: 0x{string}`
Response 200
{ "isApprovedForAll": boolean }getApprovedReturns the single-token approval address for `tokenId`, if set.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/nfts/approved/:contractAddress/:tokenIdPath
/v1/nfts/approved/:contractAddress/:tokenIdInputs
**Path:** `contractAddress: 0x{string}`, `tokenId: <decimal string>`
Response 200
{ "approved": "0x…" }These routes are read-only. Writes (`createAsk`, `acceptBid`, etc.) are available on `@skinsprotocol/sdk` with the user’s signing wallet. Ask/bid objects serialize bigints as decimal strings and include `tokenId`, `amount`, `currency`, `pricePerUnit`, `deadline`, `isActive`, plus `seller` (ask) or `buyer` (bid).
getCollectionTypeReturns the marketplace collection type for the NFT collection address.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/marketplace/collection-type/:contractAddressPath
/v1/marketplace/collection-type/:contractAddressInputs
**Path:** NFT collection `contractAddress: 0x{string}`
Response 200
{ "collectionType": number }getRoyaltyReturns royalty receiver and fraction for the given token in the collection.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/marketplace/royalty/:contractAddress/:tokenIdPath
/v1/marketplace/royalty/:contractAddress/:tokenIdInputs
**Path:** `contractAddress: 0x{string}`, `tokenId: <number>`
Response 200
{ "royalty": { "receiver", "royaltyFraction" } } — fraction as decimal stringgetAskFetches a single ask listing by collection address and ask identifier.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/marketplace/asks/:contractAddress/:askIdPath
/v1/marketplace/asks/:contractAddress/:askIdInputs
**Path:** collection `contractAddress: 0x{string}`, `askId: <number>`
Response 200
{ "ask": { … } }getBidFetches a single bid by collection address and bid identifier.
URL
https://sdk-api-production-07d0fe8b0717.herokuapp.com/v1/marketplace/bids/:contractAddress/:bidIdPath
/v1/marketplace/bids/:contractAddress/:bidIdInputs
**Path:** collection `contractAddress: 0x{string}`, `bidId: <number>`
Response 200
{ "bid": { … } }