Dokumentasi Server

Kamu sedang membaca dokumentasi Server 3. Server 1 punya dokumentasi terpisah.

Navigasi
Dokumentasi Server 1
REST API v1 · Server 3

API Nokos Server 3

Dokumentasi khusus Server 3 — penyedia multi-negara untuk cadangan saat Server 1 penuh atau tidak tersedia. Harga dihitung dari kurs USD, saldo & API Key tetap satu akun dengan bot.

Base URL
HTTPS https://tai.vxe.biz.id/v1 JSON

Multi

Cakupan Negara

Stok dari banyak negara untuk cadangan Server 1.

USD

Dasar Harga

Harga provider dikonversi ke Rupiah + profit.

Bearer

Autentikasi API Key

Header, X-API-Key, atau query parameter.

Pengenalan Server 3

Server 3 dipakai sebagai cadangan ketika Server 1 penuh atau kehabisan nomor. Alur tetap sama: pilih negara & layanan, buat order, lalu polling status hingga OTP diterima. Perbedaan utamanya: negara & operator memakai ID milik Server 3, dan order dimulai dengan status PENDING.

Kapan pakai Server 3?

Saat Server 1 mengembalikan NO_NUMBER, atau kamu butuh negara yang tidak tersedia di Server 1.

Satu akun, satu saldo

API Key & saldo sama seperti Server 1. Cukup ubah nilai server menjadi 3.

Penting: setiap order memotong saldo sesuai harga nomor Server 3. Stok Server 3 cepat berubah — selalu cek /v1/products sebelum order.

Deposit & API Key

API Key & saldo dibuat lewat Bot Telegram — sama persis untuk Server 1 dan Server 3.

  1. 1

    Buka Bot Telegram

    Mulai bot lalu cek saldo akunmu.

  2. 2

    Deposit via QRIS

    Scan QRIS, saldo masuk otomatis setelah pembayaran terkonfirmasi.

  3. 3

    Generate API Key

    Jalankan perintah berikut di bot. API Key berupa 64 karakter hex.

    Telegram
    /API generate server3
    /API list
    /API revoke <api_key>

Base URL & Server

Endpoint sama seperti Server 1, hanya nilainya yang berbeda: kirim server=3 di query/body. Dokumentasi Server 1 ada di halaman terpisah.

ServerParamBase URLTipe
Server 1 server=1 https://tai.vxe.biz.id/v1 Primary
Server 3 server=3 https://tai.vxe.biz.id/v1 Backup

Catatan: ID negara & kode layanan Server 3 berbeda dengan Server 1. Ambil daftarnya dari /v1/countries?server=3 dan /v1/services?server=3.

Autentikasi

Setiap request wajib menyertakan API Key. Tiga cara didukung — pilih salah satu (header paling aman).

DISARANKAN Header Authorization (Bearer)
Authorization: Bearer <API_KEY>
Header X-API-Key
X-API-Key: <API_KEY>
Query Parameter

Praktis untuk pengujian cepat, kurang aman untuk production.

GET /v1/balance?api_key=<API_KEY>

Contoh autentikasi pada endpoint cek saldo:

curl -X GET "https://tai.vxe.biz.id/v1/balance" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
const res = await fetch('https://tai.vxe.biz.id/v1/balance', {
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Accept': 'application/json'
  }
});
const data = await res.json();
console.log(data);
import requests

resp = requests.get(
    "https://tai.vxe.biz.id/v1/balance",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=15
)
print(resp.json())

Jangan pernah membagikan API Key di sisi client (browser/mobile publik) atau menyimpannya di repository.

Daftar Negara (Server 3)

Mengambil daftar negara Server 3. ID negara berupa angka dan berbeda dari ID Server 1.

GET /v1/countries?server=3 JSON
curl -X GET "https://tai.vxe.biz.id/v1/countries?server=3" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://tai.vxe.biz.id/v1/countries?server=3', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const { data } = await res.json();
console.log(data);
import requests

r = requests.get(
    "https://tai.vxe.biz.id/v1/countries",
    params={"server": 3},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=15
)
print(r.json()["data"])

Contoh Response

{
  "success": true,
  "server": 3,
  "data": [
    { "id": "6",  "name": "Indonesia",  "code": null, "dial_code": null },
    { "id": "2",  "name": "Kazakhstan", "code": null, "dial_code": null },
    { "id": "15", "name": "Vietnam",    "code": null, "dial_code": null }
  ]
}

Daftar Layanan (Server 3)

Mengambil kode layanan Server 3. Nilai id dipakai sebagai nilai service saat order.

GET /v1/services?server=3&country=6 JSON
ParameterWajibDeskripsi
serverOpsionalSet 3 untuk Server 3.
countryWajibID negara Server 3 dari endpoint countries.
curl -X GET "https://tai.vxe.biz.id/v1/services?server=3&country=6" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://tai.vxe.biz.id/v1/services?server=3&country=6', {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const { data } = await res.json();
import requests

r = requests.get(
    "https://tai.vxe.biz.id/v1/services",
    params={"server": 3, "country": 6},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=15
)
print(r.json()["data"])

Contoh Response

{
  "success": true,
  "server": 3,
  "country": "Indonesia",
  "data": [
    { "id": "wa", "name": "WhatsApp", "price": null, "stock": null },
    { "id": "tg", "name": "Telegram", "price": null, "stock": null },
    { "id": "go", "name": "Google",   "price": null, "stock": null }
  ]
}

Cek Harga & Stok (Server 3)

Mengambil daftar produk Server 3 (provider + harga + stok) untuk sebuah layanan. Harga provider dihitung dalam USD lalu dikonversi ke Rupiah. Nilai operator = ID provider Server 3.

GET /v1/products?server=3&country=6&service=wa JSON
curl -X GET "https://tai.vxe.biz.id/v1/products?server=3&country=6&service=wa" \
  -H "Authorization: Bearer YOUR_API_KEY"
const url = 'https://tai.vxe.biz.id/v1/products?server=3&country=6&service=wa';
const res = await fetch(url, {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const { data } = await res.json();
console.log(data.products);
import requests

r = requests.get(
    "https://tai.vxe.biz.id/v1/products",
    params={"server": 3, "country": 6, "service": "wa"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=15
)
print(r.json()["data"]["products"])

Contoh Response

{
  "success": true,
  "server": 3,
  "data": {
    "country": "Indonesia",
    "service": "WhatsApp",
    "products": [
      { "id": "1107", "operator": "1107", "name": "WhatsApp", "price": 3400, "stock": 12 },
      { "id": "1109", "operator": "1109", "name": "WhatsApp", "price": 4100, "stock": 5 }
    ]
  }
}

Buat Order Server 3 (Beli Nomor)

Membuat order Server 3 dan mengembalikan nomor virtual. Saldo langsung terpotong. Order Server 3 dimulai dengan status PENDING.

POST /v1/order JSON
BodyWajibDeskripsi
serverWajibSet 3 untuk Server 3.
countryWajibID negara Server 3.
serviceWajibKode layanan Server 3, contoh: wa.
operatorOpsionalID provider Server 3. Kosong = provider termurah.
max_priceOpsionalBatasi harga maksimum (Rupiah).
curl -X POST "https://tai.vxe.biz.id/v1/order" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "server": 3,
    "country": 6,
    "service": "wa"
  }'
const res = await fetch('https://tai.vxe.biz.id/v1/order', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ server: 3, country: 6, service: 'wa' })
});
const data = await res.json();
console.log(data.data.phone_number);
import requests

r = requests.post(
    "https://tai.vxe.biz.id/v1/order",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json={"server": 3, "country": 6, "service": "wa"},
    timeout=30
)
order = r.json()["data"]
print(order["order_id"], order["phone_number"])

Response Sukses

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "server": 3,
    "server_name": "Server 3",
    "country": "Indonesia",
    "service": "WhatsApp",
    "phone_number": "628123456789",
    "status": "PENDING",
    "price": 3400,
    "balance_after": 46600,
    "expires_at": null
  }
}

Response Error

{
  "success": false,
  "error": {
    "code": "NO_NUMBER",
    "message": "Stok nomor habis untuk layanan ini."
  }
}

Ambil OTP / Cek Status (Server 3)

Polling status order Server 3 hingga kode OTP masuk. Disarankan polling setiap 3–5 detik.

GET /v1/order/{order_id} JSON
StatusArti
PENDINGOrder dibuat, nomor sedang disiapkan Server 3.
ACTIVENomor aktif, menunggu SMS masuk.
OTP_RECEIVEDKode OTP sudah diterima.
CANCELEDDibatalkan / kedaluwarsa.
curl -X GET "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D" \
  -H "Authorization: Bearer YOUR_API_KEY"
async function pollOtp(orderId, interval = 4000) {
  while (true) {
    const res = await fetch(`https://tai.vxe.biz.id/v1/order/${orderId}`, {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    });
    const { data } = await res.json();
    if (data.status === 'OTP_RECEIVED') return data.otp;
    await new Promise(r => setTimeout(r, interval));
  }
}
import time, requests

headers = {"Authorization": "Bearer YOUR_API_KEY"}
while True:
    r = requests.get(
        "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D",
        headers=headers, timeout=15
    )
    data = r.json()["data"]
    if data["status"] == "OTP_RECEIVED":
        print("OTP:", data["otp"])
        break
    time.sleep(4)

Response — OTP Diterima

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "status": "OTP_RECEIVED",
    "otp": "482913",
    "otp_message": null,
    "phone_number": "628123456789",
    "expires_in": null
  }
}

Response — Masih Menunggu

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "status": "PENDING",
    "otp": null,
    "phone_number": "628123456789",
    "expires_in": null
  }
}

Resend OTP

Meminta sistem mengirim ulang SMS ke nomor yang sama tanpa membuat order baru.

POST /v1/order/{order_id}/resend JSON
curl -X POST "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/resend" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/resend', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await res.json();
import requests

r = requests.post(
    "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/resend",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=30
)
print(r.json())

Contoh Response

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "status": "ACTIVE",
    "message": "Permintaan kirim ulang OTP berhasil."
  }
}

Selesaikan Order

Menandai order Server 3 selesai setelah OTP diterima, agar nomor dilepas kembali ke stok.

POST /v1/order/{order_id}/finish JSON
curl -X POST "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/finish" \
  -H "Authorization: Bearer YOUR_API_KEY"
await fetch('https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/finish', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
import requests

requests.post(
    "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/finish",
    headers={"Authorization": "Bearer YOUR_API_KEY"}, timeout=30
)

Contoh Response

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "status": "COMPLETED"
  }
}

Batalkan Order

Membatalkan order Server 3 yang belum menerima OTP. Saldo dikembalikan (refund) bila pembatalan disetujui penyedia.

POST /v1/order/{order_id}/cancel JSON
curl -X POST "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/cancel" \
  -H "Authorization: Bearer YOUR_API_KEY"
const res = await fetch('https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/cancel', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});
const data = await res.json(); // data.refunded: true / false
import requests

r = requests.post(
    "https://tai.vxe.biz.id/v1/order/VY-3-1A2B3C4D/cancel",
    headers={"Authorization": "Bearer YOUR_API_KEY"}, timeout=30
)
print(r.json()["data"])

Contoh Response

{
  "success": true,
  "data": {
    "order_id": "VY-3-1A2B3C4D",
    "status": "CANCELED",
    "refunded": true,
    "balance_after": 50000
  }
}

Cek Saldo

Mengambil saldo akun yang dipakai untuk membeli nomor Server 3 (sama dengan Server 1).

GET /v1/balance JSON

Contoh Response

{
  "success": true,
  "data": {
    "user_id": 123456789,
    "balance": 50000,
    "currency": "IDR"
  }
}

Error & Status Code

Semua error selalu memakai format success: false,termasuk error dari Server 3.

HTTPCodeDeskripsi
400BAD_REQUESTParameter tidak lengkap atau tidak valid.
400PRICE_TOO_HIGHHarga melebihi max_price.
401INVALID_API_KEYAPI Key tidak valid atau sudah dicabut.
402INSUFFICIENT_BALANCESaldo tidak cukup untuk membuat order.
404NO_NUMBERStok nomor Server 3 habis untuk layanan/negara tersebut.
404ORDER_NOT_FOUNDOrder ID tidak ditemukan.
409ORDER_NOT_ACTIVEOrder sudah selesai/dibatalkan.
429RATE_LIMITEDTerlalu banyak request. Coba lagi beberapa saat.
502PROVIDER_ERRORGagal menghubungi Server 3.
500SERVER_ERRORKesalahan internal pada server.

Contoh Error Response

{
  "success": false,
  "error": {
    "code": "NO_NUMBER",
    "message": "Stok nomor habis untuk layanan ini."
  }
}

Butuh saldo atau API Key?

Deposit dan generate API Key dilakukan melalui Bot Telegram — sama untuk Server 1 dan Server 3.

Lihat cara deposit