Sync NFT MetaData

hi there - we have no eta right now - we will write when its done

2 Likes

Yaa, Outdated NFT Metadata is a huge problem, every collection I try to add, they have outdated metadata, which causes a huge issue, some NFTs have metadata but donā€™t have attributes inside metadata, and some donā€™t have metadata at all.

dApp based on current scenario is not possible. I tried making a workaround for it, by using the token_uri, but token_uri is also outdated, thus couldnā€™t use that to fetch new metadata.

Then I thought of using the Moralis API to resync that particular token, but like if a collection have 10-15 outdated NFTs metadata, then it would rate limit us. And I came to know that we can call the resync API only once at a while in free API, and only two times in Pro API. So thatā€™s not a good solution either, so I am stuck as of now due to that.

Iā€™d like to add my support for this feature. My use case:

10k with Reveal mechanics

Reveal day shows up so I want to update the metadata for all 10k otherwise my users see an old unexciting placeholder while on OpenSea, Rarible and the rest see a beautiful new PFP.

If my math is correct, Iā€™ll need to use 5 (resync) + 5 (update metadata) x 10,000 or 100k requests so they see nice PFPs. Or, send them over to a competitive product. Repeat for each Reveal.

Iā€™d much rather a single call that takes contract_address and updates all its token_idā€™s metadata for say, 10k requests total?

This is how we make sure that our users receive a great experience.

Thanks,

Pat

how did you compute this part? I would think that you only have to call resync 10k times with uri flag, once for every token id

image

My tests show that you have to call resync then call get nft requiring 10 requests per NFT to get its specific updated metadata.

Also noticed this ā€“ Note: /nft/{address}/{token_id}/metadata/resync has a billing cost of 5 and a rate limit cost of 25, meaning that you can call it only once per second with a free plan and twice a second with a Pro plan

I certainly am new to Moralis so if there is a better way, please let me know.

A bigger problem would be that you can call resync metadata only once per second.

Do you control that smart contract that does the reveal?

We do not control contracts but want to make them visible to people who want to present them in galleries.

If you know when a reveal is done you can run resync only after that once

When I know the date, I can schedule a metadata refresh. what Iā€™d like is a single call to Moralis with a contract_address and you guys refresh the meta for all of the token_ids.

1 Like

Moralis is currently working on resyncing of entire collections at once yes.

2 Likes

I guess Iā€™ll do some just-in-time metadata updates when someone views a single NFT until thatā€™s ready. Any kind of rough prediction of availability would really help me plan my roadmap. Thanks!

Great can we get an ETA on this.

@cryptokid Any update on resyncing collections?

1 Like

Moralis now supports refresh for all NFTs automatically Moralis Updates NFT Metadata

@emorling

1 Like

Any idea how to use with unity ?

This is the method i use on a ā€œrefreshā€ button:

public async void resyncMetadata()
    {
        await Moralis.Web3Api.Token.ReSyncMetadata(address: "0x34d85754fbad12eca81e2afe6a7648051574a63c", tokenId: "2", GameManager.ContractChain);

    }

But it doesnt seem to work, its been hours

what exactly doesnā€™t work? what is current output and what is the expected output?

Hi there !
Thanks for the reply !

Between pre-reveal and reveal, the metadata in unity have not changed, but they did on opensea.
I have used this resyncMetadata method on a single token to test the update but nothing happened, it is still the unrevealed uri and metadata.

you have to use the uri flag for that resyncMetadata, it will not work if you donā€™t use uri flag

1 Like

ok thank you, struggling with syntax:

public async void resyncMetadata()
    {
        await Moralis.Web3Api.Token.ReSyncMetadata(address: "0x34d85754fbad12eca81e2afe6a7648051574a63c", tokenId: "2", GameManager.ContractChain, flag: "uri");

    }

But this shows error: ā€œThe best overload for ā€˜ReSyncMetadataā€™ does not have a parameter named ā€˜flagā€™ā€

what am I missing?

I donā€™t know the syntax for unity, you can call a cloud function or use the web3api interface directly