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:
| Parameter | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by active state: configured, upcoming, live, or completed. |
search | string | No | Search query to match drop collection names (case-insensitive). |
address | string | No | Filter strictly by the contract address of the drop. |
Response
{ "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
| Field | Type | Description | |
|---|---|---|---|
address | string | Contract address of the drop collection. | |
slug | string | Unique URL slug identifier. | |
name | string | Base name of the collection. | |
creator | string | Wallet address of the drop creator. | |
coverImage | string \ | null | Cover image URL. |
bannerImage | string \ | null | Banner/hero image URL. |
verified | boolean | Verified status badge status on Mintpad. | |
isDrop | boolean | Set to true if collection is a Launchpad primary drop. | |
dropStatus | string | State of the drop: configured, upcoming, live, or completed. | |
maxSupply | integer | Maximum supply limit of tokens. | |
minted | integer | Total tokens minted so far. | |
mintPrice | string | Default base mint price in wei. | |
dropPhases | array | Array of configured mint phases with start/end schedules, phase pricing, and custom payment tokens. | |
dropName | string \ | null | Overridden public marketing name for the drop. |
dropDescription | string \ | null | Overridden public marketing description for the drop. |
description | string \ | null | General fallback description. |
mintImage | string \ | null | Public mint placeholder preview image. |
website | string | Social link: website URL. | |
twitter | string | Social link: Twitter URL. | |
discord | string | Social link: Discord URL. | |
latestMints | array | Latest 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_yourkeyContent-Type:application/json
Body Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
minterAddress | string | Yes | The wallet address of the user who will be signing and executing the mint transaction. |
quantity | number | Yes | The number of tokens to mint (must be a positive integer greater than 0). |
phaseId | number | Yes | The ID of the sale phase (0 to 3) to execute the mint against. |
Example Body:
{ "minterAddress": "0x9876543210abcdef9876543210abcdef98765432", "quantity": 2, "phaseId": 1}Response
{ "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
| Field | Type | Description |
|---|---|---|
chainId | number | The blockchain chain ID (e.g. 25 for Cronos Mainnet). |
to | string | Target contract address to submit the transaction to (this is the drop contract address). |
value | string | Amount of native cryptocurrency (in Wei) to send alongside the transaction (e.g. for CRO-based mints). |
data | string | The hex-encoded contract calldata for the transaction execution. |
isErc20 | boolean | Indicates whether payment uses an ERC-20 token (e.g. WCRO, USDC) instead of native CRO. |
requiredAllowance | string | The amount of ERC-20 tokens (in decimals) the minter must approve for the drop contract before executing the mint. |
createdByPartner | boolean | Set to true to specify that this transaction payload was generated through partner tools. |
partnerId | number | The ID of the API integration partner. |
paymentToken | string | Address of the payment token (0x0000...0 for native CRO). |
paymentTokenDecimals | number | Decimals of the payment token (e.g. 18 for CRO/WCRO, 6 for USDC). |
paymentTokenSymbol | string | Symbol of the payment token (e.g. CRO, WCRO, USDC). |
paymentTokenName | string | Human-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_yourkeyContent-Type:application/json
Body Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
txHash | string | Yes | The 66-character hex transaction hash of the broadcasted mint transaction (starts with 0x). |
minterAddress | string | Yes | The wallet address of the user who signed and executed the transaction. |
quantity | number | Yes | The number of tokens minted in the transaction. |
phaseId | number | Yes | The ID of the sale phase (0 to 3) targeted by the mint. |
Example Body:
{ "txHash": "0x5c7f8a570d578ed84e63fdfa7b1ee72deae1ae23000000000000000000000000", "minterAddress": "0x9876543210abcdef9876543210abcdef98765432", "quantity": 2, "phaseId": 1}Response
{ "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
| Parameter | Type | Required | Description |
|---|---|---|---|
wallet | string | Yes | The wallet address of the user. |
phaseId | integer | Yes | The ID of the sale phase (0 to 3). |
Response
{ "success": true, "eligibility": { "eligible": true, "reason": "eligible", "phaseId": 1, "mintType": "whitelist", "price": "100000000000000000000", "limitPerWallet": "5", "userMinted": "1", "userRemaining": "4", "paymentToken": "0x0000000000000000000000000000000000000000", "paymentTokenDecimals": 18 }}| Field | Type | Description |
|---|---|---|
eligible | boolean | Indicates if the user is eligible to mint in this phase. |
reason | string | Detailed status reason. Values: eligible, paused, sold_out, not_whitelisted, wallet_limit_reached, upcoming, ended, phase_not_active. |
phaseId | integer | The queried sale phase ID (0-3). |
mintType | string | The phase type: whitelist or public. |
price | string | Mint price in Wei. |
limitPerWallet | string | Maximum tokens allowed per wallet for this phase (0 if unlimited). |
userMinted | string | Total number of tokens already minted by the user in this phase. |
userRemaining | string | Remaining number of tokens the user is allowed to mint. |
paymentToken | string | Contract address of the payment token (0x0000...0 for native CRO). |
paymentTokenDecimals | integer | Number 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
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:
import { ethers } from 'ethers';// ABI signature for the view callconst 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 examplecheckDropOnChain("0xdfbe43b2c154b6a790158fa2696cdb32a86efc78");