сonnexion inscription

Boutique

accueil marché des tâches outils panier abonnements historique des commandes

Compte

compléter le solde ajouter un code promo programme d'affiliation

Aide

assistance FAQ information avis blog actualités

Développeurs

public API reseller API
Thème sombre

mrpopularAPI

mrpopularAPI

Reseller API

Clé API

Connectez-vous pour obtenir votre clé API.

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

Pour activer l API revendeur, ecrivez au service d assistance. Vous devez avoir au moins 100 dollars sur votre solde.

Documentation de l API

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();