Clé API
Connectez-vous pour obtenir votre clé API.
Pour activer l API revendeur, ecrivez au service d assistance. Vous devez avoir au moins 100 dollars sur votre solde.
URL
https://mrpopular.net/api/v3.php
Requete
POST / GET / JSON
Reponse
JSON
Autorisation
username
password
key = clé API de la page de documentation de votre compte (à la place de username et password)
Obtenir le solde
action = balance
{"balance":123.456}
Statut de la commande
action = status
order = (Order id)
{"order":{"status":"2","completed":"0","quantity":"250","date":"2018-09-27 17:34:49"}}
order = 142058,142059 (plusieurs numéros séparés par des virgules, jusqu'à 100 par requête ; la réponse liste chaque numéro dans le champ orders)
{"orders":{"142058":{"status":"2","completed":"250","quantity":"250","date":"2026-10-01 12:00:00"},"142059":{"error":"wrong ORDER"}}}
Annuler une commande
action = cancel
order = numéro de commande
{"cancel":{"order":142058,"cancelled":true,"delivered":40,"refund":12.5,"currency":"RUB"}}
Disponible pour une partie des services (en v3 presque tous), tant que la commande est en cours : la partie non livrée est remboursée. Si l'annulation n'est pas disponible pour le service, la réponse est errorcode 13 ; commandes terminées ou pas encore lancées : errorcode 14.
Réapprovisionnement (refill)
action = refill
order = numéro de commande
{"refill":{"order":142058,"status":"requested","message":"refill requested"}}
Services avec refill uniquement, comme le bouton de l'historique des commandes. status : requested lancé, in_progress en cours, wait_24h une fois par jour, expired délai dépassé, queued en file pour l'opérateur. Sans refill : errorcode 16.
Champ supplémentaire du service
action = options
service = ID du service
{"service_id":6671,"option_type":"rating","option_label":"...","comment_label":"...","options":{"201":"5","202":"4-5"}}
option_type : none (pas de champ), text (texte libre dans option), select, geo, rating, topic (un id de options dans option ; pour topic la valeur 0 = votre propre sujet en texte dans comment). Les mêmes option_type, option_label et comment_label sont renvoyés par action=service.
Contestation d'une exécution
action = dispute
order = numéro de commande (position) de l'historique des commandes
execution = id de l'exécution depuis action=executions
reason = motif, 5 caractères ou plus : ce qui ne va pas sur la capture (mauvaise publication, mauvais texte, action non montrée)
{"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}}
Uniquement pour les commandes réalisées par de vrais exécutants et uniquement pour les exécutions acceptées de moins de 30 jours. La contestation est examinée par l'arbitrage, généralement sous 24 heures ; le résultat apparaît dans action=executions, champ dispute.status : pending (en cours), confirmed (défaut confirmé : l'exécution est retirée et sera refaite), rejected (l'exécution correspond à la tâche), neutral (sans changement). Limite : vous pouvez contester des exécutions jusqu'à 20 % de vos commandes payées sur 90 jours ; chaque contestation réserve le prix unitaire de la commande, au minimum 5 RUB ; confirmed libère la réserve, rejected et neutral la consomment. Le reste de la limite est dans dispute_budget.
errorcode 21 la commande n'est pas réalisée par de vrais exécutants (pas de contestation), errorcode 23 wrong EXECUTION (absente de cette commande), 24 exécution non acceptée, 25 délai de contestation dépassé, 26 déjà contestée, 27 REASON de moins de 5 caractères, 28 limite atteinte (dispute_budget dans la réponse).
Executions de la commande (captures)
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 de l'exécution sert à action=dispute ; dispute : état de la contestation ou null ; dispute_budget : limite de contestations du compte.
Uniquement pour les commandes realisees par de vrais executants. "links" contient les liens laisses par les executants dans leurs rapports (taches de backlinks).
Liste des services
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"},...}}
Decodage des statuts de commande
0 : Pending / Processing
1 : Processing
2 : Completed
3 : Error
4 : In queue
5 : Returned
Nouvelle commande
action = order
service = (Service ID)
quantity
option = champ supplémentaire du service : un id de action=options (sujet des commentaires, note de l'avis, géo, option de sondage) ou du texte libre (pseudo de l'auteur du commentaire, requête de recherche) ; le type et le libellé du champ sont donnés par option_type et option_label
comment = textes des commentaires ou avis (un par ligne), ou le brief pour un avis IA, ou votre propre sujet pour les commentaires thématiques (avec option=0) ; comment_label indique ce que le champ attend
link
lang = langue de l'exécutant pour une partie des services : any, ru ou en (par défaut n'importe laquelle)
gender = sexe de l'auteur de l'avis pour une partie des services : any, m, f (par défaut n'importe lequel)
day_limit = nombre maximal d'exécutions par jour pour une partie des services, 0 = sans limite
{"order":"142058"}
Erreurs
{"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
Exemple de code PHP
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();