Ultimate NFT Tutorial - Openseas is not able to get metadata from moralis

I followed the Ultimate NFT Tutorial and did the deployment to rinkeby testnet as in the tutorial, follwed by making the contract live on testnet in Opensea. Opensea is able to know correctly that there are two NFTs in the smart contract but beyond that, it is not able to pull any NFT metadata from moralis.
Here is the opensea testnet link:

Here is the rinkeby etherscan link:
The code is exactly as in the tutorial:

pragma solidity ^0.8.0;

// Import ERC1155 token contract from Openzepplin
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC1155/ERC1155.sol";
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol";

contract NFTContract is ERC1155, Ownable {

    // start by implementing list of items we want to have. We want to define those as constant integers. These will not be visible on openseas, only for our internal reference
    uint256 public constant ARTWORK = 0;
    uint256 public constant PHOTO = 1;

    constructor() ERC1155("https://ddcxwsmajwmq.usemoralis.com/{id}.json") {
        _mint(msg.sender, ARTWORK, 1, "");
        _mint(msg.sender, PHOTO, 1, "");

    function mint(address to, uint256 id, uint256 amount) public onlyOwner{
        _mint(to, id, amount, "");

    function burn(address from, uint256 id, uint256 amount) public {
        require(msg.sender == from);
        _burn(from, id, amount);

Please let me know what is going wrong.
Best Regards,

Hi Himanshu

The token uri and metadata seem ok and the paths are also working but when I try to check if with opensea asset validate it is not recognizing the token uri


I guess there is something missing w.r.t Opensea ERC1155 token uri standard.

See if this solution helps

1 Like

Hello @johnversus,
Thanks a bunch for the link. Implementing contractURI solved the issue.


1 Like