Endpunkte auf dieser Seite
GET /v1/catalog/coins: Akzeptierte Kryptowährungen und Netzwerke (mit ihrer festen 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 (aktuellen Status abfragen)GET /v1/topups: Krypto-Aufladungen auflisten
Basis-URL https://africaproxies.com/api/v1. Authentifizierung, Fehler und Limits: siehe API-Übersicht.
Akzeptierte Kryptowährungen und Netzwerke (mit ihrer festen 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"
}
]
}
]
}Code-Beispiele
curl -s "https://africaproxies.com/api/v1/catalog/coins"import os
import requests
API = "https://africaproxies.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://africaproxies.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-Aufladung des Guthabens starten (feste Adresse, exakter Betrag)
POST/v1/topups
amountUsd≥ 25.00 USD und ≤ Höchstbetrag (standardmäßig 10,000.00), andernfalls422beiamountUsd.coin+networkmüssen ausGET /v1/catalog/coinsstammen (andernfalls409 coin_unavailable).- Gibt die feste
addressdes Netzwerks und den exakten BetragamountCrypto=amountUsd/ratezurück, auf die Genauigkeit der Kryptowährung aufgerundet (BTC/LTC/ETH/SOL: 8 Nachkommastellen, USDT/USDC: 6), zuzüglich eines kleinen eindeutigen Versatzes in den letzten Stellen, damit keine zwei offenen Aufladungen desselben Netzwerks denselben Betrag verlangen.ratebleibt bisexpiresAtfestgeschrieben (30 Minuten);txidDeadline=expiresAt+ 72 h. - Optionales
purchase(gleicher Body wiePOST /v1/orders): wird jetzt validiert und bepreist (422mit Feldnamen mit Präfixpurchase.,409 plan_unavailable…).amountUsdmuss den Gesamtbetrag vonpurchaseminus aktuellem Guthaben abdecken (422 too_smallbeiamountUsd). Sobald die Aufladung gutgeschrieben wird, erfolgt die Bestellung mit dem Guthaben in derselben Transaktion;purchase.statuswirdcompleted(mitorderId) oderfailed(failureReason; das Geld bleibt als Guthaben).
Authentifizierung: API Schlüssel im Authorization: Bearer API_KEY Header.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
Idempotency-Key | header | string | Nein | Eindeutiger Schlüssel (z. B. eine UUID) zum sicheren Wiederholen eines POST. 24 h gespeichert. — max. 128 Zeichen |
Anfragekörper
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
amountUsd | string (USD, 2 decimals) | Ja | Aufzuladende USD: standardmäßig ≥ 25.00, ≤ 10,000.00. |
coin | string | Ja | — |
network | string | Ja | — |
purchase | object | Nein | Mit Guthaben zu kaufender Tarif, sobald die Aufladung gutgeschrieben wird (gleicher 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": "Team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "5.94",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Code-Beispiele
curl -s -X POST "https://africaproxies.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://africaproxies.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://africaproxies.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 deine Wallet oder Börse verlassen hat: Das ist die API-Version der Schaltfläche „Ich habe die Zahlung gesendet“. Die Transaktions-ID (TXID) ist optional: Sende einen leeren Body ({}), oder ergänze txid, wenn du sie hast. Die Zahlung wird dieser Aufladung anhand des exakten Betrags (amountCrypto) im Netzwerk und an der Adresse der Aufladung zugeordnet. Sende deshalb genau diesen Betrag.
Akzeptiert, solange die Aufladung awaiting_payment, expired oder rejected ist und bevor txidDeadline erreicht ist (expiresAt + 72 h): Eine verspätete Meldung führt nie zum Verlust einer Zahlung. Ein angegebenes txid wird auf das Netzwerkformat geprüft (422 bei txid) und darf keiner anderen Aufladung zugeordnet sein (409 txid_already_used). Eine geschlossene Aufladung gibt 409 topup_closed zurück. Danach ist die Aufladung verifying, während die Zahlung auf der Blockchain geprüft wird. Nach Bestätigung der Transaktion durch das Netzwerk endet sie als credited oder als rejected (mit rejection).
Authentifizierung: API Schlüssel im Authorization: Bearer API_KEY Header.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
topUpId | path | string | Ja | — |
Anfragekörper
| Feld | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
txid | string | Nein | Optional. Transaktionshash: 64 Hex-Zeichen (bitcoin, litecoin, tron), 0x + 64 Hex-Zeichen (ethereum), base58-Signatur (solana). Leer oder nicht angegeben: Die Zahlung wird anhand ihres 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": "Team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "5.94",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Code-Beispiele
curl -s -X POST "https://africaproxies.com/api/v1/topups/top_7d2kq9x1/txid" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{}'import os
import requests
API = "https://africaproxies.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://africaproxies.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());Aufladung abrufen (aktuellen Status abfragen)
GET/v1/topups/{topUpId}
Frage diese Route ab, um eine Aufladung zu verfolgen: alle 10 s bei status = verifying, alle 30 s während des Wartens auf die Zahlung; stoppe bei final = true. Eine Aufladung wird expired, wenn die Zahlung nicht vor expiresAt als gesendet gemeldet wurde; sie kann noch bis txidDeadline gemeldet werden.
Authentifizierung: API Schlüssel im Authorization: Bearer API_KEY Header.
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": "Team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "5.94",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}Code-Beispiele
curl -s "https://africaproxies.com/api/v1/topups/top_7d2kq9x1" \
-H "Authorization: Bearer $API_KEY"import os
import requests
API = "https://africaproxies.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://africaproxies.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 Authorization: Bearer API_KEY Header.
Parameter
| Name | In | Typ | Erforderlich | Beschreibung |
|---|---|---|---|---|
page | query | integer | Nein | ≥ 1, Standard 1 |
perPage | query | integer | Nein | 1–100, Standard 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": "Team",
"quantity": 1,
"options": {},
"promoCode": null,
"total": "5.94",
"status": "pending",
"orderId": null,
"failureReason": null
},
"createdAt": "2026-10-05T14:03:11Z"
}
],
"pagination": {
"page": 1,
"perPage": 20,
"total": 1,
"totalPages": 1
}
}Code-Beispiele
curl -s "https://africaproxies.com/api/v1/topups" \
-H "Authorization: Bearer $API_KEY"import os
import requests
API = "https://africaproxies.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://africaproxies.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());