Direct Integration
Would you like to use your own viewer? Integrate into a native application? Use Darkblock to store programmatic data like javascript, json, and anything else you can imagine? You can integrate with the protocol more directly and control what happens with the unlockable data.
Listing the available content
To see a list of unlockable content for an NFT you can use this API call:
https://api.darkblock.io/v1/darkblock/info?nft_platform=&nft_id=
Platforms supported:
- Ethereum
- Solana
- Tezos
- Polygon
- Avalanche
NFTID composition for EVM Chains and Tezos: CONTRACTID
:
TOKEN_ID
NFTID composition for Solana: TOKENID
https://api.darkblock.io/v1/darkblock/info?nft_id=412EiTpy6Uee5uB1GktpmTJaCUgFgDKLZDKQ419DCAGK&nft_platform=Solana
Example when no Darkblock is found:
https://api.darkblock.io/v1/darkblock/info?nft_id=0x130cfab3817467f532c179d4e6502f5a7e7d44c7:4&nft_platform=Ethereum
More info on that endpoint here
Darkblock Protocol Requests
Once Darkblock unlockable content is detected we need to construct a session token to access the content. This session token is a combination of the epoch timestamp (milliseconds), the signature of the concatenation of the current epoch timestamp and the wallet address of the user, and the chain.
One session token is needed per chain, and can be cached, as they do not currently expire. They will be prone to expiration in the future, the rules around this will be coming soon based on partner feedback.
Here is the format of the session token: <EPOCH>_<SIGNATURE>_<PLATFORM>
Example:
Signature of 16529845012790x438cba7e454b59a9f897d4731fd3eaef37160c0a
Becomes the following session token:
1652984501279_0x23ddc5b8767a3c2c7c9bab3bdcb86c88a328d21b214e2edad91c6d40b4ad34860c99cfbbf06381c718d8ef3c8068145834ba9a2c8bd442afae7468fef1d10a2f1c_Ethereum
The ArtId can be taken from the Darkblock info response and combined with the session token, owner wallet address, NFT Contract and Token Id, and platform to construct a Gateway request.
https://gateway.darkblock.io/proxy?artid=&session_token=&token_id=&contract=&platform=
Example:
https://gateway.darkblock.io/proxy?artid=9b3aa571-d42f-4699-b09f-6b6c76dab994&session_token=1652985436749_0x1c52329bee2409530b07ddce694df6e75671c3b51bde4aa02f25630f99c369e21d420301b7b7d89eb892b389f1fe32a262c3eae296d2ae81bc05805aca46d8f21c&token_id=30553606573219150352991292921105176340809048341686170040023897669293200900097&contract=0x495f947276749ce646f68ac8c248420045cb7b5e&platform=Ethereum
*(not a working example)
For Ethereum compatible chains you can use this handy-dandy signature tool that allows you to paste in some arbitrary text and create a signature with Metamask:
https://random-crap-public.s3.amazonaws.com/sign.html
Questions?
Come hit us up on the Darkblock discord!