API

Todo lo que hace el panel está disponible a través de dos APIs distintas. Ambas usan la misma cuenta, el mismo saldo y el mismo catálogo; se diferencian en el formato y en las capacidades.

Todo lo que hace el panel está disponible a través de dos APIs distintas. Ambas usan la misma cuenta, el mismo saldo y el mismo catálogo; se diferencian en el formato y en las capacidades.

¿Por qué hay dos APIs?

La API clásica de revendedor (v2) que usa todo el sector envía un formulario a un único endpoint y siempre responde HTTP 200. Ese es exactamente el formato que espera el software de panel prefabricado, así que se mantiene tal cual. Quienes escriben su propio sistema chocaban una y otra vez con sus límites: los errores no se podían distinguir, el catálogo llegaba en una sola pieza y había que consultar el estado del pedido sin descanso. v3 se escribió para ellos.

La API legacy no se va a cerrar. No hay fecha de fin; nunca tendrás que cambiar una integración que ya funciona.

Comparativa

CaracterísticaLegacy (v2)Nueva (v3)
FormatoUn solo endpoint, envío de formulario, parámetro actionREST orientado a recursos, cuerpo JSON
Código HTTPSiempre 200, incluso al fallarCódigos reales (400, 401, 402, 404, 409, 429, 502)
ErroresTexto libretype + code estable + mensaje localizado + param + doc_url
Estado del pedidoSolo texto localizadoValor de máquina estable más una etiqueta de presentación aparte
Descripción del servicioNo existeDescripción en 10 idiomas, tiempo medio, plataforma, categoría
Campos del pedidoSe deducen del nombre del tipoCada servicio publica su propio esquema de campos
Unidad de precioNo se indica (fuente de errores de 1000x en los paquetes)Se indica explícitamente como per_1000 o per_order
CatálogoTodos los servicios en una sola respuestaFiltros más paginación por cursor
Protección contra duplicadosNo existeIdempotency-Key
Aviso de estadoConsulta continuaWebhooks firmados o flujo de eventos
EsquemaNo existeOpenAPI 3.1
IdiomasInglés y turco (direcciones separadas)10 idiomas (por cabecera o por parámetro)

¿Cuál me conviene?

Legacy (v2)

Elige la API legacy si usas software de panel prefabricado, un bot o un panel de revendedor. La mayoría solo te pide cambiar la dirección de la API y la clave, y funciona en cuestión de minutos.

API nueva (v3)

Elige v3 si estás escribiendo tu propia aplicación, tienda o automatización. La gestión de errores, la protección contra duplicados y las notificaciones vienen ya incluidas, y puedes generar el formulario de pedido directamente desde el esquema del servicio.

Primeros pasos

  1. 1Crea una clave de API en la pestaña Claves.
  2. 2Descarga la lista de servicios y consulta el id y el esquema de campos del servicio que vas a usar.
  3. 3Valida el pedido primero con preview y créalo después.
  4. 4Registra un webhook, o lee el flujo de eventos, para seguir los cambios de estado.

Errores (48)

CódigoEstadoDescripción
missing_api_key401No se envió ninguna clave de API. Envíela en 'Authorization: Bearer <key>'.
invalid_api_key401La clave de API que proporcionó no es válida.
revoked_api_key401Esta clave de API fue revocada y ya no puede utilizarse.
account_banned403Esta cuenta está bloqueada.
account_suspended403Esta cuenta está suspendida.
insufficient_scope403Esta clave de API no tiene permiso para este endpoint.
invalid_json400El cuerpo de la solicitud no es JSON válido.
unsupported_content_type415Content-Type no admitido. Use application/json o application/x-www-form-urlencoded.
method_not_allowed405Este método HTTP no está permitido en este endpoint.
payload_too_large413El cuerpo de la solicitud es demasiado grande.
missing_parameter400Falta un parámetro obligatorio.
invalid_parameter400Un parámetro tiene un valor no válido.
invalid_quantity400La cantidad no es un número entero positivo válido.
quantity_out_of_range400La cantidad está fuera del rango permitido por este servicio.
invalid_comments400El campo de comentarios está vacío o tiene demasiadas líneas.
invalid_username400El nombre de usuario no es válido para este servicio.
invalid_subscription400Los parámetros de la suscripción no son válidos.
invalid_runs400El valor de 'runs' no es válido para la entrega gradual.
invalid_interval400El valor de 'interval' no es válido para la entrega gradual.
dripfeed_not_supported400Este servicio no admite la entrega gradual.
missing_required_field400Falta un campo requerido por este tipo de servicio o su valor no es válido.
service_inactive400Este servicio no está disponible para pedidos en este momento.
invalid_cursor400El cursor de paginación no es válido.
invalid_limit400El parámetro 'limit' está fuera del rango permitido.
invalid_webhook_url400La URL del webhook debe ser una dirección https:// pública.
invalid_events400Uno o más de los tipos de evento solicitados son desconocidos.
batch_too_large400Demasiados elementos en una sola solicitud por lotes.
cancel_not_supported400Este servicio no admite la cancelación.
refill_not_supported400Este servicio no ofrece reposición.
unknown_endpoint404Endpoint desconocido. Las rutas disponibles están en la referencia de la API.
service_not_found404No existe ningún servicio con este id.
order_not_found404No existe ningún pedido con este id en su cuenta.
refill_not_found404No existe ninguna reposición con este id en su cuenta.
webhook_not_found404No existe ningún endpoint de webhook con este id en su cuenta.
order_not_cancelable409Este pedido ya no se puede cancelar debido a su estado actual.
cancel_rejected409El proveedor rechazó la solicitud de cancelación.
order_not_completed409La reposición solo se puede solicitar para un pedido completado.
idempotency_key_reuse409Esta Idempotency-Key ya se utilizó con un cuerpo de solicitud diferente.
idempotency_in_progress409Una solicitud con esta Idempotency-Key sigue en proceso. Reinténtelo en breve.
webhook_limit_reached409Alcanzó el número máximo de endpoints de webhook.
insufficient_balance402Su saldo no es suficiente para este pedido.
rate_limit_exceeded429Límite de solicitudes superado. Consulte la cabecera de respuesta Retry-After.
provider_error502El proveedor devolvió un error. Inténtelo de nuevo.
refill_failed502El proveedor rechazó la solicitud de reposición.
service_temporarily_unavailable503Este servicio no está disponible temporalmente. Inténtelo más tarde.
internal_error500Se produjo un error inesperado de nuestro lado.