API-Schlüssel
Melden Sie sich an, um Ihren API-Schlüssel zu erhalten.
Zur Aktivierung der Reseller-API schreiben Sie an den Support. Ihr Guthaben muss mindestens 100 Dollar betragen.
URL
https://mrpopular.net/api/v3.php
Anfrage
POST / GET / JSON
Antwort
JSON
Autorisierung
username
password
key = API-Schlüssel von der Dokumentationsseite im Konto (statt username und password)
Guthaben abrufen
action = balance
{"balance":123.456}
Bestellstatus
action = status
order = (Order id)
{"order":{"status":"2","completed":"0","quantity":"250","date":"2018-09-27 17:34:49"}}
order = 142058,142059 (mehrere Nummern durch Komma getrennt, bis zu 100 pro Anfrage; die Antwort listet jede Nummer im Feld orders)
{"orders":{"142058":{"status":"2","completed":"250","quantity":"250","date":"2026-10-01 12:00:00"},"142059":{"error":"wrong ORDER"}}}
Bestellung stornieren
action = cancel
order = Bestellnummer
{"cancel":{"order":142058,"cancelled":true,"delivered":40,"refund":12.5,"currency":"RUB"}}
Für einen Teil der Dienste verfügbar (in v3 fast alle), solange die Bestellung läuft: der nicht gelieferte Teil wird erstattet. Ist die Stornierung für den Dienst nicht verfügbar, lautet die Antwort errorcode 13; abgeschlossene oder noch nicht gestartete Bestellungen: errorcode 14.
Nachfüllung (Refill)
action = refill
order = Bestellnummer
{"refill":{"order":142058,"status":"requested","message":"refill requested"}}
Nur Dienste mit Refill, wie der Button in der Bestellhistorie. status: requested gestartet, in_progress läuft bereits, wait_24h einmal täglich, expired Frist abgelaufen, queued in der Warteschlange des Operators. Ohne Refill: errorcode 16.
Zusatzfeld des Dienstes
action = options
service = Dienst-ID
{"service_id":6671,"option_type":"rating","option_label":"...","comment_label":"...","options":{"201":"5","202":"4-5"}}
option_type: none (kein Feld), text (freier Text in option), select, geo, rating, topic (in option kommt eine id aus options; bei topic bedeutet 0 das eigene Thema als Text in comment). Dieselben option_type, option_label und comment_label liefert action=service.
Anfechtung einer Ausführung
action = dispute
order = Bestellnummer (Position) aus der Bestellhistorie
execution = Ausführungs-id aus action=executions
reason = Grund, mindestens 5 Zeichen: was auf dem Screenshot falsch ist (falscher Beitrag, falscher Text, Aktion nicht gezeigt)
{"status":"pending","dispute":{"id":12,"status":"pending","created":"2026-10-24 12:00:00","decided":null},"execution":34099021,"order":594181140,"dispute_budget":{"turnover_rub":50659.56,"limit_rub":10131.91,"used_rub":29.8,"available_rub":10102.11,"min_per_dispute_rub":5,"percent":20,"days":90,"window_days":30}}
Nur für Bestellungen, die von echten Ausführenden erfüllt werden, und nur für angenommene Ausführungen, die nicht älter als 30 Tage sind. Die Anfechtung prüft die Schlichtung, meist innerhalb eines Tages; das Ergebnis steht in action=executions, Feld dispute.status: pending (in Prüfung), confirmed (Mangel bestätigt: die Ausführung wird entfernt und wiederholt), rejected (die Ausführung entspricht der Aufgabe), neutral (keine Änderung). Limit: Sie können Ausführungen im Wert von bis zu 20% Ihrer bezahlten Bestellungen der letzten 90 Tage anfechten; jede Anfechtung reserviert den Einzelpreis der Bestellung, mindestens 5 RUB; confirmed gibt die Reserve frei, rejected und neutral verbrauchen sie. Das verbleibende Limit steht in dispute_budget.
errorcode 21 die Bestellung wird nicht von echten Ausführenden erfüllt (keine Anfechtung), errorcode 23 wrong EXECUTION (nicht in dieser Bestellung), 24 Ausführung nicht angenommen, 25 Anfechtungsfrist abgelaufen, 26 bereits angefochten, 27 REASON kürzer als 5 Zeichen, 28 Limit erreicht (dispute_budget in der Antwort).
Ausfuehrungen der Bestellung (Screenshots)
action = executions
order = (Order id)
offset = (optional, default 0)
limit = (optional, default 100, max 500)
{"total":3,"count":1,"offset":0,"executions":[{"id":34099021,"executor":"ID972036","date":"2026-06-25 20:32:40","screenshots":["https://mrpopular.net/etask/includes/img/...jpg"],"links":[],"dispute":null}],"dispute_budget":{"limit_rub":10131.91,"used_rub":29.8,"available_rub":10102.11}}
id der Ausführung wird für action=dispute gebraucht; dispute: Stand der Anfechtung oder null; dispute_budget: Anfechtungslimit des Kontos.
Nur fuer Bestellungen, die von echten Ausfuehrenden erledigt wurden. "links" enthaelt die Links aus den Berichten der Ausfuehrenden (Backlink-Aufgaben).
Diensteliste
action = service
{"service":{"1":{"social_network":"Facebook","service":"page likes","quality":"medium quality","id":"1","price":0.0149,"currency":"USD","min":"100","max":"900000","start":"30 min.","speed":"100/day","description":"HQ never drop"},...}}
Bestellstatus-Codes
0 : Pending / Processing
1 : Processing
2 : Completed
3 : Error
4 : In queue
5 : Returned
Neue Bestellung
action = order
service = (Service ID)
quantity
option = Zusatzfeld des Dienstes: eine id aus action=options (Kommentarthema, Bewertung der Rezension, Geo, Umfrageoption) oder freier Text (Benutzername des Kommentarautors, Suchanfrage); Typ und Beschriftung des Feldes stehen in option_type und option_label
comment = Kommentar- oder Rezensionstexte (einer pro Zeile), oder das Briefing für eine KI-Rezension, oder das eigene Thema für Themenkommentare (mit option=0); comment_label sagt, was das Feld erwartet
link
lang = Sprache des Ausführenden für einen Teil der Dienste: any, ru oder en (Standard: beliebig)
gender = Geschlecht des Rezensionsautors für einen Teil der Dienste: any, m, f (Standard: beliebig)
day_limit = maximale Ausführungen pro Tag für einen Teil der Dienste, 0 = ohne Limit
{"order":"142058"}
Fehler
{"errorcode":0} API is not activated
{"errorcode":1} USERNAME or PASSWORD is empty
{"errorcode":2} ACTION is empty
{"errorcode":4} ORDER is empty
{"errorcode":5} wrong ORDER
{"errorcode":6} SERVICE is empty
{"errorcode":7} QUANTITY is empty
{"errorcode":8} LINK is empty
{"errorcode":9} Not enough funds on balance
{"errorcode":10} Quantity less than minimum
PHP-Codebeispiel
class Api
{
public $api_url = 'https://mrpopular.net/api/v3.php';
public $username = ''; // your username
public $password = ''; // your password
public function order($data) {
return json_decode($this->connect(array_merge(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'order'
), $data)));
}
public function status($order) {
return json_decode($this->connect(array(
'username' => $this->username, 'password' => $this->password,
'action' => 'status', 'order' => $order)));
}
public function executions($order, $offset = 0, $limit = 100) {
return json_decode($this->connect(array(
'username' => $this->username, 'password' => $this->password,
'action' => 'executions', 'order' => $order,
'offset' => $offset, 'limit' => $limit)));
}
public function service() {
return json_decode($this->connect(array(
'username' => $this->username, 'password' => $this->password,
'action' => 'service')));
}
public function balance() {
return json_decode($this->connect(array(
'username' => $this->username, 'password' => $this->password,
'action' => 'balance')));
}
function connect($post) {
$ch = curl_init($this->api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
$result = curl_exec($ch);
return $result === false ? false : $result;
}
}
$api = new Api();
// $balance = $api->balance();
// $order = $api->order(array('service' => 462, 'quantity' => 100, 'link' => 'https://...'));
// $status = $api->status(142058);
// $shots = $api->executions(142058);
// $services = $api->service();