Clé API
Connectez-vous pour obtenir votre clé API.
Lien
https://mrpopular.net/api/v2.php
Demandes
POST / GET / JSON
Réponses
JSON
Autorisation
username
password
key = clé API de la page de documentation de votre compte (à la place de username et password)
Apprendre le solde
action = balance
currency = EUR
{"balance":123.456}
Vérifier le statut de la commande
action = status
order = (numéro de commande)
{"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).
Obtenir la liste de services
action = service
{"service":{"1":{"social_network":"Facebook","service":"page likes","quality":"medium quality","id":"1","price":0.0149,"currency":"EUR","min":"100"},...}}
Statuts de commande
0 : en cours d'exécution, sans statistiques
1 : en cours d'exécution, il y a des statistiques
2 : exécutée
3 : erreur
4 : en file d’attente
5 : retournée
Nouvelle commande
action = order
service = (ID de service)
quantity = quantité
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 = lien
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":1} USERNAME ou PASSWORD n’est pas envoyé
{"errorcode":2} ACTION n’est pas envoyée
{"errorcode":3} La devise sélectionnée n'est pas disponible
{"errorcode":4} Numéro de commande n'est pas envoyé
{"errorcode":5} Numéro de commande invalide
{"errorcode":6} SERVICE n'est pas envoyé
{"errorcode":7} Quantité n'est pas envoyée
{"errorcode":8} Référence n’est pas envoyée
{"errorcode":9} Pas assez de fonds en solde
{"errorcode":10} Quantité est inférieure au minimum
Exemple de code php
class Api
{
//paramètres
public $api_url = 'https://mrpopular.net/api/v2.php'; // référence pour API
public $username = ''; //votre username
public $password = ''; //votre password
public $currency = 'EUR';
public function order($data) { // ajouter une commande
$post = array_merge(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'order'
), $data);
return json_decode($this->connect($post));
}
public function status($order) { // obtenir le statut de commande
return json_decode($this->connect(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'status',
'order' => $order
)));
}
public function service() { // obtenir la liste de services
return json_decode($this->connect(array(
'username' => $this->username,
'password' => $this->password,
'action' => 'service',
)));
}
public function balance() { // obtenir le solde
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;
}
}
//lançons API
$api = new Api();
//vérifier le solde
/*$balance = $api->balance();
print_r($balance);*/
//nouvelle commande
/*$order = $api->order(array(
'service' => 462,
'quantity' => $qnty,
'link' => $src
));
print_r($order);*/
//statut de commande
/*$status = $api->status(12232);
print_r($status);*/
//liste de services
/*$service = $api->service();
print_r($service);*/
Exécutions 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 réalisées par de vrais exécutants. "links" contient les URL indiquées par les exécutants dans leurs rapports (tâches de backlinks).