Developer REST API Reference
Programmatically provision permanent inboxes, retrieve incoming messages & OTP codes, and monitor your email quotas with our high-speed REST API.
Log in or upgrade to an API Plan to manage your permanent inboxes programmatically.
pm_live_••••••••••••••••••••••••
Open Dashboard
Authentication & Quota Accounting
All API requests are served over HTTPS via the base URL https://api.pinmax.cloud/v1. Authenticate by passing your private API key in the standard Authorization header:
Authorization: Bearer pm_live_9f83a02bb4e1837c41
How Quota Counting Works
- Permanent Email Creations: Every email created via
POST /v1/emails/generateorPOST /v1/emails/create(or web dashboard) counts as 1 email against your plan allowance (1,000 / 5,000 / 10,000 emails). - Unlimited Incoming Emails & OTPs: All addresses created under your account remain permanently active. Receiving emails, checking messages, and reading OTP codes is 100% unlimited and never deducts from your quota.
- Quota Exhaustion: If your remaining quota reaches 0, the API responds with HTTP
403 Quota Exceededwith upgrade instructions to expand quota via USDT BEP-20.
| Plan Name | Price (Crypto) | Total Email Allowance | Incoming Messages & OTPs | API Access |
|---|---|---|---|---|
| Free Trial | $0 Free | 3 Permanent Emails | Unlimited · Lifetime | Full REST API Access |
| Starter API Plan | 10 USDT (BEP-20) | 1,000 Permanent Emails | Unlimited · Lifetime | Full REST API Access |
| Pro API Plan ⭐ | 25 USDT (BEP-20) | 5,000 Permanent Emails | Unlimited · Lifetime | High-Concurrency API |
| Scale API Plan | 35 USDT (BEP-20) | 10,000 Permanent Emails | Unlimited · Lifetime | Priority Ingestion API |
Interactive API Console & Playground
Test live requests directly in your browser. Calls update your account and quota in real time.
// Click "⚡ Send Request" above to execute this endpoint against your account.
REST API Endpoints Reference
/v1/account/quota
Returns your active plan name, total email creation allowance, number of emails used, remaining quota, and total active inboxes.
curl -X GET https://api.pinmax.cloud/v1/account/quota \
-H "Authorization: Bearer pm_live_9f83a02bb4e1837c41"
{
"status": "success",
"account": {
"email": "developer@clientcorp.io",
"plan": "starter",
"plan_name": "1,000 Emails API Plan"
},
"quota": {
"total_allowed": 1000,
"emails_used": 14,
"emails_remaining": 986,
"usage_percent": 1
},
"active_inboxes_count": 14
}
/v1/emails/generate
Recommended: Automatically generates a 100% collision-free, clean permanent email address with zero dots and zero symbols (e.g. sparknpt8707804@pinmax.cloud). Decrements your remaining quota by 1.
curl -X POST https://api.pinmax.cloud/v1/emails/generate \
-H "Authorization: Bearer pm_live_9f83a02bb4e1837c41" \
-H "Content-Type: application/json" \
-d '{
"domain": "@pinmax.cloud"
}'
{
"status": "success",
"address": "sparknpt8707804@pinmax.cloud",
"created_at": "2026-09-05T08:35:00.000Z",
"permanent": true,
"storage_limit_mb": 500,
"quota": {
"total_allowed": 1000,
"emails_used": 15,
"emails_remaining": 985
}
}
/v1/emails/create
Creates a permanent address with your custom prefix. Note: The prefix must be strictly alphanumeric ([a-z0-9]) with no dots.
curl -X POST https://api.pinmax.cloud/v1/emails/create \
-H "Authorization: Bearer pm_live_9f83a02bb4e1837c41" \
-H "Content-Type: application/json" \
-d '{
"prefix": "authbot491",
"domain": "@pinmax.cloud"
}'
{
"status": "success",
"address": "authbot491@pinmax.cloud",
"created_at": "2026-09-05T08:35:10.000Z",
"permanent": true,
"quota": {
"total_allowed": 1000,
"emails_used": 16,
"emails_remaining": 984
}
}
/v1/emails
Lists all permanent inboxes provisioned under your account.
{
"status": "success",
"count": 2,
"inboxes": [
{
"id": "inbox_9ak19b2",
"address": "sparknpt8707804@pinmax.cloud",
"created_at": "2026-09-05T08:35:00.000Z",
"messages_count": 3,
"storage_used_mb": 4
},
{
"id": "inbox_7fc82a1",
"address": "authbot491@pinmax.cloud",
"created_at": "2026-09-05T08:35:10.000Z",
"messages_count": 1,
"storage_used_mb": 1
}
]
}
/v1/emails/{address}/otp
Built for Automation Bots & Scripts: Directly returns the latest extracted OTP code without requiring your code to parse headers or email bodies.
{
"status": "success",
"address": "sparknpt8707804@pinmax.cloud",
"latest_otp": "749102",
"sender": "Google Accounts ",
"received_at": "Just now"
}
Quota Exhaustion Error (403 Forbidden)
When all emails in your plan have been provisioned (e.g. 1000/1000 used), further creation calls return HTTP 403:
{
"error": "quota_exceeded",
"message": "Email quota reached (1000/1000 used). Please upgrade your plan with USDT BEP-20 to expand quota.",
"quota": {
"total_allowed": 1000,
"emails_used": 1000,
"emails_remaining": 0
},
"upgrade_url": "https://pinmax.cloud/pricing.html"
}
Complete Ready-to-Run Automation Scripts
Copy and paste these end-to-end integration scripts into your project to generate permanent emails and receive verification codes automatically.
import requests import time API_KEY = "pm_live_9f83a02bb4e1837c41" BASE_URL = "https://api.pinmax.cloud/v1" HEADERS = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 1. Generate 100% unique permanent email gen_res = requests.post(f"{BASE_URL}/emails/generate", headers=HEADERS, json={"domain": "@pinmax.cloud"}) data = gen_res.json() email_address = data["address"] quota = data["quota"] print(f"[+] Created Email: {email_address} (Remaining Quota: {quota['emails_remaining']})") # 2. Poll for incoming OTP verification code print("[*] Waiting for OTP verification code...") for attempt in range(30): time.sleep(2) otp_res = requests.get(f"{BASE_URL}/emails/{email_address}/otp", headers=HEADERS).json() if otp_res.get("latest_otp"): print(f"[✓] SUCCESS! Verification Code: {otp_res['latest_otp']}") break
const API_KEY = "pm_live_9f83a02bb4e1837c41"; const BASE_URL = "https://api.pinmax.cloud/v1"; async function main() { // 1. Create unique permanent email address const createRes = await fetch(`${BASE_URL}/emails/generate`, { method: "POST", headers: { "Authorization": `Bearer ${API_KEY}`, "Content-Type": "application/json" } }); const { address, quota } = await createRes.json(); console.log(`[+] Created: ${address} | Remaining Quota: ${quota.emails_remaining}`); // 2. Poll for OTP code console.log("[*] Polling for OTP code..."); for (let i = 0; i < 30; i++) { await new Promise(r => setTimeout(r, 2000)); const otpRes = await fetch(`${BASE_URL}/emails/${address}/otp`, { headers: { "Authorization": `Bearer ${API_KEY}` } }); const data = await otpRes.json(); if (data.latest_otp) { console.log(`[✓] OTP Code: ${data.latest_otp}`); break; } } } main();