VIACLONE2FA.NET API
Purchase 2FA accounts programmatically from your wallet balance — instant delivery, no browser needed.
Register on VIACLONE2FA.NET, then add USDT balance to your wallet.
Go to My Account → API Key, click Generate, copy the key.
https://viaclone2fa.net/wp-json/v1
All endpoints are prefixed with this base URL.
Pass your API key in the X-Api-Key HTTP header on every authenticated request. Never include the key in the URL — it will leak into server logs and browser history.
X-Api-Key: sk_live_your_key_here
Treat your API key like a password. Do not commit it to Git. Store it in an environment variable (.env).
/api/products
Public — no auth required
Returns all published products with real-time stock counts. Use this to find product IDs before buying.
curl "https://viaclone2fa.net/wp-json/v1/api/products"
{
"success": true,
"count": 3,
"products": [
{
"id": 101,
"name": "Facebook Account - Number Verify",
"price": 0.45,
"currency": "USD",
"in_stock": 42,
"available": true,
"categories": ["Number Verify"],
"url": "https://viaclone2fa.net/product/facebook-nv/"
},
{
"id": 102,
"name": "Facebook Account - Trust Mail",
"price": 0.75,
"currency": "USD",
"in_stock": 0,
"available": false,
"categories": ["Hotmail/Outlook Trust Verify"],
"url": "https://viaclone2fa.net/product/facebook-tm/"
}
]
}
in_stockInteger — available accounts. null = unlimited (no tracking). 0 = out of stock.availableBoolean — true if you can buy right now./api/balance
Auth required
Returns the current wallet balance for the API key owner.
curl -H "X-Api-Key: sk_live_your_key_here" \ "https://viaclone2fa.net/wp-json/v1/api/balance"
{
"success": true,
"balance": 12.50,
"currency": "USD"
}
/api/buy
Auth required
Main endpoint
Purchase one or more accounts. Payment is deducted from your wallet balance. Accounts are delivered immediately in the JSON response.
{
"product_id": 101,
"quantity": 3
}
product_idRequired. Integer — get this from GET /api/products.quantityOptional. Integer 1–1000. Default: 1.{
"success": true,
"order_id": 4512,
"product": "Facebook Account - Number Verify",
"quantity": 3,
"total": 1.35,
"currency": "USD",
"balance_after": 11.15,
"account_count": 3,
"accounts": [
"user1@hotmail.com|PassWord1!|ABCDE12345",
"user2@hotmail.com|PassWord2!|FGHIJ67890",
"user3@hotmail.com|PassWord3!|KLMNO11223"
]
}
Save the accounts array immediately. These accounts are yours and will not be sold to anyone else, but this endpoint will not return them again. You can always re-download from My Account → My Accounts.
import requests
API_KEY = "sk_live_your_key_here"
BASE = "https://viaclone2fa.net/wp-json/v1"
HEADERS = {"X-Api-Key": API_KEY}
# 1. Check your balance
bal = requests.get(f"{BASE}/api/balance", headers=HEADERS).json()
print(f"Balance: {bal['balance']} {bal['currency']}")
# 2. List available products
products = requests.get(f"{BASE}/api/products").json()
for p in products["products"]:
if p["available"]:
print(f"ID {p['id']}: {p['name']} ${p['price']} ({p['in_stock']} in stock)")
# 3. Buy 2 accounts of product 101
resp = requests.post(
f"{BASE}/api/buy",
headers={**HEADERS, "Content-Type": "application/json"},
json={"product_id": 101, "quantity": 2}
).json()
if resp["success"]:
print(f"Order #{resp['order_id']} — {resp['account_count']} accounts:")
for account in resp["accounts"]:
print(" ", account) # email|password|2fa
else:
print(f"Error [{resp['code']}]: {resp['message']}")
<?php
$apiKey = 'sk_live_your_key_here';
$base = 'https://viaclone2fa.net/wp-json/v1';
$context = stream_context_create(['http' => [
'header' => "X-Api-Key: $apiKey\r\nContent-Type: application/json\r\n",
]]);
// 1. Check balance
$bal = json_decode(file_get_contents("$base/api/balance", false, $context), true);
echo "Balance: {$bal['balance']} {$bal['currency']}\n";
// 2. Buy 2 accounts
$context = stream_context_create(['http' => [
'method' => 'POST',
'header' => "X-Api-Key: $apiKey\r\nContent-Type: application/json\r\n",
'content' => json_encode(['product_id' => 101, 'quantity' => 2]),
]]);
$resp = json_decode(file_get_contents("$base/api/buy", false, $context), true);
if ($resp['success']) {
echo "Order #{$resp['order_id']} — {$resp['account_count']} accounts delivered:\n";
foreach ($resp['accounts'] as $account) {
echo " $account\n";
}
// Save to file
file_put_contents('accounts.txt', implode("\n", $resp['accounts']) . "\n", FILE_APPEND);
} else {
echo "Error [{$resp['code']}]: {$resp['message']}\n";
}
// npm install node-fetch (or use built-in fetch in Node 18+)
const fetch = require('node-fetch');
const API_KEY = 'sk_live_your_key_here';
const BASE = 'https://viaclone2fa.net/wp-json/v1';
const headers = {
'X-Api-Key': API_KEY,
'Content-Type': 'application/json',
};
async function main() {
// 1. Check balance
const bal = await fetch(`${BASE}/api/balance`, { headers }).then(r => r.json());
console.log(`Balance: ${bal.balance} ${bal.currency}`);
// 2. List products
const { products } = await fetch(`${BASE}/api/products`).then(r => r.json());
products.filter(p => p.available).forEach(p =>
console.log(`ID ${p.id}: ${p.name} $${p.price} (${p.in_stock} in stock)`)
);
// 3. Buy 2 accounts
const resp = await fetch(`${BASE}/api/buy`, {
method: 'POST',
headers,
body: JSON.stringify({ product_id: 101, quantity: 2 }),
}).then(r => r.json());
if (resp.success) {
console.log(`Order #${resp.order_id} — ${resp.account_count} accounts:`);
resp.accounts.forEach(a => console.log(' ', a));
} else {
console.error(`Error [${resp.code}]: ${resp.message}`);
}
}
main();
# Check balance
curl -H "X-Api-Key: sk_live_your_key_here" \
"https://viaclone2fa.net/wp-json/v1/api/balance"
# List products (no auth needed)
curl "https://viaclone2fa.net/wp-json/v1/api/products"
# Buy 1 account of product 101
curl -X POST \
-H "X-Api-Key: sk_live_your_key_here" \
-H "Content-Type: application/json" \
-d '{"product_id": 101, "quantity": 1}' \
"https://viaclone2fa.net/wp-json/v1/api/buy"
All errors return HTTP status ≠ 200 with this JSON structure:
{
"success": false,
"code": "insufficient_balance",
"message": "Insufficient wallet balance. Required: 0.90000 USD, available: 0.40000 USD."
}
missing_api_keyNo X-Api-Key header sent. Add it to your request.
invalid_api_keyKey is wrong or revoked. Regenerate at My Account → API Key.
insufficient_balanceNot enough wallet balance. Deposit funds first.
not_purchasableThis product cannot be purchased via API.
invalid_productProduct ID not found or not published. Check GET /api/products.
out_of_stockNot enough accounts in stock for requested quantity.
payment_failedWallet debit could not be verified. Retry — you were not charged.
purchase_lockedConcurrent purchase in progress. Wait 1 second and retry.
Where do I find product IDs?
GET /api/products (no auth needed). Each product has an id field — use that in /api/buy.What format are the accounts in?
email|password|2fa_seed. Split by | to get each field.Can I re-download accounts I already bought?
What happens if the API returns account_count: 0?
order_id and we will resolve it immediately.Is my key secure?
What if my key is compromised?
Ready to start?
Create an account, deposit funds, and generate your API key in minutes.