Code Snippets
Different ways to token gate
NFT Ownership
User owns 2 ERC721 NFTs
This example verifies that an address holds exactly 2 NFTs from the Bored Ape Yacht Club collection.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc721",
"contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"minBalance": 2,
"maxBalance": 2
}
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc721',
'contractAddress': '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
'minBalance': 2,
'maxBalance': 2
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));User owns at least 1 ERC1155 with a specific token ID
This example verifies that an address holds at least one NFT from the Crypto Baristas collection.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc1155",
"contractAddress": "0xf6793da657495ffeff9ee6350824910abc21356c",
"tokenIds": [
9720425186420365222353899819497168751076639606951250294350818944954633551881,
9720425186420365222353899819497168751076639606951250294350818944954633551883,
9720425186420365222353899819497168751076639606951250294350818944954633551885,
...
],
"minBalance": 1
}
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc1155',
'contractAddress': '0xf6793da657495ffeff9ee6350824910abc21356c',
'tokenIds': [
9720425186420365222353899819497168751076639606951250294350818944954633551881,
9720425186420365222353899819497168751076639606951250294350818944954633551883,
9720425186420365222353899819497168751076639606951250294350818944954633551885,
...
],
'minBalance': 1
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));User owns multiple ERC721 NFTs from different collections
This example verifies that an address holds at least 1 Bored Ape and two ApeDocs NFT.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc721",
"contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"minBalance": 1
},
{
"logic": "and",
"type": "erc721",
"contractAddress": "0x552a43cb61bc127d81b1f280bc39f62e5a51c0c2",
"minBalance": 2
}
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc721',
'contractAddress': '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
'minBalance': 1
},
{
'logic': 'and',
'type': 'erc721',
'contractAddress': '0x552a43cb61bc127d81b1f280bc39f62e5a51c0c2',
'minBalance': 2
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));User owns 1 ERC721 NFT for at least 6 months and 10 days
You cannot have both minTime and minBalance parameters set in the same object request.
This example verifies that an address has held 1 NFT from the Bored Ape Yacht Club collection for at least 6 months and 10 days.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"contractType": "erc721",
"contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"minBalance": 1,
"minTime": "0.6.10.0.0" //format: "years.months.days.hours.minutes"
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'contractType': 'erc721',
'contractAddress': '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
'minBalance': 1,
'minTime': '0.6.10.0.0' //format: 'years.months.days.hours.minutes'
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));User owns 1 ERC721 NFT since the beginning of 2022
minTimestamp must follow format in example below (e.g., 2014-09-08T08:02:17.160Z)
This example verifies that an address has held 1 NFT from the Bored Ape Yacht Club collection since the beginning of 2022.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc721",
"contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"minBalance": 1,
"minTimestamp": "2022-01-01T00:00:00.000Z"
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc721',
'contractAddress': '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
'minBalance': 1,
'minTimestamp': '2022-01-01T00:00:00.000Z'
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));User owns 1 ERC721 NFT with specific metadata attributes
This example verifies that an address holds at least 1 Crypto Punk with two attribute types.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc721",
"contractAddress": "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
"minBalance": 1,
"attributes": [
{
"traitType": "Type",
"value": "Female 2"
},
{
"traitType": "Attribute",
"value": "Wild Blonde"
}
],
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc721',
'contractAddress': '0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D',
'minBalance': 1,
'attributes': [
{
'traitType': 'Type',
'value': 'Female 2'
},
{
'traitType': 'Attribute',
'value': 'Wild Blonde'
}
],
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));javascrToken Ownership
Address owns at least 2 WETH
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc20",
"contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"minBalance": 2
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc20',
'contractAddress': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
'minBalance': 2
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));javascrAddress has held at least 2 WETH for 30 days
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "erc20",
"contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"minBalance": 2,
"minTime": "0.0.30.0.0"
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'erc20',
'contractAddress': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
'minBalance': 2,
'minTime': '0.0.30.0.0'
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));javascrCoin Ownership
Address owns at least 2.5 ETH
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "coin",
"chain": "ethereum"
"network": "mainnet",
"minBalance": 2.5
},
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'coin',
'minBalance': 2.5,
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));javascrCombos
User owns 5 ETH or 2 WETH plus 1 to 4 ERC721 NFTs
This example verifies that an address holds at least 5 ETH or 2 WETH and 1 to 4 ApeDocs NFTs.
curl -X POST https://api.3mint.io/api/v1/tokenGate
-H "Content-Type: application/json"
-H "X-API-KEY: [YOUR_API_KEY]"
-d '{"walletAddress": "0x958fb436dB50DB2F689C364712113cc226b38151",
"chain": "ethereum",
"network": "mainnet",
"requirements": [
{
"type": "coin",
"minBalance": 5
},
{
"logic": "or",
"type": "combo",
"requirements": [
{
"type": "erc20",
"contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"minBalance": 2
},
{
"logic": "and",
"type": "erc721",
"contractAddress": "0x552a43cb61bc127d81b1f280bc39f62e5a51c0c2",
"minBalance": 1,
"maxBalance": 4
}
]
}
]
}'import axios from 'axios';
// replace with your 3mint api key
const apiKey = 'demo';
const url = 'https://api.3mint.io/api/v1/tokenGate';
var requestOptions = {
method: 'POST',
url: `${url}`,
headers: {
'Content-Type': 'application/json',
'X-API-KEY': `${apiKey}`
},
data: {
'walletAddress': '0x958fb436dB50DB2F689C364712113cc226b38151',
'chain': 'ethereum',
'network': 'mainnet',
'requirements': [
{
'type': 'coin',
'minBalance': 5
},
{
'logic': 'or',
'type': 'combo',
'requirements': [
{
'type': 'erc20',
'contractAddress': '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
'minBalance': 2
},
{
'logic': 'and',
'type': 'erc721',
'contractAddress': '0x552a43cb61bc127d81b1f280bc39f62e5a51c0c2',
'minBalance': 1,
'maxBalance': 4
}
]
},
]
}
};
axios(config)
.then(response => console.log(response))
.catch(error => console.log(error));javascrLast updated