KYC 없이 — 신분증, 셀카, 서류가 필요하지 않습니다. 암호화폐로 결제하세요.
언어: 한국어
1 GB 선택

API 레퍼런스

암호화폐 충전

암호화폐로 잔액을 충전하세요. 입금 주소와 정확한 금액을 확인하고, 해당 금액을 정확히 전송한 다음 결제 완료를 알리세요(거래 ID는 선택 사항). 이후 잔액에 충전 금액이 반영될 때까지 진행 상황을 확인하세요. 잔액은 모든 요금제 결제에 사용할 수 있습니다.

7 분 읽기

이 페이지의 엔드포인트

  • GET /v1/catalog/coins: 지원 암호화폐 및 네트워크(고정 입금 주소 포함)
  • POST /v1/topups: 잔액 암호화폐 충전 시작(고정 주소, 정확한 금액)
  • POST /v1/topups/{topUpId}/txid: 결제 전송 완료로 보고(TXID 선택 사항)
  • GET /v1/topups/{topUpId}: 충전 조회(실시간 상태 확인)
  • GET /v1/topups: 암호화폐 충전 목록 조회

기본 URL https://localserpproxy.com/api/v1. 인증, 오류 및 제한 사항은 API 개요]를 참조하세요.

허용되는 암호화폐 및 네트워크(고정 입금 주소 포함)

GET/v1/catalog/coins

공개: API 키가 필요하지 않습니다.

응답 200 OK

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

코드 예시

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());

잔액 충전을 위한 암호화폐 충전 시작(고정 주소, 정확한 금액)

POST/v1/topups

  • amountUsd ≥ 25.00 USD이고 기본 최대 금액인 10,000.00 이하: 그렇지 않으면 422(amountUsd 기준).
  • coin + network는 GET /v1/catalog/coins 중 하나여야 합니다(그렇지 않으면 409 coin_unavailable).
  • 네트워크의 고정 address과 코인 정밀도에 맞춰 올림한 정확한 amountCrypto = amountUsd / rate을 반환합니다(BTC/LTC/ETH/SOL은 소수점 8자리, USDT/USDC는 소수점 6자리). 또한 같은 네트워크에서 진행 중인 충전 2건이 동일한 금액을 요청하지 않도록 마지막 자릿수에 작고 고유한 오프셋을 더합니다. rate은 expiresAt까지(30분) 잠깁니다. txidDeadline = expiresAt + 72 h.
  • 선택 사항인 purchase(POST /v1/orders와 동일한 본문): 지금 검증하고 가격을 산정합니다(필드 이름에 purchase., 409 plan_unavailable… 접두사를 붙인 422). amountUsd은 총 purchase 금액에서 현재 잔액을 뺀 금액을 충당해야 합니다(amountUsd 기준 422 too_small). 충전 금액이 잔액에 반영되면 동일한 트랜잭션에서 잔액으로 주문이 접수됩니다. purchase.status는 completed(orderId 포함) 또는 failed(failureReason, 금액은 잔액에 유지) 상태가 됩니다.

인증: Authorization: Bearer API_KEY 헤더에 API 키를 입력합니다.

매개변수

이름위치유형필수설명
Idempotency-Keyheaderstring아니요POST 요청을 안전하게 재시도하기 위한 고유 키(예: UUID). 24 h 동안 보관됩니다. — 최대 128자

요청 본문

필드유형필수설명
amountUsdstring (USD, 2 decimals)예충전할 USD 금액: ≥ 25.00, 기본 최대 금액 10,000.00 이하.
coinstring예—
networkstring예—
purchaseobject아니요충전 금액이 잔액에 반영되면 잔액으로 구매할 계획입니다(POST /v1/orders와 동일한 본문).
예시: 잔액
{
  "amountUsd": "50.00",
  "coin": "USDT",
  "network": "tron"
}
예시: 결제
{
  "amountUsd": "25.00",
  "coin": "BTC",
  "network": "bitcoin",
  "purchase": {
    "planId": "res-10",
    "quantity": 1
  }
}

응답 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"
}

코드 예시

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());

결제를 보냈다고 알리기(TXID 선택 사항)

POST/v1/topups/{topUpId}/txid

결제가 지갑이나 거래소에서 출금된 후 결제를 보냈다고 알리세요. API에서 “결제를 보냈습니다” 버튼을 사용하는 것과 같습니다. 트랜잭션 ID(TXID)는 선택 사항입니다. 빈 본문({})을 보내거나, TXID가 있으면 txid을 추가하세요. 결제는 충전 건의 네트워크와 주소에서 정확한 금액(amountCrypto)으로 대조되므로 반드시 해당 금액을 정확히 보내야 합니다.

충전 상태가 awaiting_payment, expired 또는 rejected이고 txidDeadline(expiresAt + 72 h) 이전이면 알릴 수 있습니다. 늦게 알리더라도 결제가 누락되지 않습니다. txid을 입력한 경우 네트워크 형식(txid 기준 422)을 확인하며, 다른 충전 건에서 이미 사용 중이어서는 안 됩니다(409 txid_already_used). 종료된 충전 건은 409 topup_closed를 반환합니다. 이후 블록체인에서 결제를 확인하는 동안 충전 상태는 verifying이 되며, 네트워크에서 트랜잭션을 확인하면 credited 상태가 됩니다. 확인에 실패하면 rejected(rejection 포함) 상태가 됩니다.

인증: Authorization: Bearer API_KEY 헤더에 API 키를 입력합니다.

매개변수

이름위치유형필수설명
topUpIdpathstring예—

요청 본문

필드유형필수설명
txidstring아니요선택 사항. 트랜잭션 해시: 16진수 64자(bitcoin, litecoin, tron), 0x + 16진수 64자(ethereum), base58 서명(solana). 비어 있거나 생략된 경우 정확한 금액으로 결제를 대조합니다. — 최대 128자
예시: 결제 전송 완료
{}
예시: TXID 포함(선택 사항)
{
  "txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
}

응답 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"
}

코드 예시

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());

충전 상태 확인

GET/v1/topups/{topUpId}

충전 상태를 확인하려면 이 경로를 폴링하세요. status = verifying 동안에는 10초마다, 결제를 기다리는 동안에는 30초마다 확인하고 final = true이 되면 중지하세요. expiresAt 전에 결제를 전송했다고 알리지 않으면 충전 상태가 expired로 변경됩니다. 그래도 txidDeadline까지는 전송 사실을 알릴 수 있습니다.

인증: Authorization: Bearer API_KEY 헤더에 API 키를 입력합니다.

매개변수

이름위치유형필수설명
topUpIdpathstring예—

응답 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"
}

코드 예시

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());

암호화폐 충전 내역 보기

GET/v1/topups

인증: Authorization: Bearer API_KEY 헤더에 API 키를 입력합니다.

매개변수

이름위치유형필수설명
pagequeryinteger아니요≥ 1, 기본값 1
perPagequeryinteger아니요1–100, 기본값 20
statusqueryawaiting_payment · verifying · credited · rejected · expired아니요final = 충전 완료 또는 txidDeadline 이후 만료 / 거부.

응답 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
  }
}

코드 예시

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 · KYC 없이

요금 보기