Step 1
Authentication
Exchange your client_id and client_secret for a short-lived Bearer token, then include it in every request header.
The API is currently in private beta. Request access to receive your credentials.
curl -X POST https://api.assetmint.co/v1/auth/token \
-H "Content-Type: application/json" \
-d '{
"client_id": "your_client_id",
"client_secret": "your_client_secret",
"grant_type": "client_credentials"
}'
# Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600
}Include the token in every subsequent request:
curl https://api.assetmint.co/v1/assets \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Reference
API endpoints
All endpoints are prefixed with https://api.assetmint.co/v1. Every response follows the envelope { data, meta, error }.
/v1/assetsList all assets for the authenticated business/v1/assetsSubmit a new asset for AI valuation/v1/assets/:idRetrieve a single asset with valuation details/v1/assets/:idUpdate asset metadata or documents/v1/tokensList all on-chain tokens for the authenticated business/v1/tokens/:idRetrieve token details including blockchain address/v1/loansList all loan requests and their statuses/v1/loansSubmit a new loan request against a tokenized asset/v1/loans/:idRetrieve loan details including repayment schedule/v1/valuations/:asset_idRetrieve the AI valuation report for an asset/v1/documents/uploadUpload supporting documents for an asset/v1/webhooksList registered webhook endpoints/v1/webhooksRegister a new webhook endpoint/v1/webhooks/:idRemove a webhook endpointExample
Submitting an asset
The most common workflow is submitting an asset for AI valuation, then polling for the result or listening for the asset.valuation_complete webhook event.
# Submit an asset for AI valuation
curl -X POST https://api.assetmint.co/v1/assets \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"name": "CNC Milling Machine — Model X200",
"type": "equipment",
"description": "Industrial CNC machine, 2021, excellent condition",
"estimated_value": 85000
}'
# Response
{
"id": "asset_9xK2mP...",
"status": "pending_valuation",
"created_at": "2026-03-31T14:00:00Z"
}Real-time events
Webhooks
Register a webhook endpoint to receive real-time event notifications instead of polling. Every payload is signed with HMAC-SHA256 so you can verify authenticity before processing.
asset.submittedasset.valuation_completeasset.verifiedtoken.mintedloan.submittedloan.approvedloan.fundedloan.repayment_receivedloan.defaultedVerifying signatures
// Express.js — verify and handle webhook events
import express from 'express';
import crypto from 'crypto';
const app = express();
app.use(express.raw({ type: 'application/json' }));
app.post('/webhooks/assetmint', (req, res) => {
const sig = req.headers['x-assetmint-signature'];
const expected = crypto
.createHmac('sha256', process.env.ASSETMINT_WEBHOOK_SECRET)
.update(req.body)
.digest('hex');
if (sig !== `sha256=${expected}`) {
return res.status(401).send('Invalid signature');
}
const event = JSON.parse(req.body);
switch (event.type) {
case 'asset.valuation_complete':
console.log('Valuation ready:', event.data.asset_id);
break;
case 'loan.approved':
console.log('Loan approved:', event.data.loan_id);
break;
case 'token.minted':
console.log('Token on-chain:', event.data.token_address);
break;
}
res.json({ received: true });
});Limits
Rate limits
Limits are applied per API key. Exceeding a limit returns 429 Too Many Requests with a Retry-After header.
Developer (Beta)
60
requests / minute
5,000
requests / day
Business
300
requests / minute
50,000
requests / day
Enterprise
1,000
requests / minute
Unlimited
requests / day