Referencia
Registro de cambios
Cambios importantes y notables de la API v3. Seguimos semver (se abre en una pestaña nueva) — los cambios aditivos (nuevos parámetros opcionales, nuevas acciones, nuevos campos en las respuestas) se publican dentro de una versión mayor; los cambios que rompen compatibilidad van en una nueva versión mayor.
- Más reciente
v3.2: Un nuevo sistema de pedidos: una sola lista de errores, drip feed más simple, cancelación y reposición más claras
Todo lo siguiente se publica a la vez bajo la cabecera
X-NotPanel-API-Version: 2026-10. Toda acción anterior sigue funcionando, y las direcciones /api/v1, /api/v2 y /api/v3 se comportan igual.- Cada pedido tiene un único número que sirve en el panel, en soporte y en la API. Los pedidos de la API conservan sus números anteriores.
- Drip feed:
runsconintervalsigue funcionando. La nueva forma simple toma laquantitytotal ydrip_feed_total_minutes, hasta 48 horas. - La cancelación es instantánea con reembolso completo durante los primeros 15 segundos. Después puedes solicitar una cancelación donde el servicio lo admita, con reembolso automático.
orderdevuelve un objeto, como antes;ordersdevuelve un array. - La reposición funciona una vez cada 6 horas por pedido, sin fecha límite y con un motivo claro cuando se rechaza.
- Las reacciones de Telegram son un único campo
reactions, ya sea una mezcla (👍,❤️,🔥) o recuentos exactos (👍:60,❤️:40), comprobado antes de que se te cobre. - La lista de servicios muestra etiquetas, campos adicionales con límites, límites de drip feed y disponibilidad.
cancel: trueahora significa que las solicitudes de cancelación funcionan de verdad. - Cada error tiene un código fijo, un estado HTTP y un indicador retryable. Los códigos anteriores y los actuales se enumeran abajo.
- Nuevo
order_details, que también puede encontrar un pedido por turequest_id. statusincluye el reembolso: en un pedido cancelado o parcial,refundes el importe reembolsado, así que no hace falta otra llamada.refund_quotees un nombre anterior que devuelve la misma respuesta questatus.- Los webhooks son ahora un único sistema: un evento firmado por llamada, con versión, con eventos nuevos para pedidos cancelados y parciales y para los resultados de reposiciones.
- Eliminado: los cuerpos de webhook por lotes, el parámetro
coupony, de status, los camposrefund_pendingy los dos campos de política de reembolso. El antiguo parámetrodelayya no se lee; usadrip_feed_total_minutes. - Añadido:
can_cancelen status einstant_cancel_untilen la respuesta deadd. El anteriorcancel_availablese mantiene en ambos, ycancel_window_secondsycancel_beforese mantienen en la respuesta deadd. - Se mantiene: las acciones
catalogyaccount_statussiguen funcionando como antes, ycatalogahora se documenta en Listar servicios. Los nombres de parámetros anteriores siguen funcionando:referer,lpost_count,hashtagpara listas de hashtags,usernamesseparados por comas y el antiguo mapa de reacciones.webhook.addtambién acepta los nombres de eventoorder.refundedyorder.refill_completed. /api/v1,/api/v2y/api/v3siguen funcionando y se comportan igual./api/v3es la que se documenta.- Un pedido completado siempre muestra
remainscomo 0.
v3.1: Nombres de servicios adaptados al mercado
Las acciones services y catalog ahora aceptan un código de idioma opcional para nombres elaborados con terminología de mercado seleccionada en diez idiomas. Las solicitudes explícitas añaden metadatos del nombre canónico y del idioma real, y vuelven al inglés de forma segura si falta una traducción o quedó desactualizada. Sin language, la estructura antigua en inglés no cambia. Los administradores pueden revisar o ajustar cada nombre.
v3.0: v3 se convierte en la API predeterminada
/api/v3 pasó a ser el endpoint canónico y un reemplazo directo de URL base para el contrato reseller conocido. v3 añade claves exactas opcionales, protección legacy de 60 segundos, catálogo avanzado, IDs numéricos, refund_quote, account_status, cancelación individual o masiva secuencial y webhooks firmados. El rendimiento de la API ahora usa un nivel basado en lifetime successful spend y una ventana móvil de 60 segundos compartida por todas las claves de la cuenta. /api/v1 y /api/v2 son alias exactos del mismo contrato actual.
v2.5: Catálogo avanzado, conciliación de reembolsos y cancelación
Se añadieron las acciones catalog paginada y refund_quote de solo lectura, se ampliaron los metadatos de add y status y se estableció una ventana de cancelación de 15 segundos para pedidos ordinarios por API. Los eventos de webhook de la API ahora llevan un id de evento estable, mientras que deliveryId permanece estable entre reintentos del mismo lote; cada reintento recibe una marca de tiempo y una firma nuevas. La entrega de webhooks sigue siendo de mejor esfuerzo con reintentos, sin garantía duradera de entrega al menos una vez.
v2.4: 12 nuevas plataformas de medios en el catálogo
Se añadieron servicios para Google, Rumble, Audiomack, Tumblr, Kwai, Clubhouse, Vimeo, Deezer, Tidal, Apple Music, Quora y GitHub. Aparecen en la acción services como cualquier otro servicio y cada uno tiene una página pública de plataforma dedicada. No se requieren cambios en el cliente: los nuevos IDs de servicio simplemente aparecen en el catálogo.
v2.3: Disponibilidad del servicio aplicada al añadir
Los servicios no disponibles rechazan action=add en vez de aceptar o encolar silenciosamente un pedido nuevo. Actualiza el catálogo y elige un servicio disponible antes de reintentar.
v2.2: Parámetros de pedido opcionales
La acción add ahora acepta campos opcionales compatibles específicos del tipo de servicio, como un retraso inicial y opciones de interacción por tipo. Los campos ya definidos por un tipo de servicio conservan su significado documentado.
v2.1: Parámetros de drip-feed al realizar el pedido
La acción add acepta runs e interval juntos para servicios con dripfeed=true. La entrega total es quantity × runs y no puede superar el máximo del servicio. Los servicios sin drip-feed rechazan estos campos.
v2.0: Lanzamiento público de la API v2
Lanzó la API de acciones v2 codificada como formulario con controles de tasa, webhooks firmados de mejor esfuerzo con reintentos y creación idempotente de pedidos. Las URL v1 y v2 actuales son alias del contrato v3 y usan el límite compartido de cuenta documentado.
Migrar desde versiones anteriores
Los códigos de error y los nombres de los eventos de webhook cambiaron. Usa estas listas una vez al actualizar tu código.
Códigos de error
Las respuestas anteriores usaban los códigos de la izquierda. La versión 3.2 usa una lista cerrada, que se muestra en Errores. La última columna indica cómo se corresponden.
| Antes | Ahora | Cómo cambió |
|---|---|---|
| INVALID_ACTION | INVALID_ACTION | Mismo código. |
| MISSING_SERVICE, MISSING_LINK, MISSING_QUANTITY, MISSING_ORDER, MISSING_ORDER_PARAMETER, MISSING_REFILL, MISSING_WEBHOOK_URL, MISSING_WEBHOOK_ID, NO_ORDER_IDS, NO_REFILL_IDS, NO_WEBHOOK_EVENTS, MISSING_CUSTOM_FIELD | MISSING_PARAMETER | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| INVALID_SERVICE_ID, INVALID_QUANTITY, LINK_TOO_LONG, IDEMPOTENCY_EMPTY, IDEMPOTENCY_EMPTY_REQUEST, IDEMPOTENCY_TOO_LONG, IDEMPOTENCY_TOO_LONG_REQUEST, INVALID_LANGUAGE, INVALID_WEBHOOK_EVENT | INVALID_PARAMETER | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| INVALID_LINK_URL | INVALID_LINK, LINK_BLOCKED | Un código anterior pasó a ser varios, cada uno más específico. |
| INVALID_CUSTOM_FIELD | INVALID_OPTION | Mismo código. |
| RUNS_INVALID, RUNS_TOO_HIGH, INTERVAL_INVALID, INTERVAL_TOO_HIGH | DRIP_FEED_INVALID | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| REQUEST_ID_CONFLICT | REQUEST_ID_CONFLICT | Mismo código. |
| SERVICE_NOT_FOUND, ADD_SERVICE_NOT_FOUND, WRONG_SERVICE_TYPE | SERVICE_NOT_FOUND | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| SERVICE_NOT_ACTIVE | SERVICE_PAUSED | Mismo código. |
| SERVICE_DISCONTINUED, REFILL_SERVICE_DISCONTINUED | SERVICE_DISCONTINUED | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| INSUFFICIENT_BALANCE | INSUFFICIENT_BALANCE | Mismo código. |
| ORDER_NOT_FOUND, STATUS_ORDER_NOT_FOUND, REFUND_ORDER_NOT_FOUND, REFILL_ORDER_NOT_FOUND | ORDER_NOT_FOUND | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| ORDER_ALREADY_COMPLETED, ORDER_ALREADY_REFUNDED | ORDER_FINISHED | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| ORDER_NOT_CANCELLABLE | CANCEL_NOT_AVAILABLE, ORDER_FINISHED | Un código anterior pasó a ser varios, cada uno más específico. |
| TOO_MANY_ORDERS, TOO_MANY_REFILLS | TOO_MANY_IDS | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| INACTIVE_ACCOUNT, ACCOUNT_NOT_FOUND, ACCOUNT_ERROR | INACTIVE_ACCOUNT, EMAIL_UNVERIFIED | Un código anterior pasó a ser varios, cada uno más específico. |
| API_RATE_LIMITED, IP_RATE_LIMITED, CANCEL_RATE_LIMITED | API_RATE_LIMITED | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| REFILL_STATUS_INELIGIBLE | REFILL_NOT_COMPLETED, REFILL_NOT_AVAILABLE | Un código anterior pasó a ser varios, cada uno más específico. |
| REFILL_SERVICE_NOT_REFILLABLE, REFILL_REQUEST_FAILED | REFILL_NOT_AVAILABLE | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| REFILL_ALREADY_PENDING | REFILL_ALREADY_PENDING | Mismo código. |
| REFILL_WAITING_PERIOD | REFILL_COOLDOWN | Varios códigos anteriores pasaron a ser uno. Lee details para los detalles. |
| REFILL_NOT_FOUND | REFILL_NOT_FOUND | Mismo código. |
| INVALID_WEBHOOK_URL | INVALID_WEBHOOK_URL | Mismo código. |
| WEBHOOK_LIMIT | WEBHOOK_LIMIT | Mismo código. |
| WEBHOOK_NOT_FOUND | WEBHOOK_NOT_FOUND | Mismo código. |
| REQUEST_PROCESSING, REQUEST_OUTCOME_UNKNOWN, REQUEST_OUTCOME_NOT_RECORDED, REQUEST_UNCONFIRMED, REQUEST_RESULT_UNAVAILABLE, CONFLICTING_REQUEST_RECORDS | – | Ya no ocurre. La API nunca espera a otro sistema, y los problemas posteriores llegan como un pedido Canceled con un código de motivo. |
Webhooks
Cambiaron dos nombres de evento. El cuerpo por lotes ya no existe: cada llamada lleva ahora un evento en un sobre con id, type, schema_version, created_at, sequence y data, y los endpoints pertenecen a la cuenta en lugar de a una clave.
| Antes | Ahora |
|---|---|
| order.refunded | order.canceled |
| order.refill_completed | refill.completed |