Clave API
Inicie sesión para obtener su clave API.
Para activar la API de reseller, escribe al servicio de soporte. Debes tener al menos 100 dolares en tu saldo.
URL
https://mrpopular.net/api/v3.php
Solicitud
POST / GET / JSON
Respuesta
JSON
Autorizacion
username
password
key = clave API de la página de documentación de su cuenta (en lugar de username y password)
Consultar saldo
action = balance
{"balance":123.456}
Estado del pedido
action = status
order = (Order id)
{"order":{"status":"2","completed":"0","quantity":"250","date":"2018-09-27 17:34:49"}}
order = 142058,142059 (varios números separados por comas, hasta 100 por solicitud; la respuesta lista cada número en el campo orders)
{"orders":{"142058":{"status":"2","completed":"250","quantity":"250","date":"2026-10-01 12:00:00"},"142059":{"error":"wrong ORDER"}}}
Cancelar un pedido
action = cancel
order = número de pedido
{"cancel":{"order":142058,"cancelled":true,"delivered":40,"refund":12.5,"currency":"RUB"}}
Disponible para parte de los servicios (en v3 casi todos), mientras el pedido está en curso: se devuelve la parte no entregada. Si la cancelación no está disponible para el servicio, la respuesta es errorcode 13; pedidos terminados o aún no iniciados devuelven errorcode 14.
Reposición (refill)
action = refill
order = número de pedido
{"refill":{"order":142058,"status":"requested","message":"refill requested"}}
Solo servicios con reposición, igual que el botón del historial de pedidos. status: requested iniciado, in_progress en curso, wait_24h una vez al día, expired plazo vencido, queued en cola del operador. Sin reposición: errorcode 16.
Campo adicional del servicio
action = options
service = ID del servicio
{"service_id":6671,"option_type":"rating","option_label":"...","comment_label":"...","options":{"201":"5","202":"4-5"}}
option_type: none (sin campo), text (texto libre en option), select, geo, rating, topic (en option va un id de options; para topic el valor 0 significa tema propio como texto en comment). Los mismos option_type, option_label y comment_label se devuelven en action=service.
Reclamación sobre una ejecución
action = dispute
order = número de pedido (posición) del historial de pedidos
execution = id de la ejecución de action=executions
reason = motivo, 5+ caracteres: qué está mal en la captura (publicación equivocada, texto equivocado, acción no mostrada)
{"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}}
Solo para pedidos realizados por ejecutores reales y solo para ejecuciones aceptadas de no más de 30 días. La reclamación la revisa el arbitraje, normalmente en un día; el resultado se ve en action=executions, campo dispute.status: pending (en revisión), confirmed (defecto confirmado: la ejecución se retira y se rehará), rejected (la ejecución cumple con la tarea), neutral (sin cambios). Límite: puede impugnar ejecuciones por hasta el 20% de sus pedidos pagados en 90 días; cada reclamación reserva el precio unitario del pedido, mínimo 5 RUB; confirmed libera la reserva, rejected y neutral la consumen. El límite restante está en dispute_budget.
errorcode 21 el pedido no lo realizan ejecutores reales (sin reclamación), errorcode 23 wrong EXECUTION (no está en este pedido), 24 la ejecución no está aceptada, 25 plazo de reclamación terminado, 26 ya impugnada, 27 REASON menor de 5 caracteres, 28 límite alcanzado (dispute_budget en la respuesta).
Ejecuciones del pedido (capturas)
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 la ejecución se usa en action=dispute; dispute: estado de la reclamación o null; dispute_budget: límite de reclamaciones de la cuenta.
Solo para pedidos realizados por ejecutores reales. "links" contiene los enlaces que los ejecutores dejaron en sus informes (tareas de backlinks).
Lista de servicios
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"},...}}
Decodificacion de estados del pedido
0 : Pending / Processing
1 : Processing
2 : Completed
3 : Error
4 : In queue
5 : Returned
Nuevo pedido
action = order
service = (Service ID)
quantity
option = campo adicional del servicio: un id de action=options (tema de comentarios, calificación de reseña, geo, opción de encuesta) o texto libre (usuario del autor del comentario, consulta de búsqueda); el tipo y la etiqueta del campo están en option_type y option_label
comment = textos de comentarios o reseñas (uno por línea), o el brief para una reseña con IA, o su propio tema para comentarios temáticos (con option=0); comment_label indica qué espera el campo
link
lang = idioma del ejecutor para parte de los servicios: any, ru o en (por defecto cualquiera)
gender = género del autor de la reseña para parte de los servicios: any, m, f (por defecto cualquiera)
day_limit = máximo de ejecuciones por día para parte de los servicios, 0 = sin límite
{"order":"142058"}
Errores
{"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
Ejemplo de codigo 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();