Drops

Use the Drops endpoints to retrieve metadata and schedule configurations for primary market drops launched via Mintpad. This includes active mint statuses, configured mint phases, cover/banner assets, and the latest mint events.

Fetch Drops

Use GET /v1/drops to retrieve a list of primary market drops on Mintpad.

Request

GET /v1/drops

Headers:

  • x-api-key: mp_part_yourkey

Query Parameters:

ParameterTypeRequiredDescription
statusstringNoFilter by active state: configured, upcoming, live, or completed.
searchstringNoSearch query to match drop collection names (case-insensitive).
addressstringNoFilter strictly by the contract address of the drop.

Response

JSON
{
"success": true,
"drops": [
{
"address": "0xdfbe43b2c154b6a790158fa2696cdb32a86efc78",
"slug": "sample-drop",
"name": "Sample Collection",
"creator": "0x1234567890abcdef1234567890abcdef12345678",
"coverImage": "https://mintpad.app/images/cover.png",
"bannerImage": "https://mintpad.app/images/banner.png",
"verified": true,
"isDrop": true,
"dropStatus": "live",
"maxSupply": 1000,
"minted": 150,
"mintPrice": "100000000000000000000",
"dropPhases": [
{
"configured": true,
"startTime": "2026-06-23T12:00:00.000Z",
"endTime": "2026-06-24T12:00:00.000Z",
"price": "100000000000000000000",
"paymentToken": "0x0000000000000000000000000000000000000000"
}
],
"dropName": "Public Drop Name",
"dropDescription": "Public Drop Description",
"description": "General collection description",
"mintImage": "https://mintpad.app/images/mint.png",
"website": "https://sample.com",
"twitter": "https://twitter.com/sample",
"discord": "https://discord.gg/sample",
"latestMints": [
{
"id": 12345,
"txHash": "0xabcdef123456...",
"tokenId": "42",
"from": "0x0000000000000000000000000000000000000000",
"to": "0x9876543210abcdef9876543210abcdef98765432",
"price": "100000000000000000000",
"timestamp": "2026-06-23T12:05:00.000Z"
}
]
}
]
}

Response Fields

FieldTypeDescription
addressstringContract address of the drop collection.
slugstringUnique URL slug identifier.
namestringBase name of the collection.
creatorstringWallet address of the drop creator.
coverImagestring \nullCover image URL.
bannerImagestring \nullBanner/hero image URL.
verifiedbooleanVerified status badge status on Mintpad.
isDropbooleanSet to true if collection is a Launchpad primary drop.
dropStatusstringState of the drop: configured, upcoming, live, or completed.
maxSupplyintegerMaximum supply limit of tokens.
mintedintegerTotal tokens minted so far.
mintPricestringDefault base mint price in wei.
dropPhasesarrayArray of configured mint phases with start/end schedules, phase pricing, and custom payment tokens.
dropNamestring \nullOverridden public marketing name for the drop.
dropDescriptionstring \nullOverridden public marketing description for the drop.
descriptionstring \nullGeneral fallback description.
mintImagestring \nullPublic mint placeholder preview image.
websitestringSocial link: website URL.
twitterstringSocial link: Twitter URL.
discordstringSocial link: Discord URL.
latestMintsarrayLatest 20 mint event objects containing timestamps, txn hashes, token IDs, prices, and recipient wallets.

Prepare Mint Transaction

Use POST /v1/drops/:address/mint-transaction to construct the raw, unsigned transaction data required to execute a mint on-chain. This endpoint automatically detects active phases, checks whitelist configurations against Mintpad's databases, dynamically builds Merkle proofs for allowlist/whitelist phases, and calculates the transaction value.

Request

POST /v1/drops/:address/mint-transaction

Headers:

  • x-api-key: mp_part_yourkey
  • Content-Type: application/json

Body Parameters:

ParameterTypeRequiredDescription
minterAddressstringYesThe wallet address of the user who will be signing and executing the mint transaction.
quantitynumberYesThe number of tokens to mint (must be a positive integer greater than 0).
phaseIdnumberYesThe ID of the sale phase (0 to 3) to execute the mint against.

Example Body:

JSON
{
"minterAddress": "0x9876543210abcdef9876543210abcdef98765432",
"quantity": 2,
"phaseId": 1
}

Response

JSON
{
"success": true,
"chainId": 25,
"to": "0xdfbe43b2c154b6a790158fa2696cdb32a86efc78",
"value": "200000000000000000000",
"data": "0x34d5885c00000000000000000000000000000000000000000000000000000000000000020000000100000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000",
"isErc20": false,
"requiredAllowance": "0",
"createdByPartner": true,
"partnerId": 1,
"paymentToken": "0x0000000000000000000000000000000000000000",
"paymentTokenDecimals": 18,
"paymentTokenSymbol": "CRO",
"paymentTokenName": "Cronos"
}

Response Fields

FieldTypeDescription
chainIdnumberThe blockchain chain ID (e.g. 25 for Cronos Mainnet).
tostringTarget contract address to submit the transaction to (this is the drop contract address).
valuestringAmount of native cryptocurrency (in Wei) to send alongside the transaction (e.g. for CRO-based mints).
datastringThe hex-encoded contract calldata for the transaction execution.
isErc20booleanIndicates whether payment uses an ERC-20 token (e.g. WCRO, USDC) instead of native CRO.
requiredAllowancestringThe amount of ERC-20 tokens (in decimals) the minter must approve for the drop contract before executing the mint.
createdByPartnerbooleanSet to true to specify that this transaction payload was generated through partner tools.
partnerIdnumberThe ID of the API integration partner.
paymentTokenstringAddress of the payment token (0x0000...0 for native CRO).
paymentTokenDecimalsnumberDecimals of the payment token (e.g. 18 for CRO/WCRO, 6 for USDC).
paymentTokenSymbolstringSymbol of the payment token (e.g. CRO, WCRO, USDC).
paymentTokenNamestringHuman-readable name of the payment token.

Submit Mint Transaction

After broadcasting the transaction, submit the transaction hash to POST /v1/drops/:address/mint-transaction/submit to attribute the referral to your partner account.

Request

POST /v1/drops/:address/mint-transaction/submit

Headers:

  • x-api-key: mp_part_yourkey
  • Content-Type: application/json

Body Parameters:

ParameterTypeRequiredDescription
txHashstringYesThe 66-character hex transaction hash of the broadcasted mint transaction (starts with 0x).
minterAddressstringYesThe wallet address of the user who signed and executed the transaction.
quantitynumberYesThe number of tokens minted in the transaction.
phaseIdnumberYesThe ID of the sale phase (0 to 3) targeted by the mint.

Example Body:

JSON
{
"txHash": "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23000000000000000000000000",
"minterAddress": "0x9876543210abcdef9876543210abcdef98765432",
"quantity": 2,
"phaseId": 1
}

Response

JSON
{
"success": true,
"txHash": "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23000000000000000000000000",
"message": "Transaction successfully submitted for tracking."
}

Fetch Drop Eligibility & Mint State

Use GET /v1/drops/:address/eligibility to retrieve a user's eligibility and mint count for a specific drop phase. This endpoint evaluates on-chain configs, whitelist databases, and on-chain user minted mappings.

Eligibility results are cached in Redis for 5 minutes (300 seconds) and are automatically invalidated when creators update the drop whitelists.

Request

GET /v1/drops/0xdfbe43b2c154b6a790158fa2696cdb32a86efc78/eligibility?wallet=0x9876543210abcdef9876543210abcdef98765432&phaseId=1

Headers:

  • x-api-key: mp_part_yourkey

Query Parameters

ParameterTypeRequiredDescription
walletstringYesThe wallet address of the user.
phaseIdintegerYesThe ID of the sale phase (0 to 3).

Response

JSON
{
"success": true,
"eligibility": {
"eligible": true,
"reason": "eligible",
"phaseId": 1,
"mintType": "whitelist",
"price": "100000000000000000000",
"limitPerWallet": "5",
"userMinted": "1",
"userRemaining": "4",
"paymentToken": "0x0000000000000000000000000000000000000000",
"paymentTokenDecimals": 18
}
}
FieldTypeDescription
eligiblebooleanIndicates if the user is eligible to mint in this phase.
reasonstringDetailed status reason. Values: eligible, paused, sold_out, not_whitelisted, wallet_limit_reached, upcoming, ended, phase_not_active.
phaseIdintegerThe queried sale phase ID (0-3).
mintTypestringThe phase type: whitelist or public.
pricestringMint price in Wei.
limitPerWalletstringMaximum tokens allowed per wallet for this phase (0 if unlimited).
userMintedstringTotal number of tokens already minted by the user in this phase.
userRemainingstringRemaining number of tokens the user is allowed to mint.
paymentTokenstringContract address of the payment token (0x0000...0 for native CRO).
paymentTokenDecimalsintegerNumber of decimals for the payment token.

Direct Contract Inquiries (Double Checking Mint Status)

Although the Partner API automatically performs on-demand RPC synchronization when fetching drops, you can also query the smart contracts directly on-chain using JSON-RPC to fetch real-time mint state.

Contract API: getMintState

Each drop contract deployed on Cronos implements a view function called getMintState which returns the entire configuration, current phase status, and user-specific eligibility/mint metrics in a single RPC request.

Solidity Function Definition

Solidity
struct MintStateView {
uint256 currentTimestamp;
uint8 status; // 0 = disabled, 1 = upcoming, 2 = live, 3 = completed
uint256 mintedSupply;
uint256 maxSupply;
uint256 remainingSupply;
bool paused;
int8 activePhaseId; // -1 if no active phase
uint256 activePrice;
address activePaymentToken;
uint8 activePaymentTokenDecimals;
uint256 userMintedActive;
uint256 userRemainingActive;
bool userEligibleActive;
uint256[4] prices;
address[4] paymentTokens;
uint8[4] paymentDecimals;
uint256[4] startTimes;
uint256[4] endTimes;
uint256[4] limitPerTx;
uint256[4] limitPerWallet;
bool[4] configured;
uint8[4] mintTypes; // 0 = whitelist, 1 = public
}
function getMintState(address _user, bytes32[] calldata _proof) external view returns (MintStateView memory state);

Javascript / ethers.js Query Example

You can query this state directly on-chain using ethers.js or any other Web3 client library:

JavaScript
import { ethers } from 'ethers';
// ABI signature for the view call
const ABI = [
"function getMintState(address _user, bytes32[] calldata _proof) external view returns (tuple(uint256 currentTimestamp, uint8 status, uint256 mintedSupply, uint256 maxSupply, uint256 remainingSupply, bool paused, int8 activePhaseId, uint256 activePrice, address activePaymentToken, uint8 activePaymentTokenDecimals, uint256 userMintedActive, uint256 userRemainingActive, bool userEligibleActive, uint256[4] prices, address[4] paymentTokens, uint8[4] paymentDecimals, uint256[4] startTimes, uint256[4] endTimes, uint256[4] limitPerTx, uint256[4] limitPerWallet, bool[4] configured, uint8[4] mintTypes) state)"
];
async function checkDropOnChain(dropContractAddress, userAddress = ethers.ZeroAddress, proof = []) {
// Connect to the Cronos RPC node
const provider = new ethers.JsonRpcProvider("https://evm.cronos.org");
const contract = new ethers.Contract(dropContractAddress, ABI, provider);
// Call the function on-chain
const result = await contract.getMintState(userAddress, proof);
const state = result.state;
console.log("On-Chain Mint Status:");
console.log("Total Minted:", state.mintedSupply.toString());
console.log("Max Supply:", state.maxSupply.toString());
console.log("Current Live Phase:", state.activePhaseId);
console.log("Active Price:", ethers.formatUnits(state.activePrice, state.activePaymentTokenDecimals));
console.log("Active Payment Token Address:", state.activePaymentToken);
}
// Call example
checkDropOnChain("0xdfbe43b2c154b6a790158fa2696cdb32a86efc78");