Técnico
La API v2 de los paneles SMM: el estándar
Actualizado el por el equipo editorial de PanelCompare, 6 min de lectura
¿Qué es la API v2 de los paneles SMM?
Es un único endpoint POST, por convención en /api/v2, que recibe un cuerpo application/x-www-form-urlencoded y devuelve JSON. La autenticación es un parámetro key en el cuerpo, no en una cabecera. No hay negociación de versiones, ni firma de peticiones, ni nonce (especificación comprobada en justanotherpanel.com/api, 2026-09-06).
La especificación nació con los scripts de panel dominantes y se ha copiado tanto que hoy es el estándar de facto del sector. Ese es el dato que explica casi todo lo demás de este mercado: un panel se puede lanzar en una tarde apuntando un script a la API de un proveedor, y por eso hay miles de paneles y tan poca diferencia entre ellos.
La clave es un secreto de portador de larga duración
Como la clave de API viaja en el cuerpo de la petición sin firma, nonce ni marca de tiempo, la especificación no ofrece protección contra repetición ni caducidad. Cualquiera que tenga la clave puede gastar tu saldo y leer todos los enlaces sobre los que has hecho pedidos. Cámbiala después de conectar cualquier herramienta de terceros.
¿Qué acciones ofrece la API?
| Acción | Parámetros | Devuelve |
|---|---|---|
| services | key, action | Un array de ofertas del catálogo: service, name, type, category, rate, min, max, refill, cancel |
| add | key, action, service, link, más los parámetros propios del tipo | El id del nuevo pedido |
| status | key, action, order | charge, start_count, status, remains, currency |
| status (varios) | key, action, orders (separados por comas, máx. 100) | Un objeto indexado por id de pedido |
| refill | key, action, order (u orders, separados por comas) | Un id de reposición, o un array de pares pedido/reposición |
| refill_status | key, action, refill (o refills, separados por comas) | El estado de la reposición |
| cancel | key, action, orders (separados por comas) | El resultado de la cancelación de cada pedido |
| balance | key, action | balance y currency |
Fuente: Especificación de la SMM Panel API v2, comprobada en justanotherpanel.com/api, 2026-09-06.
Ojo: en la especificación canónica no existe una acción multi_status aparte. El estado de varios pedidos es la misma acción status con el parámetro en plural orders, limitado a 100 id por petición, un detalle que hace tropezar a la mayoría de las primeras integraciones.
¿Cómo son de verdad una petición y una respuesta?
POST /api/v2
Content-Type: application/x-www-form-urlencoded
key=YOUR_KEY&action=services
// 200 OK
[
{
"service": 1,
"name": "Followers",
"type": "Default",
"category": "First Category",
"rate": "0.90",
"min": "50",
"max": "10000",
"refill": true,
"cancel": true
}
]POST /api/v2
key=YOUR_KEY&action=add&service=1&link=https://example.com/p&quantity=1000
// 200 OK
{ "order": 23501 }
POST /api/v2
key=YOUR_KEY&action=status&order=23501
// 200 OK
{
"charge": "0.27819",
"start_count": "3572",
"status": "Partial",
"remains": "157",
"currency": "USD"
}El campo rate es el precio por cada 1000 en la moneda de la cuenta, devuelto como cadena de texto. Los catálogos reales tienen entre 3000 y 8000 ofertas, así que una llamada a services devuelve una única respuesta grande, no una respuesta paginada.
¿Qué trampas rompen las primeras integraciones?
- Los errores suelen devolver HTTP 200. En la mayoría de los paneles, una petición fallida vuelve con un 200 y un objeto de error en el cuerpo, y algunos responden a una clave incorrecta con un 401 y la misma forma de JSON, así que no se puede confiar en el código de estado y todo cliente tiene que analizar el cuerpo para detectar el fallo.
- Los números llegan como cadenas. rate, min, max, charge, start_count y remains llegan todos entre comillas; compararlos numéricamente sin convertirlos falla sin avisar.
- El estado de varios pedidos es el parámetro en plural, no una acción aparte, y tiene un tope de 100 id.
- La cantidad del goteo es por tanda. Una llamada add con runs=10 entrega y cobra cantidad × 10.
- Los id de servicio son propios de cada panel y pueden cambiar. Un panel puede redirigir un id a otro proveedor, así que los id guardados pueden empezar a significar otra cosa sin que te enteres.
- refill y cancel solo funcionan donde la oferta del catálogo los anuncia, y cancel normalmente solo antes de que empiece la entrega.
¿Qué parámetros necesita cada tipo de pedido?
Toda llamada add necesita un service y un link. Qué más necesita lo determina el campo type de la oferta del catálogo, y los requisitos no se pueden adivinar. Esta tabla es la lista completa.
| Tipo de pedido | Parámetros adicionales |
|---|---|
| Default / Drip-feed | quantity, runs (opcional), interval (opcional, en minutos) |
| Custom Comments | comments (lista separada por saltos de línea) |
| Custom Comments Package | comments |
| Mentions (lista de usuarios / hashtag / lista personalizada) | quantity, usernames, hashtags |
| Mentions Hashtag | quantity, hashtag (las cuentas que se mencionan se extraen del hashtag) |
| Mentions User Followers | quantity, username (las cuentas que se mencionan se extraen de los seguidores de ese usuario) |
| Mentions Media Likers | quantity, media (URL) |
| Comment Likes | quantity, username |
| Comment Replies | username, comments |
| Poll | quantity, answer_number |
| Subscriptions | username, min, max, posts (opc.), delay, expiry (opc.), old_posts (opc.) |
| Invites from Groups | quantity, groups (separados por saltos de línea) |
| Package | solo link; la cantidad es fija |
| Web Traffic | quantity, country, device, type_of_traffic, google_keyword o referring_url |
Fuente: Especificación de la SMM Panel API v2, comprobada en justanotherpanel.com/api, 2026-09-06.
¿Cómo conviene programar contra esta API?
- 1.Trata cada respuesta como si no tuviera tipos. Analiza primero el cuerpo, busca una clave error y luego convierte de forma explícita las cadenas numéricas.
- 2.Guarda el id de servicio del panel junto a tu propio servicio canónico, y vuelve a sincronizar el catálogo con un calendario fijo para detectar un id redirigido en lugar de darlo por supuesto.
- 3.Agrupa las consultas de estado con el parámetro en plural orders, en bloques de 100, en lugar de hacer una petición por pedido.
- 4.Trata Partial como un resultado de pleno derecho, no como un error. Llega con una cifra remains y un abono automático al saldo.
- 5.Nunca registres en los logs el cuerpo de la petición. La clave de API va dentro.
- 6.Cambia las claves con un calendario fijo y después de cada cambio en una integración de terceros.
¿Qué te dice la API sobre un panel?
Más que sus textos de marketing. Consultar /api/v2 sin clave devuelve una respuesta de error válida si existe un endpoint compatible con la API v2, y un 404 desmiente que el panel tenga API: es una comprobación rápida y objetiva que puede hacer cualquiera.
También es la única forma escalable de reunir precios comparables. La mayoría de los paneles esconden el catálogo tras el registro y solo publican textos de marketing, así que extraer las páginas públicas cubre una minoría del mercado. Registrar una cuenta y llamar a la acción services devuelve el catálogo entero como JSON estructurado en una sola petición, y así es como PanelCompare construye su índice de precios.
Respuestas rápidas
¿Qué es la API v2 de los paneles SMM?
Un único endpoint POST, por convención en /api/v2, que recibe parámetros codificados como formulario y devuelve JSON, con acciones para services, add, status, refill, refill_status, cancel y balance. Casi todos los paneles la implementan, así que un mismo cliente funciona con cientos.
¿Cómo autenticarse en la API de un panel SMM?
Con un parámetro key en el cuerpo de la petición. No hay autenticación por cabecera, ni firma de peticiones, ni nonce, así que la clave es un secreto de portador de larga duración y conviene cambiarla después de cualquier cambio en una integración de terceros.
¿Por qué la API devuelve 200 cuando hay errores?
Porque la especificación no usa los códigos de estado HTTP con sentido. Los fallos suelen volver como HTTP 200 con un objeto de error en el cuerpo, y algunos paneles usan un 401 con el mismo cuerpo para una clave incorrecta, así que todo cliente tiene que analizar el cuerpo de la respuesta para detectar el fallo.
¿Cómo consultar el estado de muchos pedidos a la vez?
Usa la misma acción status con el parámetro en plural orders, con hasta 100 id de pedido separados por comas. En la especificación canónica no existe una acción multi_status aparte.
Cada cifra de esta guía tiene fuente y fecha
Los precios de este mercado cambian cada semana, así que un número sin fecha de captura es decorativo. Cuando esta guía cita una cifra, indica la fuente y cuándo se comprobó. Si alguna es incorrecta, el procedimiento de corrección de la página sobre nosotros tiene como objetivo responder en dos días hábiles, y las correcciones se publican con una nota fechada, no se arreglan en silencio.