Introduction
Create, distribute and manage NFTs at scale, with simple REST APIs
Creating and delivering NFTs can be complex and time-consuming. It often takes teams months to set up a campaign and involves understanding smart contracts, handling key material securely, paying gas fees, and orchestrating operations on the blockchain. Users also face a tedious process of creating a crypto wallet and providing their wallet address.
With Crossmint, you can do all of this, and more, with a single HTTP API call:
curl --header "x-client-secret: $CLIENT_SECRET" \
--header "x-project-id: $PROJECT_ID" \
-X POST \
-H 'Content-Type: application/json' \
-d '{
"metadata": {
"name": "Proof of Attendance",
"image": "https://www.example.com/assets/thanks_for_attending.png",
"description": "Proof of Attendance to ACME Inc Tech Event"
},
"recipient": "email:[email protected]:polygon"
}' \
https://staging.crossmint.com/api/2022-06-09/collections/default/nfts
const clientSecret = '$CLIENT_SECRET', projectId = '$PROJECT_ID';
fetch('https://staging.crossmint.com/api/2022-06-09/collections/default/nfts', {
method: 'POST',
headers: {
'x-client-secret': clientSecret,
'x-project-id': projectId,
'Content-Type': 'application/json',
},
body: JSON.stringify({
metadata: {
name: 'Proof of Attendance',
image: 'https://www.example.com/assets/thanks_for_attending.png',
description: "Proof of Attendance to ACME Inc's Tech Event",
},
recipient: 'email:[email protected]:polygon',
}),
}).then((res) => res.json()).then(console.log).catch(console.error);
import requests
client_secret = '$CLIENT_SECRET'
project_id = '$PROJECT_ID'
url = 'https://staging.crossmint.com/api/2022-06-09/collections/default/nfts'
headers = {'x-client-secret': client_secret, 'x-project-id': project_id, 'Content-Type': 'application/json'}
data = {
'metadata': {
'name': 'Proof of Attendance',
'image': 'https://www.example.com/assets/thanks_for_attending.png',
'description': "Proof of Attendance to ACME Inc's Tech Event",
},
'recipient': 'email:[email protected]:polygon',
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
<?php
$clientSecret = '$CLIENT_SECRET';
$projectId = '$PROJECT_ID';
$url = 'https://staging.crossmint.com/api/2022-06-09/collections/default/nfts';
$headers = [
"x-client-secret: $clientSecret",
"x-project-id: $projectId",
"Content-Type: application/json"
];
$data = json_encode([
'metadata' => [
'name' => 'Proof of Attendance',
'image' => 'https://www.example.com/assets/thanks_for_attending.png',
'description' => "Proof of Attendance to ACME Inc's Tech Event",
],
'recipient' => 'email:[email protected]:polygon',
]);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
require 'http'
client_secret = '$CLIENT_SECRET'
project_id = '$PROJECT_ID'
url = 'https://staging.crossmint.com/api/2022-06-09/collections/default/nfts'
headers = {
'x-client-secret' => client_secret,
'x-project-id' => project_id,
'Content-Type' => 'application/json'
}
data = {
metadata: {
name: 'Proof of Attendance',
image: 'https://www.example.com/assets/thanks_for_attending.png',
description: "Proof of Attendance to ACME Inc's Tech Event",
},
recipient: 'email:[email protected]:polygon',
}
response = HTTP.headers(headers).post(url, json: data)
puts response.parse
import okhttp3.*;
public class Main {
public static void main(String[] args) {
OkHttpClient client = new OkHttpClient();
String clientSecret = "$CLIENT_SECRET";
String projectId = "$PROJECT_ID";
MediaType JSON = MediaType.get("application/json; charset=utf-8");
String requestBody = "{\"metadata\": {\"name\": \"Proof of Attendance\",\"image\": \"https://www.example.com/assets/thanks_for_attending.png\",\"description\": \"Proof of Attendance to ACME Inc's Tech Event\"},\"recipient\": \"email:[email protected]:polygon\"}";
Request request = new Request.Builder()
.url("https://staging.crossmint.com/api/2022-06-09/collections/default/nfts")
.post(RequestBody.create(requestBody, JSON))
.addHeader("x-client-secret", clientSecret)
.addHeader("x-project-id", projectId)
.addHeader("Content-Type", "application/json")
.build();
try (Response response = client.newCall(request).execute()) {
System.out.println(response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}
With Crossmint, you can create and distribute NFTs within 5 minutes using a single HTTP API call. Pay for fees with a credit card and deliver NFTs to anyone, even if recipients don't have any cryptocurrency or a crypto wallet. Utilizing our infrastructure can save months of development time, allow you to focus on building your project, and avoid code maintenance and customer support issues when network problems occur. Our APIs have been tested under high loads and unstable networks, offering high throughput and a reliable infrastructure that can scale with your needs.
✨ Use Cases
Crossmint's APIs are industry-agnostic and can be used for most NFT use cases. For example:
📺 Brand marketing campaigns: Diageo allowed viewers of the NFL Thanksgiving game to scan a QR code on screen to claim an NFT that unlocked a donation to veterans.
🏆 Loyalty: Cinemark, together with HangXYZ, sent an email to their 150k Platinum Members email list to redeem a rare collectible. Thanks to the mint API, their users didn't need to go through the tedious process of creating wallets ahead of the campaign.
🌐 Bridging the physical and digital world: McFarlane Toys uses the Mint API to create digital twins of physical toys, like Batman figures, which users can import into videogames.
🛡️ Authentication: Moser, together with Deloitte, used the Mint API to issue authentication certificates for one of their exclusive watch collections.
🎟️ Ticketing and receipts: Mint API has been used to issue event tickets, attach certificates or gifts to e-commerce purchases, eco event tickets, and much more.
Looking to sell the NFTs you mint?
At the moment, the Mint API is primarily designed to create NFTs for free distribution, such as in airdrops, loyalty programs, and similar use cases. However, we offer a private alpha for using the Mint API to create NFTs intended for sale at a specified price. To request access to this alpha, please contact us.
🛠 How it Works
Using Crossmint, your application can:
- Create and manage NFT collections
- Create, edit, or delete NFTs
- Deliver NFTs to a wallet or email address
You pay for these requests with a credit card or end-of-month ACH billing.
Crossmint takes care of the following:
- Securing cryptographic keys for your project with Fireblocks MPC technology
- Deploying an NFT smart contract for your collections on supported blockchains
- Validating, uploading, and pinning your NFT metadata and media assets (images, videos, 3D assets, etc.) to decentralized permanent storage (IPFS)
- Minting the NFT and managing gas fee payments
- Optionally, creating a wallet for your customer linked to their email address
- Delivering the NFT to your customer's wallet, scaling up to hundreds of thousands per hour
🚀 Get Started
There are multiple ways to start using the Mint API:
No coding required
- Google Sheet: Try out the API without writing a single line of code using a scripted Google Sheet. Mint NFTs directly from the sheet by following the instructions here.
- Zapier: Use the API in a no-code manner with Zapier. Check out our Zapier integration here.
Coding
- Open Source Examples: Explore open source examples built with the Crossmint API for inspiration and guidance. Browse some open source examples here.
- Quickstart Guide: Dive right into coding with our Quickstart guide. Follow the step-by-step instructions to set up your environment and make your first API call here.
Choose the path that suits your needs best, and start creating and distributing NFTs with ease today!
🔗 Supported Blockchains
Blockchain | Status |
---|---|
Polygon | Live in mainnet and testnet (mumbai) |
Solana | Live in mainnet and devnet. Now supporting Compressed NFTs - sign up to mint 10K compressed NFTs for free [here](https://crossmint.typeform.com/nft-compression) |
Other EVM chains | Ethereum, Arbitrum, Optimism, Avalanche, BNB, and other EVM chains available upon request, but not self-serve yet |
Non EVM-chains | Contact us if you are building in Immutable X, Flow or another chain and need API support |
Secure Contracts
On Polygon, the Minting API uses contracts based on OpenZeppelin's ERC721. OpenZeppelin has performed security audits on all of their contracts and publishes the results here.
Crossmint also periodically leverages 3rd party security firms to audit new and existing contracts.
Updated about 2 months ago