API-Schlüssel
Melden Sie sich an, um Ihren API-Schlüssel zu erhalten.
Link
https://mrpopular.net/api/v2.php
aAnfragen
POST / GET / JSON
Antworten
JSON
Autorisierung
username
password
key = API-Schlüssel von der Dokumentationsseite im Konto (statt username und password)
Guthaben prüfen
action = balance
currency = EUR
{"balance":123.456}
Bestellstatus kontrollieren
action = status
order = (Bestellnummer)
{"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).
Dienstliste holen
action = service
{"service":{"1":{"social_network":"Facebook","service":"page likes","quality":"medium quality","id":"1","price":0.0149,"currency":"EUR","min":"100"},...}}
Bestellstatus
0 : Im Prozess, keine Statistik
1 : Im Prozess, es gibt Statistik
2 : fertig
3 : Fehler
4 : an der Reihe
5 : zurückgegeben
Neue Bestellung
action = order
service = (ID-Service)
quantity = Menge
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 = 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":1} USERNAME oder PASSWORD nicht gesendet
{"errorcode":2} ACTION nicht gesendet
{"errorcode":3} Die ausgewählte Währung ist nicht verfügbar
{"errorcode":4} Bestellnummer ist nicht gesendet
{"errorcode":5} falsche Bestellnummer
{"errorcode":6} SERVICE nicht gesendet
{"errorcode":7} Menge nicht gesendet
{"errorcode":8} Link nicht gesendet
{"errorcode":9} nicht genügend Guthaben
{"errorcode":10} Die Menge ist geringer als das Minimum
php Code-Beispiel
class Api
{
// Einstellungen
public $api_url = 'https://mrpopular.net/api/v2.php'; // Link für API
public $username = ''; //Ihr username
public $password = ''; //Ihr password
public $currency = 'EUR';
public function order($data) { // Bestellung hinzufügen
$post = array_merge(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'order'
), $data);
return json_decode($this->connect($post));
}
public function status($order) { // Bestellstatus bekommen
return json_decode($this->connect(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'status',
'order' => $order
)));
}
public function service() { // Dienstliste bekommen
return json_decode($this->connect(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'service',
)));
}
public function balance() { // Guthaben kriegen
return json_decode($this->connect(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'balance',
)));
}
function connect($post) {
$_post = Array();
if (is_array($post)) {
foreach ($post as $name => $value) {
$_post[] = $name.'='.urlencode($value);
}
}
$ch = curl_init($this->api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if (is_array($post)) {
curl_setopt($ch, CURLOPT_POSTFIELDS, join('&', $_post));
}
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
$result = curl_exec($ch);
if (curl_errno($ch) != 0 && empty($result)) {
$result = false;
}
curl_close($ch);
return $result;
}
}
// API starten
$api = new Api();
// Guthaben prüfen
/*$balance = $api->balance();
print_r($balance);*/
// neue Bestellung
/*$order = $api->order(array(
'service' => 462,
'quantity' => $qnty,
'link' => $src
));
print_r($order);*/
// Bestellstatus
/*$status = $api->status(12232);
print_r($status);*/
// Dienstliste
/*$service = $api->service();
print_r($service);*/
Auftragsausführungen (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 für Aufträge, die von echten Ausführenden erledigt werden. "links" enthält die URLs aus den Berichten der Ausführenden (Backlink-Aufgaben).