Socials Up — Reseller API
Standard SMM panel API (v2). Automate your orders, paid from your wallet balance, at API rates that are lower than the prices shown in the Telegram bot.
Overview
Base URL: https://api.digitalempire.cc/api/v2 — HTTP POST (recommended) or GET. Parameters can be sent as application/x-www-form-urlencoded or JSON. All responses are JSON (UTF-8).
Pricing: the API price is lower than the bot price. Rates returned by the services action are the exact rates charged for API orders, per 1,000 units, in USD. Orders are paid from your wallet balance in the bot — top it up there.
Get your key: open @Social_U_p_Bot → 🔑 API → Generate my API key. The full key is shown only once; you can regenerate it at any time (the old key stops working immediately). Keep it secret.
Tip: prefer POST so your key never appears in URLs or server logs. Compatible with standard SMM panel scripts and resellers' panels ("API v2" / PerfectPanel format).
Endpoints
All requests need the parameters key (your API key) and action.
| Action | Parameters | Description |
|---|---|---|
services | — | List of services with your API rates |
add | service, link, quantity | Place an order. Returns the order ID |
status | order or orders (comma-separated, max 100) | Order status (one or many) |
balance | — | Your wallet balance |
cancel | orders (comma-separated, max 100) | Request cancellation (services that support it). The refund is automatic once cancellation is confirmed |
refill | order | Request a refill of a completed order (services marked refill: true) |
refill_status | refill or refills (comma-separated) | Status of a refill request |
services
curl -s --compressed -X POST "https://api.digitalempire.cc/api/v2" -d "key=YOUR_API_KEY" -d "action=services"
[
{
"service": 12033,
"name": "TikTok Video Views Mix 2B",
"type": "Default",
"category": "Cheapest best-sellers",
"rate": "0.014",
"min": "100",
"max": "2147483647",
"refill": false,
"cancel": true
}
]
rate = USD per 1,000 units. min / max = allowed quantity. type is always Default (link + quantity). The response is gzip-compressed if you send Accept-Encoding: gzip.
add — place an order
curl -s -X POST "https://api.digitalempire.cc/api/v2" \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=12033" \
-d "link=https://www.tiktok.com/@user/video/1234567890" \
-d "quantity=1000"
import requests
API = "https://api.digitalempire.cc/api/v2"
KEY = "YOUR_API_KEY"
r = requests.post(API, data={
"key": KEY,
"action": "add",
"service": 12033,
"link": "https://www.tiktok.com/@user/video/1234567890",
"quantity": 1000,
}, timeout=60)
print(r.json()) # {'order': 4321}
st = requests.post(API, data={"key": KEY, "action": "status", "order": 4321}, timeout=30).json()
print(st["status"], st["remains"])
<?php
$api = "https://api.digitalempire.cc/api/v2";
$post = [
"key" => "YOUR_API_KEY",
"action" => "add",
"service" => 12033,
"link" => "https://www.tiktok.com/@user/video/1234567890",
"quantity" => 1000,
];
$ch = curl_init($api);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res); // Array ( [order] => 4321 )
{ "order": 4321 }
The order cost is rate × quantity / 1000, debited from your wallet atomically. Rules identical to the bot: quantity within min–max, a valid link, and only one active order per link and service at a time (wait until the previous one is completed).
status
curl -s "https://api.digitalempire.cc/api/v2?key=YOUR_API_KEY&action=status&order=4321"
{
"charge": "0.014",
"start_count": "1520",
"status": "In progress",
"remains": "430",
"currency": "USD"
}
Multiple orders: orders=4321,4322 returns an object keyed by order ID:
{
"4321": { "charge": "0.014", "start_count": "1520", "status": "Completed", "remains": "0", "currency": "USD" },
"4322": { "error": "Incorrect order ID" }
}
charge is what you paid net of any automatic refund (a fully refunded order shows 0.00).
balance
curl -s -X POST "https://api.digitalempire.cc/api/v2" -d "key=YOUR_API_KEY" -d "action=balance"
{ "balance": "12.50", "currency": "USD" }
cancel
POST action=cancel&orders=4321,4322
[
{ "order": 4321, "cancel": 1 },
{ "order": 4322, "cancel": { "error": "Cancellation is not available for this order" } }
]
cancel: 1 means the request was accepted. Any undelivered part is refunded to your wallet automatically when the order turns Canceled or Partial.
refill / refill_status
POST action=refill&order=4321 → { "refill": "17" }
POST action=refill_status&refill=17 → { "status": "Completed" }
Order statuses
| Status | Meaning |
|---|---|
Pending | Received, waiting to start |
In progress | Being delivered |
Completed | Fully delivered |
Partial | Partly delivered — the undelivered part is refunded automatically; remains shows what was not delivered |
Canceled | Canceled — refunded automatically |
Errors
Errors are returned as {"error": "..."} (HTTP 200, as in standard panels), except rate limiting (HTTP 429).
| Error | Reason |
|---|---|
Invalid API key | Missing, wrong or disabled key |
Incorrect action | Unknown action |
Incorrect request | Malformed body / JSON |
Incorrect service ID | Unknown or unavailable service |
Incorrect link | Link is not valid |
Incorrect quantity (min X, max Y) | Quantity out of range or not an integer |
Not enough funds | Wallet balance too low for this order |
Order amount too small (minimum 0.10 USD) | Order total is below the 0.10 USD minimum |
There is already an active order for this link and service... | Wait for the previous order on this link to complete |
Incorrect order ID / Incorrect refill ID | Unknown ID, or not an API order of yours |
Service temporarily unavailable, you have not been charged... | The order could not be placed; you were not charged |
Cancellation is not available for this order | Service or status does not allow cancellation |
Refill is not available ... | Service has no refill, order not completed, or refill already requested in the last 24h |
Too many requests | Rate limit exceeded (HTTP 429, see Retry-After) |
Internal error, please try again later | Temporary server problem |
Rate limits
Per API key: 60 requests / minute overall, 20 add / minute, 12 services / minute, 10 cancel / minute, 10 refill / minute. Repeated invalid keys from one IP are blocked temporarily. Exceeding a limit returns HTTP 429 with a Retry-After header (seconds). Poll status at a reasonable pace (every few minutes) and batch IDs with orders=.
Good to know
• Order IDs are numeric and only visible to the account that created them.
• Failed or canceled orders are refunded to your wallet automatically; partial orders are refunded for the undelivered part.
• Only orders created through the API are visible in the API.
• Questions? Use the Support button in the bot.
• The API is currently served over plain HTTP; do not reuse your key on shared or untrusted networks.
Socials Up — API revendeur
API standard de panel SMM (v2). Automatisez vos commandes, payées depuis votre solde, à des tarifs API inférieurs aux prix affichés dans le bot Telegram.
Présentation
URL de base : https://api.digitalempire.cc/api/v2 — HTTP POST (recommandé) ou GET. Paramètres en application/x-www-form-urlencoded ou JSON. Toutes les réponses sont en JSON (UTF-8).
Tarifs : le prix API est inférieur au prix du bot. Les tarifs renvoyés par l'action services sont exactement ceux facturés aux commandes API, par 1 000 unités, en USD. Les commandes sont payées depuis votre solde de portefeuille dans le bot — rechargez-le là-bas.
Obtenir votre clé : ouvrez @Social_U_p_Bot → 🔑 API → Générer ma clé API. La clé complète n'est affichée qu'une seule fois ; vous pouvez la régénérer à tout moment (l'ancienne cesse de fonctionner immédiatement). Gardez-la secrète.
Conseil : préférez POST pour que votre clé n'apparaisse jamais dans les URL ni les journaux. Compatible avec les scripts de panels SMM standards (format « API v2 » / PerfectPanel).
Endpoints
Toutes les requêtes exigent les paramètres key (votre clé API) et action.
| Action | Paramètres | Description |
|---|---|---|
services | — | Liste des services avec vos tarifs API |
add | service, link, quantity | Passer une commande. Renvoie l'ID de commande |
status | order ou orders (séparés par des virgules, max 100) | Statut d'une ou plusieurs commandes |
balance | — | Votre solde |
cancel | orders (séparés par des virgules, max 100) | Demander l'annulation (services compatibles). Remboursement automatique dès confirmation |
refill | order | Demander un refill d'une commande terminée (services refill: true) |
refill_status | refill ou refills (séparés par des virgules) | Statut d'une demande de refill |
services
curl -s --compressed -X POST "https://api.digitalempire.cc/api/v2" -d "key=YOUR_API_KEY" -d "action=services"
[
{
"service": 12033,
"name": "TikTok Video Views Mix 2B",
"type": "Default",
"category": "Cheapest best-sellers",
"rate": "0.014",
"min": "100",
"max": "2147483647",
"refill": false,
"cancel": true
}
]
rate = USD pour 1 000 unités. min / max = quantités autorisées. type vaut toujours Default (lien + quantité). La réponse est compressée en gzip si vous envoyez Accept-Encoding: gzip.
add — passer une commande
curl -s -X POST "https://api.digitalempire.cc/api/v2" \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=12033" \
-d "link=https://www.tiktok.com/@user/video/1234567890" \
-d "quantity=1000"
import requests
API = "https://api.digitalempire.cc/api/v2"
KEY = "YOUR_API_KEY"
r = requests.post(API, data={
"key": KEY,
"action": "add",
"service": 12033,
"link": "https://www.tiktok.com/@user/video/1234567890",
"quantity": 1000,
}, timeout=60)
print(r.json()) # {'order': 4321}
st = requests.post(API, data={"key": KEY, "action": "status", "order": 4321}, timeout=30).json()
print(st["status"], st["remains"])
<?php
$api = "https://api.digitalempire.cc/api/v2";
$post = [
"key" => "YOUR_API_KEY",
"action" => "add",
"service" => 12033,
"link" => "https://www.tiktok.com/@user/video/1234567890",
"quantity" => 1000,
];
$ch = curl_init($api);
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($post),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$res = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($res); // Array ( [order] => 4321 )
{ "order": 4321 }
Le coût est rate × quantité / 1000, débité atomiquement de votre solde. Mêmes règles que le bot : quantité entre min et max, lien valide, et une seule commande active par lien et par service (attendez que la précédente soit terminée).
status
curl -s "https://api.digitalempire.cc/api/v2?key=YOUR_API_KEY&action=status&order=4321"
{
"charge": "0.014",
"start_count": "1520",
"status": "In progress",
"remains": "430",
"currency": "USD"
}
Plusieurs commandes : orders=4321,4322 renvoie un objet indexé par ID :
{
"4321": { "charge": "0.014", "start_count": "1520", "status": "Completed", "remains": "0", "currency": "USD" },
"4322": { "error": "Incorrect order ID" }
}
charge = ce que vous avez payé, net d'un éventuel remboursement automatique (une commande entièrement remboursée affiche 0.00).
balance
curl -s -X POST "https://api.digitalempire.cc/api/v2" -d "key=YOUR_API_KEY" -d "action=balance"
{ "balance": "12.50", "currency": "USD" }
cancel
POST action=cancel&orders=4321,4322
[
{ "order": 4321, "cancel": 1 },
{ "order": 4322, "cancel": { "error": "Cancellation is not available for this order" } }
]
cancel: 1 = demande acceptée. La partie non livrée est remboursée automatiquement sur votre solde quand la commande passe à Canceled ou Partial.
refill / refill_status
POST action=refill&order=4321 → { "refill": "17" }
POST action=refill_status&refill=17 → { "status": "Completed" }
Statuts de commande
| Statut | Signification |
|---|---|
Pending | Reçue, en attente de démarrage |
In progress | En cours de livraison |
Completed | Entièrement livrée |
Partial | Livrée en partie — le reste est remboursé automatiquement ; remains indique la quantité non livrée |
Canceled | Annulée — remboursée automatiquement |
Erreurs
Les erreurs sont renvoyées sous la forme {"error": "..."} (HTTP 200, comme les panels standards), sauf la limitation de débit (HTTP 429). Les messages d'erreur sont en anglais.
| Erreur | Cause |
|---|---|
Invalid API key | Clé absente, erronée ou désactivée |
Incorrect action | action inconnue |
Incorrect request | Corps / JSON mal formé |
Incorrect service ID | Service inconnu ou indisponible |
Incorrect link | Lien invalide |
Incorrect quantity (min X, max Y) | Quantité hors limites ou non entière |
Not enough funds | Solde insuffisant pour cette commande |
Order amount too small (minimum 0.10 USD) | Le total de la commande est inférieur au minimum de 0,10 USD |
There is already an active order for this link and service... | Attendez la fin de la commande précédente sur ce lien |
Incorrect order ID / Incorrect refill ID | ID inconnu, ou pas une de vos commandes API |
Service temporarily unavailable, you have not been charged... | La commande n'a pas pu être passée ; vous n'avez pas été débité |
Cancellation is not available for this order | Service ou statut ne permet pas l'annulation |
Refill is not available ... | Service sans refill, commande non terminée, ou refill déjà demandé dans les 24 h |
Too many requests | Limite de débit dépassée (HTTP 429, voir Retry-After) |
Internal error, please try again later | Problème serveur temporaire |
Limites de débit
Par clé API : 60 requêtes / minute au total, 20 add / minute, 12 services / minute, 10 cancel / minute, 10 refill / minute. Les clés invalides répétées depuis une même IP sont bloquées temporairement. Un dépassement renvoie HTTP 429 avec l'en-tête Retry-After (secondes). Interrogez status à un rythme raisonnable (toutes les quelques minutes) et groupez les IDs avec orders=.
Bon à savoir
• Les IDs de commande sont numériques et visibles uniquement par le compte qui les a créées.
• Les commandes échouées ou annulées sont remboursées automatiquement ; les commandes partielles sont remboursées pour la partie non livrée.
• Seules les commandes créées via l'API sont visibles dans l'API.
• Une question ? Utilisez le bouton Support du bot.
• L'API est actuellement servie en HTTP simple : ne réutilisez pas votre clé sur un réseau partagé ou non fiable.