Developer Platform

Build on the
asset tokenization layer

Integrate AI-powered valuations, on-chain tokenization, and institutional lending directly into your application with the AssetMint REST API.

cloud

Base URL

api.assetmint.co/v1

swap_horiz

Protocol

HTTPS · REST · JSON

lock

Auth

OAuth 2.0 Bearer

bolt

Status

Private Beta

Step 1

Authentication

Exchange your client_id and client_secret for a short-lived Bearer token, then include it in every request header.

info

The API is currently in private beta. Request access to receive your credentials.

bash
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:

bash
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 }.

MethodEndpointDescription
GET/v1/assetsList all assets for the authenticated business
POST/v1/assetsSubmit a new asset for AI valuation
GET/v1/assets/:idRetrieve a single asset with valuation details
PATCH/v1/assets/:idUpdate asset metadata or documents
GET/v1/tokensList all on-chain tokens for the authenticated business
GET/v1/tokens/:idRetrieve token details including blockchain address
GET/v1/loansList all loan requests and their statuses
POST/v1/loansSubmit a new loan request against a tokenized asset
GET/v1/loans/:idRetrieve loan details including repayment schedule
GET/v1/valuations/:asset_idRetrieve the AI valuation report for an asset
POST/v1/documents/uploadUpload supporting documents for an asset
GET/v1/webhooksList registered webhook endpoints
POST/v1/webhooksRegister a new webhook endpoint
DELETE/v1/webhooks/:idRemove a webhook endpoint

Example

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.

bash
# 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.

psychology
Valuation
check_circleasset.submitted
check_circleasset.valuation_complete
check_circleasset.verified
hexagon
Tokenization
check_circletoken.minted
credit_score
Loans
check_circleloan.submitted
check_circleloan.approved
check_circleloan.funded
check_circleloan.repayment_received
check_circleloan.defaulted

Verifying signatures

javascript
// 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

Ready to start building?

Request API access and we'll personally walk you through the integration on a 15-minute call.

Request API access