Einloggen Anmeldung

Shop

Home Aufgaben-Marktplatz werkzeuge Korb abonnements Bestellverlauf

Konto

Guthaben aufladen Promo-Code aktivieren Partnerprogramm

Hilfe

Support-Service FAQ Information Bewertungen Blog news

Entwickler

public API reseller API
Dunkles Design

mrpopularAPI

mrpopularAPI

Public API

API-Schlüssel

Melden Sie sich an, um Ihren API-Schlüssel zu erhalten.

user@mrpopular: ~/api — v2 docs
user@mrpopular:~/api$ curl -d "username=&password=&action=service" https://mrpopular.net/api/v2.php

API Dokumentation


Link


https://mrpopular.net/api/v2.php

a

Anfragen


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).