NFT Testnet Assets
Get up and running quickly with our NFT API.
NFT - Testnet Assets
When a user creates a new company or a new user signs up with Venly Developer Portal, an NFT contract (Memberships example) is automatically created for them on the Polygon testnet chain. Additionally, three token-types are also created under the NFT contract namely:
- Brownze Membership
- Silver Membership
- Gold Membership
Each token type has predefined properties that resemble membership tiers. Depending on the tier, each membership token type has different properties associated with it: Bronze, Silver, and Gold.
You can immediately use the token-types to mint NFTs to wallet/email addresses.
If you mint an NFT to a user's email and they don't have a wallet, they will receive an onboarding link. Once they complete the onboarding process and create their wallet, the NFT will automatically appear in their wallet.

NFT Testnet Assets
Authentication
Learn more on how to authenticate with API's.
How to access your assets
Follow this short API tutorial, which walks you through all the basic API calls required to access your NFT contract and token types. We also explain how to mint NFTs using APIs.
1. Retrieve your NFT contract
Call the following endpoint to retrieve your NFT contract. This endpoint retrieves all of your NFT contracts, but as a new user, you will only have one contract, the testnet NFT contract.
Request Endpoint: reference
GET /api/v3/erc1155/contracts
Response Body:
Save the following params for later use:
result.address
which is the contract address.
{
"success": true,
"result": [
{
"chain": "MATIC",
"address": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"contractUri": "https://metadata-qa.venly.io/metadata/contracts/16707",
"name": "Memberships example",
"symbol": "MEEX",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"onChainStatus": "SUCCEEDED"
}
]
}
2. Retrieve token-types
Now you should have the contract address
of your NFT contract. We will retrieve the token-types under the Memberships example NFT contract.
Call the following endpoint to retrieve all token-types for your specific NFT contract:
Request Endpoint: reference
GET /api/v3/erc1155/contracts/{chain}/{contractAddress}/token-types
Parameter | Param Type | Description |
---|---|---|
chain | Path | The blockchain of the NFT contract, in this case it is MATIC |
contractAddress | Path | The value of the contract address that you copied from the previous API call. |
Example API Call:
GET /api/v3/erc1155/contracts/MATIC/0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea/token-types
Response Body:
Save the following params for later use:
result.tokenTypeId
which is the ID of the token-type and will be used when minting NFTs.- Each token-type has a unique
tokenTypeId
{
"success": true,
"result": [
{
"chain": "MATIC",
"contractAddress": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"tokenTypeId": 1,
"name": "Bronze Membership",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Bronze.png",
"imagePreview": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Bronze.png",
"imageThumbnail": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Bronze.png",
"fungible": false,
"onChainStatus": "SUCCEEDED",
"supply": {
"current": 0,
"pending": 0,
"max": 1000000000
}
},
{
"chain": "MATIC",
"contractAddress": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"tokenTypeId": 2,
"name": "Silver Membership",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Silver.png",
"imagePreview": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Silver.png",
"imageThumbnail": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Silver.png",
"fungible": false,
"onChainStatus": "SUCCEEDED",
"supply": {
"current": 0,
"pending": 0,
"max": 1000000000
}
},
{
"chain": "MATIC",
"contractAddress": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"tokenTypeId": 3,
"name": "Gold Membership",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imagePreview": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imageThumbnail": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"fungible": false,
"onChainStatus": "SUCCEEDED",
"supply": {
"current": 0,
"pending": 0,
"max": 1000000000
}
}
]
}
3. Mint NFTs
Now you should have your contract address
and the tokenTypeId
of one of the token-types. Using these values, we can mint NFTs. We will mint the NFT to the testnet Polygon wallet in this example.
Learn how to retrieve your testnet Polygon wallet address.
Call the following endpoint mint NFTs:
Request Endpoint: reference
POST /api/v3/erc1155/tokens/mints
Request Body:
Parameter | Param Type | Description | Data Type | Mandatory |
---|---|---|---|---|
contractAddress | Body | The value of the contract address that you copied from the first API call. | String | ✅ |
chain | Body | The blockchain of the contract, in this case it is MATIC | String | ✅ |
tokenTypeId | Body | The ID of the token-type to mint NFTs. In our API call we got 1 for Bronze, 2 for Silver, and 3 for Gold. | Integer | ✅ |
destinations | Body | An array of objects includes the wallet address or email address where the token will be sent and the number of tokens to send. | Array[objects] | ✅ |
destinations.address | Body | Wallet address or email address where minted tokens will be sent | String | ✅ |
destinations.amount | Body | Amount of tokens to be minted and sent to specified address | Integer | ✅ |
{
"contractAddress": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"chain": "MATIC",
"tokenTypeId": "3",
"destinations": [
{
"address": "0x24743eC0cB7f56Ee0Acca527D7945e17559B5d6B",
"amount": "1"
}
]
}
You can define multiple objects within the
destinations
array to mint multiple NFTs to multiple wallet/email addresses.
Response Body:
Save the following params for later use:
result.mints.id
which is the mintId and is used to track the status of the mint request.
{
"success": true,
"result": {
"mints": [
{
"id": "82b24d61-0e0e-4afb-bbdf-e69c754df75d",
"createdOn": "2025-03-13T17:09:40.084509687",
"status": "PENDING",
"destination": {
"address": "0x24743ec0cb7f56ee0acca527d7945e17559b5d6b",
"amount": 1
}
}
],
"metadata": {
"name": "Gold Membership",
"description": "[Dummy] The highest tier, offering exclusive privileges such as VIP access, priority support, special rewards, and enhanced perks. Gold members may receive early access to new features, private events, or exclusive content. Ideal for those seeking the full premium experience.",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imagePreview": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imageThumbnail": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"externalUrl": "https://www.venly.io",
"external_url": "https://www.venly.io",
"animationUrls": [],
"attributes": [
{
"type": "property",
"name": "Access level",
"value": "Full",
"traitType": "Access level",
"trait_type": "Access level"
},
{
"type": "property",
"name": "Support priority",
"value": "VIP",
"traitType": "Support priority",
"trait_type": "Support priority"
},
{
"type": "system",
"name": "tokenTypeId",
"value": "3",
"traitType": "Token Type ID",
"trait_type": "Token Type ID"
},
{
"type": "property",
"name": "maxSupply",
"value": "1000000000",
"traitType": "Max Supply",
"trait_type": "Max Supply"
}
],
"contract": {
"address": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"name": "Memberships example",
"symbol": "MEEX",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"imageUrl": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"image_url": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"description": "[Dummy contract] The Memberships NFT Smart Contract is a blockchain-based system that allows users to mint, own, and trade exclusive Gold, Silver, and Bronze membership NFTs. Each membership tier grants unique benefits, creating a decentralized and verifiable way to manage access to exclusive services, communities, or events.",
"externalLink": "https://www.venly.io",
"external_link": "https://www.venly.io",
"externalUrl": "https://www.venly.io",
"external_url": "https://www.venly.io",
"media": [],
"type": "ERC_1155"
},
"fungible": false
}
}
}
4. Check status of the mint request
Call the endpoint to check the on-chain status of your mint request.
Request Endpoint: reference
GET /api/v3/erc1155/tokens/mints/{mintId}
Parameter | Param Type | Description |
---|---|---|
mintId | Path | The mintId that you got from the response body of the previous mint call as result.mints.id |
Example API Call:
GET /api/v3/erc1155/tokens/mints/82b24d61-0e0e-4afb-bbdf-e69c754df75d
Response Body:
In the response, you can see the
result.status
is SUCCEEDED, meaning the NFT was successfully minted and sent to the wallet address.
{
"success": true,
"result": {
"id": "82b24d61-0e0e-4afb-bbdf-e69c754df75d",
"chain": "MATIC",
"contractAddress": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"tokenTypeId": 3,
"tokenId": 4,
"createdOn": "2025-03-13T17:09:40.08451",
"status": "SUCCEEDED",
"transactionHash": "0x3ab9325f32448513c1dbc9fed072b70527a83c1cdce5ff2abbed3aa75a479e08",
"destination": {
"address": "0x24743ec0cb7f56ee0acca527d7945e17559b5d6b",
"amount": 1
},
"metadata": {
"name": "Gold Membership",
"description": "[Dummy] The highest tier, offering exclusive privileges such as VIP access, priority support, special rewards, and enhanced perks. Gold members may receive early access to new features, private events, or exclusive content. Ideal for those seeking the full premium experience.",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imagePreview": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"imageThumbnail": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Gold.png",
"externalUrl": "https://www.venly.io",
"external_url": "https://www.venly.io",
"animationUrls": [],
"attributes": [
{
"type": "property",
"name": "Access level",
"value": "Full",
"traitType": "Access level",
"trait_type": "Access level"
},
{
"type": "property",
"name": "Support priority",
"value": "VIP",
"traitType": "Support priority",
"trait_type": "Support priority"
},
{
"type": "system",
"name": "tokenTypeId",
"value": "3",
"traitType": "Token Type ID",
"trait_type": "Token Type ID"
},
{
"type": "property",
"name": "maxSupply",
"value": "1000000000",
"traitType": "Max Supply",
"trait_type": "Max Supply"
},
{
"type": "property",
"name": "mintNumber",
"value": "1",
"traitType": "Mint Number",
"trait_type": "Mint Number"
}
],
"contract": {
"address": "0x506c9f3c7cc72672c9f8f6c3675d16cd89192fea",
"name": "Memberships example",
"symbol": "MEEX",
"image": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"imageUrl": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"image_url": "https://storage-staging.venly.io/applications/0f3c2b67-b141-4db5-86db-a51e8f4331a7/Membership_Contract.png",
"description": "[Dummy contract] The Memberships NFT Smart Contract is a blockchain-based system that allows users to mint, own, and trade exclusive Gold, Silver, and Bronze membership NFTs. Each membership tier grants unique benefits, creating a decentralized and verifiable way to manage access to exclusive services, communities, or events.",
"externalLink": "https://www.venly.io",
"external_link": "https://www.venly.io",
"externalUrl": "https://www.venly.io",
"external_url": "https://www.venly.io",
"media": [],
"type": "ERC_1155"
},
"fungible": false
}
}
}
Viewing Minted NFT on Portal
In this example, we minted the NFT to the Polygon testnet wallet. From the Portal, when we go to Wallet API, and click on the Polygon wallet and then go to the NFTs tab, we can see our minted NFT!
Next Steps
Following are a few basic guides that you should try next to experiment with the NFT API:
Updated about 14 hours ago