Tanpa KYC — tidak perlu ID, swafoto, atau dokumen. Bayar dengan kripto.
Bahasa: Bahasa Indonesia
Pilih 1 GB

Referensi API

Isi saldo dengan kripto

Isi saldo dengan kripto: dapatkan alamat deposit dan jumlah yang tepat, kirim jumlah tersebut persis, laporkan bahwa pembayaran telah dikirim (ID transaksi opsional), lalu pantau proses isi saldo hingga dana masuk. Saldo dapat digunakan untuk membayar paket apa pun.

7 menit baca

Endpoint di halaman ini

  • GET /v1/catalog/coins: Mata uang kripto dan jaringan yang diterima (beserta alamat deposit tetapnya)
  • POST /v1/topups: Mulai isi saldo kripto (alamat tetap, jumlah pasti)
  • POST /v1/topups/{topUpId}/txid: Laporkan pembayaran sebagai telah dikirim (TXID opsional)
  • GET /v1/topups/{topUpId}: Dapatkan isi saldo (periksa status terkini)
  • GET /v1/topups: Lihat daftar isi saldo kripto

URL dasar https://localserpproxy.com/api/v1. Autentikasi, error, dan batas: lihat ringkasan API].

Mata uang kripto dan jaringan yang diterima (dengan alamat deposit tetap)

GET/v1/catalog/coins

Publik: tidak perlu kunci API.

Respons 200 OK

{
  "data": [
    {
      "code": "BTC",
      "name": "Bitcoin",
      "networks": [
        {
          "id": "bitcoin",
          "name": "Bitcoin",
          "confirmationsRequired": 2,
          "estimatedMinutes": null,
          "memoRequired": false,
          "address": "DEPOSIT_ADDRESS"
        }
      ]
    }
  ]
}

Contoh kode

curl
curl -s "https://localserpproxy.com/api/v1/catalog/coins"
Python
import os
import requests

API = "https://localserpproxy.com/api/v1"

r = requests.get(f"{API}/catalog/coins", timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/catalog/coins`);
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Mulai isi saldo dengan kripto (alamat tetap, jumlah pasti)

POST/v1/topups

  • amountUsd ≥ 25.00 USD dan ≤ batas maksimum (default 10,000.00): 422 di amountUsd jika tidak.
  • coin + network harus salah satu dari GET /v1/catalog/coins (jika tidak, 409 coin_unavailable).
  • Mengembalikan address tetap milik jaringan dan amountCrypto pasti = amountUsd / rate, dibulatkan ke atas sesuai presisi koin (BTC/LTC/ETH/SOL 8 desimal, USDT/USDC 6), ditambah selisih kecil unik pada digit terakhir agar tidak ada 2 isi saldo terbuka di jaringan yang sama meminta jumlah yang sama. rate dikunci hingga expiresAt (30 menit); txidDeadline = expiresAt + 72 jam.
  • Opsional purchase (isi yang sama dengan POST /v1/orders): divalidasi dan dihitung harganya sekarang (422 dengan nama kolom berawalan purchase., 409 plan_unavailable…). amountUsd harus mencukupi total purchase − saldo saat ini (422 too_small di amountUsd). Saat isi saldo dikreditkan, pesanan dibuat dari saldo dalam transaksi yang sama; purchase.status menjadi completed (dengan orderId) atau failed (failureReason; dana tetap ada di saldo).

Autentikasi: kunci API di header Authorization: Bearer API_KEY.

Parameter

NamaDiTipeWajibDeskripsi
Idempotency-KeyheaderstringTidakKunci unik (misalnya UUID) untuk mengulangi POST dengan aman. Berlaku 24 jam. — maks. 128 karakter

Isi permintaan

KolomTipeWajibDeskripsi
amountUsdstring (USD, 2 decimals)YaUSD untuk ditambahkan: ≥ 25.00, ≤ 10,000.00 secara default.
coinstringYa—
networkstringYa—
purchaseobjectTidakRencana pembelian dari saldo setelah isi saldo dikreditkan (isi yang sama dengan POST /v1/orders).
Contoh: Saldo
{
  "amountUsd": "50.00",
  "coin": "USDT",
  "network": "tron"
}
Contoh: Checkout
{
  "amountUsd": "25.00",
  "coin": "BTC",
  "network": "bitcoin",
  "purchase": {
    "planId": "res-10",
    "quantity": 1
  }
}

Respons 201 Created

{
  "id": "top_7d2kq9x1",
  "status": "verifying",
  "final": false,
  "amountUsd": "25.00",
  "coin": "USDT",
  "network": "tron",
  "address": "DEPOSIT_ADDRESS",
  "amountCrypto": "25.000137",
  "rate": "1.00",
  "paymentUri": "PAYMENT_URI",
  "expiresAt": "2026-10-05T14:33:11Z",
  "txidDeadline": "2026-10-08T14:33:11Z",
  "confirmationsRequired": 20,
  "confirmations": 7,
  "txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "txidSubmittedAt": "2026-10-05T14:09:42Z",
  "amountReceivedCrypto": "25.000137",
  "explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "creditedUsd": null,
  "creditedAt": null,
  "rejection": null,
  "purchase": {
    "planId": "res-10",
    "planName": "Local team",
    "quantity": 1,
    "options": {},
    "promoCode": null,
    "total": "7.50",
    "status": "pending",
    "orderId": null,
    "failureReason": null
  },
  "createdAt": "2026-10-05T14:03:11Z"
}

Contoh kode

curl
curl -s -X POST "https://localserpproxy.com/api/v1/topups" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"amountUsd":"50.00","coin":"USDT","network":"tron"}'
Python
import os, uuid
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}", "Idempotency-Key": str(uuid.uuid4())}

r = requests.post(f"{API}/topups", headers=HEADERS, json={"amountUsd": "50.00", "coin": "USDT", "network": "tron"}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
import { randomUUID } from 'node:crypto';

const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/topups`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Idempotency-Key': randomUUID(), 'Content-Type': 'application/json' },
  body: JSON.stringify({ amountUsd: '50.00', coin: 'USDT', network: 'tron' }),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Laporkan pembayaran sebagai terkirim (TXID opsional)

POST/v1/topups/{topUpId}/txid

Laporkan pembayaran sebagai terkirim setelah dana meninggalkan dompet atau bursa Anda: ini adalah versi API dari tombol “Saya sudah mengirim pembayaran”. ID transaksi (TXID) bersifat opsional: kirim isi kosong ({}), atau tambahkan txid jika Anda memilikinya. Pembayaran Anda dicocokkan dengan isi saldo ini berdasarkan jumlah pastinya (amountCrypto) pada jaringan dan alamat isi saldo tersebut, jadi kirim jumlah yang persis sama.

Dapat diterima saat isi saldo berstatus awaiting_payment, expired atau rejected, dan sebelum txidDeadline (expiresAt + 72 jam): laporan yang terlambat tidak akan menyebabkan pembayaran hilang. txid, jika diberikan, akan diperiksa berdasarkan format jaringan (422 di txid) dan tidak boleh diklaim oleh isi saldo lain (409 txid_already_used). Isi saldo yang sudah ditutup akan mengembalikan 409 topup_closed. Isi saldo kemudian berstatus verifying selama pembayaran diperiksa di blockchain, dan berakhir dengan status credited setelah jaringan mengonfirmasi transaksi, atau rejected (dengan rejection).

Autentikasi: kunci API di header Authorization: Bearer API_KEY.

Parameter

NamaDiTipeWajibDeskripsi
topUpIdpathstringYa—

Isi permintaan

KolomTipeWajibDeskripsi
txidstringTidakOpsional. Hash transaksi: 64 karakter heksadesimal (bitcoin, litecoin, tron), 0x + 64 karakter heksadesimal (ethereum), tanda tangan base58 (solana). Kosong atau tidak dicantumkan: pembayaran dicocokkan berdasarkan jumlah pastinya. — maks. 128 karakter
Contoh: Pembayaran terkirim
{}
Contoh: Dengan TXID (opsional)
{
  "txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
}

Respons 200 OK

{
  "id": "top_7d2kq9x1",
  "status": "verifying",
  "final": false,
  "amountUsd": "25.00",
  "coin": "USDT",
  "network": "tron",
  "address": "DEPOSIT_ADDRESS",
  "amountCrypto": "25.000137",
  "rate": "1.00",
  "paymentUri": "PAYMENT_URI",
  "expiresAt": "2026-10-05T14:33:11Z",
  "txidDeadline": "2026-10-08T14:33:11Z",
  "confirmationsRequired": 20,
  "confirmations": 7,
  "txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "txidSubmittedAt": "2026-10-05T14:09:42Z",
  "amountReceivedCrypto": "25.000137",
  "explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "creditedUsd": null,
  "creditedAt": null,
  "rejection": null,
  "purchase": {
    "planId": "res-10",
    "planName": "Local team",
    "quantity": 1,
    "options": {},
    "promoCode": null,
    "total": "7.50",
    "status": "pending",
    "orderId": null,
    "failureReason": null
  },
  "createdAt": "2026-10-05T14:03:11Z"
}

Contoh kode

curl
curl -s -X POST "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1/txid" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.post(f"{API}/topups/top_7d2kq9x1/txid", headers=HEADERS, json={}, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/topups/top_7d2kq9x1/txid`, {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({}),
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Isi saldo (pantau status terkini)

GET/v1/topups/{topUpId}

Pantau rute ini untuk mengikuti proses isi saldo: setiap 10 dtk selama status = verifying, setiap 30 dtk saat menunggu pembayaran, lalu berhenti saat final = true. Isi saldo menjadi expired jika pembayaran belum dilaporkan terkirim sebelum expiresAt; pembayaran masih dapat dilaporkan hingga txidDeadline.

Autentikasi: kunci API di header Authorization: Bearer API_KEY.

Parameter

NamaDiTipeWajibDeskripsi
topUpIdpathstringYa—

Respons 200 OK

{
  "id": "top_7d2kq9x1",
  "status": "verifying",
  "final": false,
  "amountUsd": "25.00",
  "coin": "USDT",
  "network": "tron",
  "address": "DEPOSIT_ADDRESS",
  "amountCrypto": "25.000137",
  "rate": "1.00",
  "paymentUri": "PAYMENT_URI",
  "expiresAt": "2026-10-05T14:33:11Z",
  "txidDeadline": "2026-10-08T14:33:11Z",
  "confirmationsRequired": 20,
  "confirmations": 7,
  "txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "txidSubmittedAt": "2026-10-05T14:09:42Z",
  "amountReceivedCrypto": "25.000137",
  "explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
  "creditedUsd": null,
  "creditedAt": null,
  "rejection": null,
  "purchase": {
    "planId": "res-10",
    "planName": "Local team",
    "quantity": 1,
    "options": {},
    "promoCode": null,
    "total": "7.50",
    "status": "pending",
    "orderId": null,
    "failureReason": null
  },
  "createdAt": "2026-10-05T14:03:11Z"
}

Contoh kode

curl
curl -s "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/topups/top_7d2kq9x1", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/topups/top_7d2kq9x1`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

Daftar isi saldo kripto

GET/v1/topups

Autentikasi: kunci API di header Authorization: Bearer API_KEY.

Parameter

NamaDiTipeWajibDeskripsi
pagequeryintegerTidak≥ 1, default 1
perPagequeryintegerTidak1–100, default 20
statusqueryawaiting_payment · verifying · credited · rejected · expiredTidakfinal = dikreditkan, atau kedaluwarsa / ditolak setelah txidDeadline.

Respons 200 OK

{
  "data": [
    {
      "id": "top_7d2kq9x1",
      "status": "verifying",
      "final": false,
      "amountUsd": "25.00",
      "coin": "USDT",
      "network": "tron",
      "address": "DEPOSIT_ADDRESS",
      "amountCrypto": "25.000137",
      "rate": "1.00",
      "paymentUri": "PAYMENT_URI",
      "expiresAt": "2026-10-05T14:33:11Z",
      "txidDeadline": "2026-10-08T14:33:11Z",
      "confirmationsRequired": 20,
      "confirmations": 7,
      "txid": "9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
      "txidSubmittedAt": "2026-10-05T14:09:42Z",
      "amountReceivedCrypto": "25.000137",
      "explorerUrl": "https://tronscan.org/#/transaction/9d2e5c0b1f7a4e3d8c6b2a1f0e9d8c7b6a5f4e3d2c1b0a9f8e7d6c5b4a3f41c7",
      "creditedUsd": null,
      "creditedAt": null,
      "rejection": null,
      "purchase": {
        "planId": "res-10",
        "planName": "Local team",
        "quantity": 1,
        "options": {},
        "promoCode": null,
        "total": "7.50",
        "status": "pending",
        "orderId": null,
        "failureReason": null
      },
      "createdAt": "2026-10-05T14:03:11Z"
    }
  ],
  "pagination": {
    "page": 1,
    "perPage": 20,
    "total": 1,
    "totalPages": 1
  }
}

Contoh kode

curl
curl -s "https://localserpproxy.com/api/v1/topups" \
  -H "Authorization: Bearer $API_KEY"
Python
import os
import requests

API = "https://localserpproxy.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['API_KEY']}"}

r = requests.get(f"{API}/topups", headers=HEADERS, timeout=30)
r.raise_for_status()
print(r.json())
Node.js
// Node.js 18+ (built-in fetch), ES module
const API = 'https://localserpproxy.com/api/v1';

const res = await fetch(`${API}/topups`, {
  headers: { Authorization: `Bearer ${process.env.API_KEY}` },
});
if (!res.ok) throw new Error((await res.json()).error?.message ?? `HTTP ${res.status}`);
console.log(await res.json());

1 GB US$1,50 · tanpa KYC

Lihat harga