Endpunkte auf dieser Seite
GET /v1/catalog/coins: Akzeptierte Kryptowährungen und Netzwerke (mit fester Einzahlungsadresse)POST /v1/topups: Krypto-Aufladung des Guthabens starten (feste Adresse, exakter Betrag)POST /v1/topups/{topUpId}/txid: Zahlung als gesendet melden (TXID optional)GET /v1/topups/{topUpId}: Aufladung abrufen (Live-Status abfragen)GET /v1/topups: Krypto-Aufladungen auflisten
Basis-URL https://localserpproxy.com/api/v1. Informationen zu Authentifizierung, Fehlern und Limits finden Sie in der API-Übersicht.
Akzeptierte Kryptowährungen und Netzwerke (mit fester Einzahlungsadresse)
GET/v1/catalog/coins
Öffentlich: kein API-Schlüssel erforderlich.
Antwort 200 OK
{
"data": [
{
"code": "BTC",
"name": "Bitcoin",
"networks": [
{
"id": "bitcoin",
"name": "Bitcoin",
"confirmationsRequired": 2,
"estimatedMinutes": null,
"memoRequired": false,
"address": "DEPOSIT_ADDRESS"
}
]
}
]
}Codebeispiele
curl -s "https://localserpproxy.com/api/v1/catalog/coins"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 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());Krypto-Guthabenaufladung starten (feste Adresse, exakter Betrag)
POST/v1/topups
amountUsd≥ 25.00 USD und ≤ dem Höchstbetrag (standardmäßig 10,000.00):422aufamountUsd, andernfalls.coin+networkmuss einem der folgenden Werte entsprechen:GET /v1/catalog/coins(andernfalls409 coin_unavailable).- Gibt die feste
addressdes Netzwerks und den exaktenamountCrypto=amountUsd/ratezurück, aufgerundet auf die Genauigkeit der jeweiligen Kryptowährung (BTC/LTC/ETH/SOL 8 Dezimalstellen, USDT/USDC 6), zuzüglich eines kleinen eindeutigen Aufschlags auf die letzten Stellen, damit bei offenen Aufladungen im selben Netzwerk nie derselbe Betrag angefordert wird.rateist bisexpiresAt(30 Minuten) gesperrt;txidDeadline=expiresAt+ 72 h. - Optional
purchase(derselbe Body wiePOST /v1/orders): wird jetzt validiert und berechnet (422mit Feldnamen, denenpurchase.,409 plan_unavailable… vorangestellt ist).amountUsdmuss den Gesamtbetrag vonpurchaseabzüglich des aktuellen Guthabens abdecken (422 too_smallaufamountUsd). Sobald die Aufladung gutgeschrieben ist, wird die Bestellung in derselben Transaktion mit dem Guthaben aufgegeben;purchase.statuswird zucompleted(mitorderId) oderfailed(failureReason; das Guthaben bleibt auf dem Konto).
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
Idempotency-Key | header | string | Nein | Eindeutiger Schlüssel (z. B. eine UUID) für sichere POST-Wiederholungen. 24 h gültig. — max. 128 Zeichen |
Anfragetext
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
amountUsd | string (USD, 2 decimals) | Ja | Aufzuladender Betrag in USD: ≥ 25.00, standardmäßig ≤ 10,000.00. |
coin | string | Ja | — |
network | string | Ja | — |
purchase | object | Nein | Bestellung, die nach Gutschrift der Aufladung mit dem Guthaben aufgegeben werden soll (derselbe Body wie POST /v1/orders). |
{
"amountUsd": "50.00",
"coin": "USDT",
"network": "tron"
}{
"amountUsd": "25.00",
"coin": "BTC",
"network": "bitcoin",
"purchase": {
"planId": "res-10",
"quantity": 1
}
}Antwort 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"
}Codebeispiele
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"}'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 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());Zahlung als gesendet melden (TXID optional)
POST/v1/topups/{topUpId}/txid
Melde die Zahlung als gesendet, sobald sie dein Wallet oder deine Börse verlassen hat: Dies ist die API-Version der Schaltfläche „Ich habe die Zahlung gesendet“. Die Transaktions-ID (TXID) ist optional: Sende einen leeren Body ({}) oder füge txid hinzu, falls vorhanden. Deine Zahlung wird anhand des exakten Betrags (amountCrypto) dem Netzwerk und der Adresse dieser Aufladung zugeordnet. Sende daher genau diesen Betrag.
Akzeptiert, solange die Aufladung den Status awaiting_payment, expired oder rejected hat und vor txidDeadline (expiresAt + 72 h): Eine verspätete Meldung führt niemals zum Verlust einer Zahlung. Eine angegebene txid wird anhand des Formats des Netzwerks geprüft (422 auf txid) und darf nicht bereits einer anderen Aufladung zugeordnet sein (409 txid_already_used). Bei einer geschlossenen Aufladung wird 409 topup_closed zurückgegeben. Anschließend erhält die Aufladung den Status verifying, während die Zahlung auf der Blockchain geprüft wird. Sie endet mit credited, sobald das Netzwerk die Transaktion bestätigt hat, oder mit rejected (mit rejection).
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
topUpId | path | string | Ja | — |
Anfragetext
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
txid | string | Nein | Optional. Transaktions-Hash: 64 Hex-Zeichen (Bitcoin, Litecoin, Tron), 0x + 64 Hex-Zeichen (Ethereum), Base58-Signatur (Solana). Leer oder nicht angegeben: Die Zahlung wird anhand des exakten Betrags zugeordnet. — max. 128 Zeichen |
{}{
"txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"
}Antwort 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"
}Codebeispiele
curl -s -X POST "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1/txid" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{}'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 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());Guthaben aufladen (Live-Status abfragen)
GET/v1/topups/{topUpId}
Rufe diese Route regelmäßig auf, um eine Aufladung zu verfolgen: alle 10 s, solange status = verifying, alle 30 s, solange auf die Zahlung gewartet wird, und beende die Abfrage, sobald final = true. Eine Aufladung erhält den Status expired, wenn vor expiresAt nicht gemeldet wurde, dass die Zahlung gesendet wurde; die Meldung ist bis txidDeadline weiterhin möglich.
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
topUpId | path | string | Ja | — |
Antwort 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"
}Codebeispiele
curl -s "https://localserpproxy.com/api/v1/topups/top_7d2kq9x1" \
-H "Authorization: Bearer $API_KEY"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 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());Krypto-Aufladungen auflisten
GET/v1/topups
Authentifizierung: API-Schlüssel im Header Authorization: Bearer API_KEY.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
page | query | integer | Nein | ≥ 1, Standardwert 1 |
perPage | query | integer | Nein | 1–100, Standardwert 20 |
status | query | awaiting_payment · verifying · credited · rejected · expired | Nein | final = gutgeschrieben oder nach txidDeadline abgelaufen / abgelehnt. |
Antwort 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
}
}Codebeispiele
curl -s "https://localserpproxy.com/api/v1/topups" \
-H "Authorization: Bearer $API_KEY"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 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());