вход регистрация

Магазин

главная биржа заданий инструменты корзина подписки история заказов

Аккаунт

пополнить баланс активировать промокод партнерская программа юридическим лицам

Помощь

служба поддержки частые вопросы информация отзывы блог новости

Разработчикам

public API reseller API
Тёмная тема

mrpopularAPI

mrpopularAPI

Public API

API-ключ

Войдите в аккаунт, чтобы получить API-ключ.

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

Документация API


Ссылка


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


Запросы


POST / GET / JSON


Ответы


JSON

Авторизация


username


password

key = API-ключ со страницы документации в аккаунте (вместо username и password)

Узнать баланс


action = balance

currency = USD


{"balance":123.456}

Узнать статус заказа


action = status

order = (номер заказа)


{"order":{"status":"2","completed":"0","quantity":"250","date":"2018-09-27 17:34:49"}}

order = 142058,142059 (несколько номеров через запятую, до 100 за запрос; ответ по каждому номеру в поле orders)


{"orders":{"142058":{"status":"2","completed":"250","quantity":"250","date":"2026-10-01 12:00:00"},"142059":{"error":"wrong ORDER"}}}

Отменить заказ


action = cancel

order = номер заказа


{"cancel":{"order":142058,"cancelled":true,"delivered":40,"refund":12.5,"currency":"RUB"}}

Доступно для части услуг (в v3 почти для всех), пока заказ выполняется: возвращается стоимость невыполненной части. Если для услуги отмена недоступна, ответ errorcode 13; для завершённых или ещё не запущенных заказов errorcode 14.

Восполнение (рефилл)


action = refill

order = номер заказа


{"refill":{"order":142058,"status":"requested","message":"refill requested"}}

Только услуги с восполнением, то же, что кнопка в истории заказов. status: requested запущено, in_progress уже идёт, wait_24h не чаще раза в сутки, expired срок вышел, queued в очереди оператору. Без восполнения errorcode 16.

Дополнительное поле услуги


action = options

service = ID услуги


{"service_id":6671,"option_type":"rating","option_label":"...","comment_label":"...","options":{"201":"5","202":"4-5"}}

option_type: none (поля нет), text (свободный текст в option), select, geo, rating, topic (в option id из options; для topic значение 0 = своя тема текстом в comment). Те же option_type, option_label и comment_label есть в ответе action=service.

Спор по выполнению


action = dispute

order = номер заказа (позиции) из истории заказов

execution = id выполнения из action=executions

reason = причина, от 5 символов: что не так на скриншоте (не тот пост, не тот текст, действие не показано)


{"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}}

Только для заказов, выполняемых реальными исполнителями, и только для принятых выполнений не старше 30 дней. Спор разбирает арбитраж, обычно в течение суток; результат виден в action=executions, поле dispute.status: pending (на разборе), confirmed (брак подтверждён: выполнение снято и будет сделано заново), rejected (выполнение соответствует заданию), neutral (без изменений). Лимит: оспорить можно выполнения на сумму до 20% ваших оплаченных заказов за 90 дней; каждый спор бронирует из лимита цену единицы заказа, но не меньше 5 руб; confirmed бронь возвращает, rejected и neutral тратят. Остаток лимита в dispute_budget.

errorcode 21 заказ выполняется не реальными исполнителями (спор недоступен), errorcode 23 wrong EXECUTION (нет в этом заказе), 24 выполнение не принято, 25 срок оспаривания истёк, 26 уже оспорено, 27 REASON короче 5 символов, 28 лимит исчерпан (dispute_budget в ответе).

Получить список услуг


action = service


{"service":{"1":{"social_network":"Facebook","service":"page likes","quality":"medium quality","id":"1","price":0.0149,"currency":"USD","min":"100"},...}}

Статусы заказа


0 : выполняется, нет статистики


1 : выполняется, есть статистика


2 : выполнен


3 : ошибка


4 : в очереди


5 : возвращен

Новый заказ


action = order

service = (ID услуги)

quantity = количество

option = дополнительное поле услуги: id из action=options (тема комментариев, оценка отзыва, гео, вариант опроса) или текст (ник автора комментария, поисковый запрос); какое поле у услуги, видно в option_type и option_label

comment = тексты комментариев или отзывов (каждый с новой строки), либо ТЗ для ИИ-отзыва, либо своя тема для тематических комментариев (при option=0); что ждут от поля, видно в comment_label

link = ссылка

lang = язык исполнителя для части услуг: any, ru или en (по умолчанию любой)

gender = пол автора отзыва для части услуг: any, m, f (по умолчанию любой)

day_limit = лимит выполнений в день для части услуг, 0 = без лимита


{"order":"142058"}

Ошибки


{"errorcode":1} USERNAME или PASSWORD не отправлен


{"errorcode":2} ACTION не отправлен


{"errorcode":3} Выбранная валюта недоступна


{"errorcode":4} Не отправлен номер заказа


{"errorcode":5} Неверный номер заказа


{"errorcode":6} SERVICE не отправлен


{"errorcode":7} Не отправлено количество


{"errorcode":8} Не отправлена ссылка


{"errorcode":9} Не хватает средств на балансе


{"errorcode":10} Количество меньше минимального

Пример кода php


            class Api
            {
              //настройки
              public $api_url = 'https://mrpopular.net/api/v2.php'; // ссылка для API
              public $username = ''; //ваш username
              public $password = ''; //ваш password
              public $currency = 'USD';

                public function order($data) { // добавить заказ
                    $post = array_merge(array(
                      'username' => $this->username, 
                      'password' => $this->password,
                      'action' => 'order'
                    ), $data);
                    return json_decode($this->connect($post));
                }

                public function status($order) { // получить статус заказа
                    return json_decode($this->connect(array(
                        'username' => $this->username, 
                        'password' => $this->password,
                        'action' => 'status',
                        'order' => $order
                    )));
                }

                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) {
                    $_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
            $api = new Api();

            //проверить баланс
            /*$balance = $api->balance();
            print_r($balance);*/

            //новый заказ
            /*$order = $api->order(array(
              'service' => 462, 
              'quantity' => $qnty, 
              'link' => $src
            ));
            print_r($order);*/

            //статус заказа
            /*$status = $api->status(12232);
            print_r($status);*/

            //service list
            /*$service = $api->service();
            print_r($service);*/
          

Выполнения заказа (скриншоты)


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 выполнения нужен для action=dispute; dispute: состояние спора по выполнению или null; dispute_budget: лимит споров аккаунта.


Только для заказов, выполняемых реальными исполнителями. В links - ссылки, которые исполнители указали в отчётах (бэклинк-задания).