Base productiva
1Dominio principal de la API.
Portal tecnico CopDigital
Conecta tu sistema con CopDigital: autenticacion, pagos, multiproducto y multimedia. Ejemplos de solicitudes y respuestas para integrar desde tu servidor.
Base productiva
1Dominio principal de la API.
Modulos
3Pagos, Multiproducto, Multimedia.
Scopes
2payments y gen_hys.
Guardar
4trace_id, reference, provider_reference, idtrans.
Empieza aqui
Solicita acceso API y habilitacion de los servicios. Si aplica, registra la IP de tu servidor.
Autenticate en POST /api/auth/token. Usa data.access_token hasta su vencimiento indicado en data.expires_in. Mantén tus credenciales privadas.
curl --request POST 'https://back.copdigital.co/api/auth/token' \
--header 'Content-Type: application/json' \
--data '{"usuario":"TU_USUARIO","password":"TU_CLAVE"}'
Usa Authorization: Bearer TU_TOKEN. Consulta primero los catalogos o el historial. Las compras, recargas y transferencias no son simulaciones: pueden afectar saldo real.
Guarda la referencia y el trace_id. Confirma el resultado con el estado de la respuesta; HTTP 200 por si solo no confirma un pago.
Si no recibes respuesta, consulta la operacion antes de repetirla. Si no puedes confirmar su estado, contacta a soporte con su referencia.
401: revisa o renueva la autenticacion. 403: revisa permisos y restricciones. 409: interpreta el codigo de error; puede indicar pendiente o duplicado. 422: corrige los campos. 429: reduce la frecuencia y respeta Retry-After si esta presente. Un error de red o 5xx no confirma que una operacion financiera no se haya ejecutado.
Los valores son ilustrativos. Usa los montos, comisiones y limites devueltos por la API.
Paso 1
/api/auth/token
| Campo | Obligatorio | Descripcion |
|---|---|---|
usuario | Si | Usuario API entregado al integrador |
password | Si | Clave API del integrador |
Request ejemplo
{
"usuario": "cliente_demo",
"password": "TuClaveSegura123"
}
| Campo | Tipo | Descripcion |
|---|---|---|
ok | boolean | Resultado general de la autenticacion |
data.token_type | string | Normalmente Bearer |
data.access_token | string | Token para usar en el resto de llamadas |
data.expires_in | integer | Tiempo de vigencia en segundos |
data.scopes | array | Modulos permitidos al cliente |
Authorization: Bearer TOKEN_API_CLIENTEContent-Type: application/json
Response ejemplo
{
"ok": true,
"data": {
"token_type": "Bearer",
"access_token": "TOKEN_API_CLIENTE",
"expires_in": 86400,
"scopes": ["payments", "gen_hys"]
}
}
| Flow | Uso | Request minimo |
|---|---|---|
revistas_convenio | Listar convenios | Opcional force_refresh |
revistas_consulta | Preconsulta | idConv, phone, referencia |
revistas_pago | Pagar revista | idPre, valor, celular, idtrans, extraInputs |
certificado_snr_list | Listar servicios | Opcional busqueda |
certificados_producto | Detalle | productId |
certificados_consulta | Preconsulta | productId, extraInputs |
certificados_pago | Pagar certificado | productId, valor, idtrans, extraInputs |
epm_compra | Pagar EPM | valor, celular, idtrans y datos del formulario |
Base comun
| Variable | Que es | Que hacer |
|---|---|---|
trace_id | Id tecnico de la ejecucion | Guardarlo en logs y soporte |
reference | Referencia CopDigital | Usarla como identificador principal |
provider_reference | Referencia del proveedor | Guardarla para conciliacion y soporte |
idtrans | Id de venta del integrador | No reutilizarlo |
flow | Operacion exacta del endpoint | Enviar el valor correcto del flujo |
inputs | Formulario dinamico | Renderizarlo como llega |
extraInputs | Valores del formulario dinamico | Reenviar las mismas llaves |
Pagos
/v2/nq/apipes
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en COP |
document | No | Documento del pagador |
mail | No | Correo del pagador |
name | No | Nombre del pagador |
secondName | No | Apellido del pagador |
phone | No | Celular del pagador |
Request generar
{
"valor": 25000,
"document": "123456789",
"mail": "[email protected]",
"name": "Carlos",
"secondName": "Perez",
"phone": "3001234567"
}
| Campo | Tipo | Descripcion |
|---|---|---|
data.provider | string | Identificador del medio de pago |
data.link | string | URL externa para completar el pago |
data.reference | string | Referencia CopDigital para consultar despues |
data.provider_reference | string | Referencia interna del proveedor |
data.return_mode | string | Modo de salida del flujo de pago |
En medios con enlace y callback (PSE, PRIX, SUPRA y EFIPAY) puede enviar return_url.
return_mode = internal usa la salida CopDigital. return_mode = redirect usa una URL autorizada del integrador.
Usar POST /gen_hys/verifypay con Terp = PSE y data = reference.
Response generar
{
"ok": true,
"data": {
"provider": "pse",
"title": "PSE",
"link": "https://proveedor-pse.com/pago/abc123",
"reference": "1779040898962525",
"provider_reference": "HASH_PSE_9A81BC",
"helper": "Completa el pago desde el enlace PSE.",
"return_mode": "internal"
}
}
Response verificar
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "verifypay",
"terp": "PSE",
"status": "applied",
"amount": 25000,
"cost": 0,
"credit": 25000
},
"trace_id": "trc_pse_001"
}
Pagos
/v2/nq/apicop
Este flujo no requiere capturar monto en el request del integrador. El QR se genera directo y la referencia se usa despues para verificar el pago.
Request ejemplo
{}
sid identifica la sesion, image_b64 trae la imagen original del QR y remaining muestra el tiempo restante.
Muestra el QR tal como llega. Si deseas agregar logo o marca, aplicalo desde tu interfaz antes de presentarlo al pagador.
Response generar
{
"ok": true,
"expired": false,
"sid": "7049126",
"total": 150,
"created_at": 1779040898,
"expire_at": 1779041198,
"remaining": 300,
"image_b64": "data:image/png;base64,...",
"disclaimer": "Usa el QR antes del tiempo limite."
}
/v2/breb/generate/qr
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto a recaudar en COP |
Request generar
{
"valor": 25000
}
image trae la imagen original del QR, reference es la referencia CopDigital y provider_reference conserva el id interno del proveedor.
Muestra el QR tal como llega. Si deseas agregar logo o marca, aplicalo desde tu interfaz antes de presentarlo al pagador.
Response generar
{
"ok": true,
"data": {
"provider": "qr_breb",
"title": "QR Bre-B",
"image": "data:image/png;base64,...",
"reference": "BREB-287372123456",
"provider_reference": "BREB-287372123456",
"helper": "Escanea el QR y verifica la transaccion con la misma referencia.",
"return_mode": "internal"
}
}
/v2/nq/verify_qr
| Campo | Obligatorio | Descripcion |
|---|---|---|
sid | Si | Referencia recibida al generar el QR |
Request verificar
{
"sid": "7049126"
}
Response verificar
{
"ok": true,
"data": {
"status": "approved",
"reference": "7049126",
"amount": 25000,
"fecha": "2026-06-05 10:22:14",
"message": "Pago QR confirmado y saldo aplicado."
}
}
/v2/breb/verify_qr
| Campo | Obligatorio | Descripcion |
|---|---|---|
sid | Si | Referencia Bre-B generada previamente |
Request verificar
{
"sid": "BREB-287372123456"
}
Response verificar
{
"ok": true,
"data": {
"status": "approved",
"reference": "BREB-287372123456",
"amount": 25000,
"cost": 1300,
"credit": 23700,
"fecha": "2026-06-05 10:24:43",
"message": "Pago QR Bre-B confirmado y saldo aplicado."
}
}
Pagos
/v2/bn/consulta/exchange
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en USDT que pagara el cliente |
Request cotizacion
{
"valor": 5.3
}
rate_cop, gross_cop, total_discount_cop y net_cop.
Response cotizacion
{
"ok": true,
"data": {
"currency": "USDT",
"rate_cop": 3980,
"initial_amount": 5.3,
"gross_cop": 21094,
"provider_transaction_cost_cop": 0,
"platform_cost_cop": 0,
"total_discount_cop": 0,
"net_cop": 21094
}
}
/v2/bn/bnapi
Request generar
{
"valor": 5.3
}
Response generar
{
"ok": true,
"data": {
"provider": "binance",
"title": "Binance",
"image": "https://public.bnbstatic.com/qr/abc123.png",
"reference": "PREPAY_ID_BINANCE",
"provider_reference": "MERCHANT_TRADE_123",
"helper": "Usa el QR de Binance y luego verifica el prepay id.",
"return_mode": "internal"
}
}
/v2/bn/ver_pay
| Campo | Obligatorio | Descripcion |
|---|---|---|
data | Si | Prepay id recibido en la generacion del cobro |
Request verificar
{
"data": "PREPAY_ID_BINANCE"
}
La ruta directa confirma el prepay. Para monto, costo, credito y tasa usa POST /gen_hys/verifypay con Terp = BINANCE.
Response verificar
{
"ok": true,
"data": {
"status": "approved",
"reference": "PREPAY_ID_BINANCE"
}
}
Pagos
/v2/prix/generate/link
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en COP. Minimo 20000 |
return_url | No | URL de retorno para integrador |
logoBase64 | No | Logo personalizado en Base64. JPG, PNG o WEBP. Maximo 1MB |
Request generar
{
"valor": 25000,
"return_url": "https://tu-app.com/pagos/resultado",
"logoBase64": "iVBORw0KGgoAAAANSUhEUgAAA..."
}
link, reference, provider_reference y return_mode.
Response generar
{
"ok": true,
"data": {
"provider": "prix",
"title": "Prix",
"link": "https://checkout.prix.com/payment-link/abc123",
"reference": "1779040898962525",
"provider_reference": "PRIX_HASH_123",
"helper": "Abre el link de cobro y consulta el estado por reference.",
"return_mode": "redirect"
}
}
/gen_hys/prix_status
prix_status devuelve el ultimo estado disponible. Para actualizar y verificar el pago, envia:
{"Terp":"PRIX","data":"REFERENCIA_DEVUELTA_AL_GENERAR"}A POST /gen_hys/verifypay. Si esta pendiente, espera antes de volver a consultar.
| Campo | Obligatorio | Descripcion |
|---|---|---|
reference | Si | Referencia CopDigital devuelta en la generacion |
Request estado
{
"reference": "1779040898962525"
}
status, paid_amount, cost, credit y status_raw.
Response estado
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "prix_status",
"reference": "1779040898962525",
"provider_reference": "PRIX_HASH_123",
"status": "success",
"status_raw": "completed",
"paid_amount": 25000,
"cost": 0,
"credit": 25000
},
"trace_id": "trc_prix_001"
}
Pagos
/v2/spr/consulta/exchange
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en la moneda seleccionada a recaudar |
money | Si | Moneda enviada desde el front para Supra: MXN, CLP o BRL |
Request cotizacion
{
"valor": 100,
"money": "MXN"
}
provider_transaction_cost_cop, platform_cost_cop, total_discount_cop y net_cop.
Response cotizacion
{
"ok": true,
"data": {
"currency": "MXN",
"initial_amount": 100,
"gross_cop": 35000,
"provider_transaction_cost_cop": 1500,
"platform_cost_cop": 400,
"total_discount_cop": 1900,
"net_cop": 33100
}
}
/v2/spr/generate/link
Request generar
{
"valor": 100,
"money": "MXN",
"return_url": "https://tu-app.com/pagos/resultado"
}
Response generar
{
"ok": true,
"data": {
"provider": "supra",
"title": "Supra",
"link": "https://checkout.supra.com/pay/abc123",
"reference": "1779040898962525",
"provider_reference": "SUPRA_ID_9988",
"helper": "Abre el link y luego verifica con el id del proveedor.",
"return_mode": "redirect",
"currency": "MXN"
}
}
/v2/spr/verify/pay
| Campo | Obligatorio | Descripcion |
|---|---|---|
idver | Si | Identificador del pago Supra |
Request verificar
{
"idver": "ID_PAGO_SUPRA"
}
La ruta directa confirma estado y referencias. Para monto, costo y credito usa POST /gen_hys/verifypay con Terp = SUPRA.
Response verificar
{
"ok": true,
"data": {
"status": "approved",
"reference": "1779040898962525",
"provider_reference": "ID_PAGO_SUPRA"
}
}
Pagos
/v2/rbill/consulta/exchange
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en COP a recaudar |
Request cotizacion
{
"valor": 35000
}
provider_transaction_cost_cop, platform_cost_cop, total_discount_cop y net_cop.
Response cotizacion
{
"ok": true,
"data": {
"currency": "COP",
"initial_amount": 35000,
"gross_cop": 35000,
"provider_transaction_cost_cop": 3000,
"platform_cost_cop": 850,
"total_discount_cop": 3850,
"net_cop": 31150
}
}
/v2/rbill/generate/link
| Campo | Obligatorio | Descripcion |
|---|---|---|
valor | Si | Monto en COP |
return_url | No | URL de retorno del integrador |
webhook_url | No | URL para notificacion servidor a servidor |
Request generar
{
"valor": 35000,
"return_url": "https://tu-app.com/pagos/resultado",
"webhook_url": "https://tu-app.com/webhooks/copdigital"
}
Si envias webhook_url, CopDigital notificara el estado homologado cuando Efipay confirme el pago. La URL debe pertenecer a tus dominios autorizados. Por compatibilidad, la notificacion conserva los encabezados X-COPDIG-Event y X-COPDIG-Signature; la firma se envia como sha256=<hash> sobre el JSON crudo usando el secreto compartido con CopDigital.
Webhook enviado
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "verifypay",
"terp": "EFIPAY",
"status": "applied",
"amount": 35000,
"cost": 2225,
"credit": 32775,
"reference": "1779040898962525",
"provider_reference": "ID_PAGO_EFIPAY",
"fecha": "2026-07-24 10:30:00"
},
"trace_id": "trc_efipay_001"
}
Response generar
{
"ok": true,
"data": {
"provider": "efipay",
"title": "Efipay",
"link": "https://checkout.efipay.com/payment/abc123",
"reference": "1779040898962525",
"provider_reference": "EFIPAY_ID_7788",
"helper": "Abre el link y luego verifica con el id del proveedor.",
"return_mode": "internal"
}
}
/v2/rbill/verify/pay
| Campo | Obligatorio | Descripcion |
|---|---|---|
idver | Si | Identificador del pago Efipay |
Request verificar
{
"idver": "ID_PAGO_EFIPAY"
}
La ruta directa confirma estado y referencia del proveedor. Para monto, costo y credito usa POST /gen_hys/verifypay con Terp = EFIPAY.
Response verificar
{
"ok": true,
"data": {
"status": "approved",
"provider_reference": "ID_PAGO_EFIPAY"
}
}
Pagos
/gen_hys/verifypay
| Campo | Obligatorio | Descripcion |
|---|---|---|
Terp | Si | Medio de pago. Valores comunes: PSE, QR, QR_BREB, BINANCE, PRIX, SUPRA, EFIPAY |
data | Si | Referencia o id del pago segun el medio consultado |
Request ejemplo
{
"Terp": "QR",
"data": "7049126"
}
| Campo | Tipo | Descripcion |
|---|---|---|
data.status | string | Estado homologado del pago |
data.amount | number | Monto pagado o consultado |
data.cost | number | Costo total aplicado |
data.credit | number | Saldo neto acreditable al usuario |
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "verifypay",
"terp": "QR",
"status": "applied",
"amount": 25000,
"cost": 0,
"credit": 25000
},
"trace_id": "trc_verify_001"
}
Pagos
/gen_hys/consultpay
| Campo | Obligatorio | Descripcion |
|---|---|---|
fecha1 | Si | Fecha inicial en formato YYYY-MM-DD |
fecha2 | Si | Fecha final en formato YYYY-MM-DD |
Terp | Si | Medio a consultar: PSE, QR, BINANCE, PRIX, SUPRA, EFIPAY |
Request ejemplo
{
"fecha1": "2026-05-01",
"fecha2": "2026-05-19",
"Terp": "PSE"
}
| Campo | Tipo | Descripcion |
|---|---|---|
data.rows | array | Listado de pagos encontrados en el rango |
rows[].reference | string | Referencia CopDigital del pago |
rows[].status | string | Estado del pago |
rows[].amount | number | Monto asociado al registro |
Response ejemplo
{
"ok": true,
"data": {
"rows": [
{
"reference": "1779040898962525",
"status": "approved",
"amount": 25000
}
]
}
}
Multiproducto
| Ruta | Uso |
|---|---|
POST /gen_hys/recargas | Operaciones Colombia y corresponsal |
POST /gen_hys/recargas-mx | Operaciones Mexico |
POST /gen_hys/esp/req | Recargas especiales |
POST /gen_hys/list_multip | Listado de movimientos |
POST /gen_hys/list_multip_ticket | Ticket por movimiento |
GET /gen_hys/modules_state | Modulos habilitados |
GET /gen_hys/dashboard_state | Estado del dashboard |
/gen_hys/list_multip
| Campo | Obligatorio | Descripcion |
|---|---|---|
fecha1 | Si | Fecha inicial en formato YYYY-MM-DD |
fecha2 | Si | Fecha final en formato YYYY-MM-DD |
Request ejemplo
{
"fecha1": "2026-06-01",
"fecha2": "2026-06-05"
}
Response ejemplo
{
"ok": true,
"data": {
"count": 1,
"rows": [
{
"id": 25,
"idTransaction": "1778858151875649",
"producto": "Recarga",
"valor": 10000,
"fecha": "2026-06-05 10:15:00 AM",
"hasTicket": true
}
]
},
"trace_id": "abc123"
}
/gen_hys/list_multip_ticket
| Campo | Obligatorio | Descripcion |
|---|---|---|
id | Si | Id del movimiento obtenido en list_multip |
Request ejemplo
{
"id": 25
}
Response ejemplo
{
"ok": true,
"data": {
"id": 25,
"title": "Comprobante digitalcopdig",
"fields": [
{ "label": "Idtransaccion", "value": "1778858151875649" },
{ "label": "Producto", "value": "Recarga" }
],
"text_lines": [
"Idtransaccion: 1778858151875649",
"Producto: Recarga"
]
},
"trace_id": "abc123"
}
Multiproducto
/gen_hys/recargas
1. Selecciona proveedor con opc. 2. Usa el codigo de operador de recarga. 3. Envia numero, monto e idtrans.
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | Valor fijo recarga |
opc | Si | 1 proveedor 1, 2 proveedor 2 |
operador | Si | Codigo del operador movil a recargar |
celular | Si | Numero a recargar |
valor | Si | Monto en COP |
idtrans | Si | Id unico de la venta del integrador |
originCash | No | Origen del saldo. Normalmente 0 |
Codigos de operador para recargas Colombia
| Operador | Codigo |
|---|---|
| Claro | cl |
| Movistar | mo |
| Tigo | ti |
| ETB | et |
| Virgin | vi |
| Exito | ex |
| Buenofon | bf |
| WOM | wm |
| Flash Mobile | fm |
| DirecTV | di |
Request ejemplo
{
"flow": "recarga",
"opc": 1,
"operador": "cl",
"celular": "3001234567",
"valor": 10000,
"idtrans": "1778858151875649"
}
Request ejemplo usando proveedor 2
{
"flow": "recarga",
"opc": 2,
"operador": "cl",
"celular": "3001234567",
"valor": 10000,
"idtrans": "1778858151875650",
"originCash": 0
}
data.provider.idtrans, data.provider.date, data.provider.respuesta y trace_id.
Response ejemplo
{
"ok": true,
"data": {
"idtrans": "1780711896633001",
"estado": "00",
"respuesta": "Transaccion exitosa",
"date": "2026-06-05 09:11:38 PM",
"info": "aa-bb-cc-dd",
"codigoauth": "123456",
"codop": "123456"
},
"trace_id": "abc123"
}
/gen_hys/recargas-mx
1. Consulta catalogo con catalog_tae o catalog_tae_virtual. 2. Toma el idOffer y usalo como carrier. 3. Ejecuta la recarga con flow=recarga.
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | Valor fijo recarga |
carrier | Si | Id del offer MX obtenido desde catalog_tae o catalog_tae_virtual |
telefono | Si | Numero destino de 10 digitos |
type | Si | 0 TAE normal, 1 TAE virtual |
walletType | No | BL saldo MX o GL ganancias MX. Si no se envía usa BL |
idtrans | Si | Id unico de la venta del integrador |
Request catalogo MX
{
"flow": "catalog_tae"
}
Response catalogo MX
{
"ok": true,
"data": {
"rows": [
{
"idOffer": 1234,
"carrier": "Telcel",
"amount": 50000,
"type": 0
}
]
},
"trace_id": "abc123"
}
Request ejemplo
{
"flow": "recarga",
"carrier": 1234,
"telefono": "5512345678",
"type": 0,
"walletType": "BL",
"idtrans": "1778858151875649"
}
data.provider.idtx, data.provider.idtrans, data.provider.walletType, data.provider.walletLabel, data.provider.profitEnabled y trace_id.
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "recargas-mx",
"flow": "recarga",
"provider": {
"idtx": "1778858151875649",
"idtrans": "1778858151875649",
"date": "2026-06-05 10:15:00 AM",
"message": "Transaccion exitosa",
"walletType": "BL",
"walletLabel": "Saldo MX",
"profitEnabled": true
}
},
"trace_id": "abc123"
}
catalog_tae y catalog_tae_virtual listan recargas. services_list, peajes_list y pines_list listan catálogo adicional para pagos, peajes y pines.
| Flow | Uso | Request minimo | Response minimo |
|---|---|---|---|
services_list | Lista servicios MX | Sin campos obligatorios | data.rows[].sku, data.rows[].name, data.rows[].amount |
services_pay | Paga servicio MX | sku, referencia, monto, telefono, idtrans | data.provider.idtrans, message |
pines_list | Lista pines MX | Sin campos obligatorios | data.rows[].sku, data.rows[].name, data.rows[].amount |
pines_pay | Compra pin MX | idPin, telefono, idtrans | data.provider.idtrans, message, codePin |
peajes_list | Lista peajes MX | Sin campos obligatorios | data.rows[].idPeaje, data.rows[].name |
peajes_pay | Compra peaje MX | idPeaje, referencia, telefono, monto, idtrans | data.provider.idtrans, message |
Request servicio MX ejemplo
{
"flow": "services_pay",
"sku": 2501,
"referencia": "1234567890",
"monto": 35000,
"telefono": "5512345678",
"idtrans": "1778858151875649"
}
Response servicio MX ejemplo
{
"ok": true,
"data": {
"provider": {
"idtrans": "1778858151875649",
"message": "Transaccion exitosa"
}
},
"trace_id": "abc123"
}
Multiproducto
1. Selecciona el operador con su codigo de paquetes. 2. Consulta catalogo con paquetes_list o venquetes_list. 3. Toma el practi_code del paquete elegido. 4. Compra con paquete o venpaquete. El valor no se envia en la compra; sale del catalogo.
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | Valor fijo paquetes_list |
operador | Si | Codigo del operador a consultar |
Codigos de operador Colombia
| Operador | Codigo |
|---|---|
| Claro | pc |
| Movistar | pm |
| Tigo | pi |
| ETB | ep |
| Virgin | vp |
| Exito | pe |
| Buenofon | bp |
| WOM | pw |
Codigos de operador Venezuela
| Operador | Codigo |
|---|---|
| Digitel | dtvn |
| Movistar VE | movn |
| Movilnet | mvn |
| SimpleTV | stv |
Request ejemplo
{
"flow": "paquetes_list",
"operador": "pc"
}
Request ejemplo Venezuela
{
"flow": "venquetes_list",
"operador": "dtvn"
}
Response ejemplo
{
"ok": true,
"data": {
"operador": "pc",
"count": 2,
"rows": [
{
"practi_code": 2451,
"product_desc": "Paquete 15 dias",
"sell": 15000,
"percentage": 0
}
]
},
"trace_id": "abc123"
}
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | paquete para Colombia o venpaquete para Venezuela |
operador | Si | Codigo del operador de paquetes |
paquete | Si | Id del paquete elegido desde rows[].practi_code o catálogo equivalente |
celular | Si | Numero destino |
idtrans | Si | Id unico de la venta |
Request ejemplo
{
"flow": "paquete",
"operador": "pc",
"paquete": 2451,
"celular": "3001234567",
"idtrans": "1778858151875649"
}
Request compra Venezuela
{
"flow": "venpaquete",
"operador": "dtvn",
"paquete": 9012,
"celular": "4121234567",
"idtrans": "1778858151875651"
}
El valor real sale del catalogo consultado. La venta responde con data.provider.idtrans, data.provider.date, data.provider.respuesta y trace_id.
Response ejemplo
{
"ok": true,
"data": {
"idtrans": "1780711896633001",
"estado": "00",
"respuesta": "Transaccion exitosa",
"date": "2026-06-05 09:11:38 PM",
"info": "aa-bb-cc-dd",
"codigoauth": "123456",
"codop": "123456"
},
"trace_id": "abc123"
}
Multiproducto
/gen_hys/recargas
Consulta por operador. En la compra, paquete debe ser el practi_code devuelto por el catalogo.
| Flow | Uso | Campos clave |
|---|---|---|
pines_list | Listar catalogo | operador |
pines | Comprar pin | celular, operador, paquete, idtrans |
Codigos de operador
| Codigo | Producto | Ganancia |
|---|---|---|
nx | Netflix | Porcentaje |
amz | Amazon | Porcentaje |
vx | Vix | Porcentaje |
dg | DirecTV GO | Porcentaje |
ws | Win Sports | Porcentaje |
Request catalogo ejemplo
{
"flow": "pines_list",
"operador": "nx"
}
Response catalogo ejemplo
{
"ok": true,
"data": {
"operador": "nx",
"count": 1,
"rows": [
{
"practi_code": "101001",
"product_desc": "Pin Netflix",
"sell": 20000,
"validity": "30 dias"
}
]
},
"trace_id": "abc123"
}
Request compra ejemplo
{
"flow": "pines",
"celular": "3001234567",
"operador": "nx",
"paquete": 101001,
"idtrans": "1778858151875649"
}
Venta confirmada con identificador de la compra y, segun el producto, pin o codigo de entrega.
Response ejemplo
{
"ok": true,
"data": {
"idtrans": "1780711896633001",
"estado": "00",
"respuesta": "Transaccion exitosa",
"date": "2026-06-05 09:11:38 PM",
"info": "aa-bb-cc-dd",
"codigoauth": "123456",
"codop": "123456"
},
"trace_id": "abc123"
}
/gen_hys/recargas
Consulta la lista, valida el detalle del producto y envia los campos solicitados en extraInputs.
| Flow | Uso | Campos clave |
|---|---|---|
pines_prove2_list | Listar catalogo | Sin parametros adicionales |
pines_prove2_producto | Consultar detalle | productId |
pines_prove2_pago | Comprar pin | productId, idtrans, extraInputs |
Codigos de ganancia por producto
| Codigo | Producto detectado | Ganancia |
|---|---|---|
nxb | Netflix | Porcentaje |
mcb | McAfee | Porcentaje |
dzb | Deezer | Porcentaje |
xbb | Xbox | Porcentaje |
ptb | PlayStation | Porcentaje |
wifb | Wifi Premium | Porcentaje |
wsb | Win Sports | Porcentaje |
dib | DirecTV | Porcentaje |
dgb | DirecTV GO | Porcentaje |
rab | Razer Gold | Porcentaje |
ofb | Microsoft Office | Porcentaje |
ffb | Free Fire | Porcentaje |
iub | IMVU | Porcentaje |
kab | Kaspersky | Porcentaje |
rob | Roblox | Porcentaje |
esab | Energia ESSA | Fijo |
embb | Energia EPM | Fijo |
eceb | Energia CENS | Fijo |
midb | Midatacredito | Fijo |
Request lista ejemplo
{
"flow": "pines_prove2_list"
}
Response lista ejemplo
{
"ok": true,
"data": {
"count": 1,
"rows": [
{
"id": "101001",
"name": "Wifi Premium",
"operator_code": "wifb",
"sell": 1500
}
]
},
"trace_id": "abc123"
}
Request detalle ejemplo
{
"flow": "pines_prove2_producto",
"productId": 101001
}
Response detalle ejemplo
{
"ok": true,
"data": {
"productId": 101001,
"name": "Wifi Premium",
"amount": 1500,
"Inputs": [
{
"name": "customerCellphone",
"label": "Celular",
"required": true
}
]
},
"trace_id": "abc123"
}
Request compra ejemplo
{
"flow": "pines_prove2_pago",
"productId": 101001,
"catalogProductId": 101001,
"celular": "3001234567",
"extraInputs": {
"productId": 101001,
"customerCellphone": "3001234567",
"customerEmail": "[email protected]",
"amount": 1500
},
"idtrans": "1778858151875649"
}
extraInputs debe enviarse con los campos que devuelve el detalle. Si el producto trae valor fijo, usa el monto del detalle.
Response ejemplo
{
"ok": true,
"data": {
"idtrans": "019e9ab1-b1d8-777b-9bf6-3cae010c5f0a",
"respuesta": "Exitoso",
"date": "2026-06-05 09:09:57 PM",
"requestFeedback": true,
"producto": "Netflix",
"telefono": "3008711364",
"valor": 20000,
"pin": "uf1bt3"
},
"trace_id": "abc123"
}
Multiproducto
1. Consulta el catalogo disponible. 2. Muestra name, description y price al cliente final. 3. Compra enviando productId, customerName, email y una reference numerica unica. 4. Guarda reference, provider_id, link y trace_id. 5. Si pierdes conexion antes de recibir respuesta final, consulta el estado con /enlace-disney/status.
/enlace-disney/products
Devuelve los productos activos para vender. El precio viene en COP y debe usarse para mostrar el valor antes de confirmar la compra.
| Header | Obligatorio | Descripcion |
|---|---|---|
Authorization | Si | Bearer TOKEN_API_CLIENTE |
Content-Type | Si | application/json |
Request ejemplo
GET /enlace-disney/products
Authorization: Bearer TOKEN_API_CLIENTE
Content-Type: application/json
Campos de respuesta
| Campo | Tipo | Descripcion |
|---|---|---|
data.products[].id | integer | Identificador que se envia como productId al comprar |
data.products[].name | string | Nombre comercial del producto |
data.products[].description | string | Descripcion corta del producto |
data.products[].price | number | Valor de venta en COP |
data.count | integer | Cantidad de productos disponibles |
trace_id | string | Id para soporte y trazabilidad |
Response ejemplo
{
"ok": true,
"data": {
"products": [
{
"id": 1,
"name": "Disney Basic",
"description": "Acceso Disney Basic mensual",
"price": 19900
},
{
"id": 2,
"name": "Disney Premium",
"description": "Acceso Disney Premium mensual",
"price": 24900
}
],
"count": 2
},
"trace_id": "trc_ed_catalog_001"
}
/enlace-disney/buy
La compra descuenta el saldo del integrador, registra la venta multiproducto y devuelve el enlace de activacion cuando la operacion es exitosa.
| Campo | Obligatorio | Descripcion |
|---|---|---|
data.reference | No | Referencia numerica unica del integrador, de 6 a 16 digitos. Si no se envia, CopDigital genera una. |
data.customerName | Si | Nombre completo del cliente final |
data.email | Si | Correo del cliente final donde se asociara la compra |
data.productId | Si | Id del producto tomado desde /enlace-disney/products |
Request ejemplo
{
"data": {
"reference": "1781065879040292",
"customerName": "Pedro Marin",
"email": "[email protected]",
"productId": 2
}
}
Campos de respuesta
| Campo | Tipo | Descripcion |
|---|---|---|
data.result | string | Resultado de la compra. Para exito devuelve success |
data.reference | string | Referencia usada para la venta |
data.provider_id | string | Id de entrega generado para la compra |
data.link | string | Enlace de activacion para entregar al cliente |
data.activation_url | string | Mismo enlace de activacion, disponible como alias |
data.product | object | Producto vendido: id, nombre, descripcion y precio |
data.customer | object | Nombre y correo enviados en la compra |
data.ganancia | number | Ganancia calculada para la venta |
data.saldo_actual | number | Saldo disponible despues de la compra |
trace_id | string | Id para soporte |
Response ejemplo
{
"ok": true,
"data": {
"result": "success",
"reference": "1781065879040292",
"provider_id": "019eafcc-9073-75c9-bb0e-aace0c952d50",
"link": "https://disney.apiws.co/activate/TOKEN_DE_ACTIVACION",
"activation_url": "https://disney.apiws.co/activate/TOKEN_DE_ACTIVACION",
"movement_id": 12544,
"product": {
"id": 2,
"name": "Disney Premium",
"description": "Acceso Disney Premium mensual",
"price": 24900
},
"customer": {
"name": "Pedro Marin",
"email": "[email protected]"
},
"ganancia": 747,
"porcentaje": 3,
"saldo_anterior": 3233603.44,
"saldo_actual": 3208703.44
},
"trace_id": "trc_ed_buy_001"
}
/enlace-disney/status
Usalo cuando la compra queda en duda por timeout, corte de red o cierre inesperado de la conexion. No descuenta saldo; solo consulta el resultado ya procesado.
| Campo | Obligatorio | Descripcion |
|---|---|---|
data.reference | Si | Referencia enviada en la compra |
data.id | No | Id de entrega si lo tienes. Si no lo tienes, enviarlo vacio o no enviarlo. |
Request ejemplo
{
"data": {
"reference": "1781065879040292",
"id": ""
}
}
Response ejemplo
{
"ok": true,
"data": {
"provider": "enlace_disney",
"result": "success",
"is_success": true,
"reference": "1781065879040292",
"provider_id": "019eafcc-9073-75c9-bb0e-aace0c952d50",
"transaction_id": "019eafcc-9073-75c9-bb0e-aace0c952d50",
"email": "[email protected]",
"link": "https://disney.apiws.co/activate/TOKEN_DE_ACTIVACION",
"activation_url": "https://disney.apiws.co/activate/TOKEN_DE_ACTIVACION"
},
"trace_id": "trc_ed_status_001"
}
reference, pero no tienes el enlace de activacion.La consulta puede hacerse solo con reference. Si tambien tienes provider_id, puedes enviarlo en id.
| Codigo | Cuando ocurre | Accion recomendada |
|---|---|---|
VALIDATION_ERROR | Falta productId, customerName, email o la referencia no cumple formato | Corregir el request y reenviar con una referencia unica |
PRODUCT_NOT_FOUND | El producto ya no esta disponible | Actualizar catalogo y permitir seleccionar otro producto |
DUPLICATE_TRANSACTION | La referencia ya fue usada | No reutilizar reference; consultar el movimiento antes de reintentar |
INSUFFICIENT_BALANCE | Saldo insuficiente para cubrir el precio | Recargar saldo antes de comprar |
PROVIDER_UNAVAILABLE | No fue posible completar la compra | El saldo se reintegra; reintentar mas tarde o contactar soporte con trace_id |
reference numerica unica por intento de compra.link o activation_url.provider_id, movement_id y trace_id./enlace-disney/status antes de repetir una compra con la misma referencia.PRODUCT_NOT_FOUND.Multiproducto
/gen_hys/recargas
| Flow | Uso | Campos |
|---|---|---|
facturas_convenio_consulta | Buscar convenios por nombre o referencia | busqueda opcional |
facturas_barcode_convenio_consulta | Buscar convenios por codigo de barras | busqueda opcional |
facturas_prove2_producto_config | Consultar formulario de un convenio Proveedor 2 | productId |
Request ejemplo
{
"flow": "facturas_convenio_consulta",
"busqueda": "energia"
}
Response ejemplo
{
"ok": true,
"data": {
"count": 1,
"rows": [
{
"id": "501004",
"nombre": "Convenio ejemplo",
"tipo": "2",
"provider_label": "Proveedor 2"
}
]
},
"trace_id": "abc123"
}
0 y 3 son convenios normales. 2 corresponde a FG. Conserva el tipo devuelto por el catalogo para enviarlo en el pago cuando aplique.
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | facturas_consulta para consultar, facturas_pago para pagar |
opc | Si | Valor fijo 1 |
idConv | Si | Id del convenio seleccionado |
extConvenio | Condicional | Referencia de pago cuando se consulta manualmente |
ballean | Condicional | Codigo de barras cuando el convenio se consulta por barcode |
valor | Si en pago | Valor confirmado en la preconsulta |
idPre | Si en pago | Identificador devuelto por la preconsulta |
idtrans | Si en pago | Id unico de la venta del integrador |
Request preconsulta
{
"flow": "facturas_consulta",
"opc": 1,
"idConv": 474736649,
"extConvenio": "1234567890"
}
Response preconsulta
{
"ok": true,
"data": {
"referencia": "1234567890",
"valorPago": 150820,
"idPre": "474736649",
"nconvenio": "Convenio ejemplo",
"date": "2026-06-05 09:20:00 PM"
},
"trace_id": "abc123"
}
Request pago
{
"flow": "facturas_pago",
"opc": 1,
"idPre": "474736649",
"reference": "1234567890",
"valor": 150820,
"celular": "3001234567",
"extraInputs": {
"__agreementType": "2"
},
"idtrans": "1780711896633001"
}
Response pago
{
"ok": true,
"data": {
"idtrans": "1780711896633001",
"estado": "00",
"respuesta": "Transaccion exitosa",
"date": "2026-06-05 09:20:10 PM",
"codigoauth": "123456",
"codop": "123456",
"producto": "Pago de factura"
},
"trace_id": "abc123"
}
Si el catalogo entrega tipo, envia ese valor en extraInputs.__agreementType. 2 aplica FG; 0 y 3 aplican comision normal.
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | facturas_consulta para consultar, facturas_pago para pagar |
opc | Si | Valor fijo 2 |
idConv | Si | Id del convenio seleccionado |
celular | Si | Celular del cliente |
extraInputs | Si | Datos requeridos por el formulario del convenio |
sign | Si en pago | Codigo devuelto por la preconsulta |
idtrans | Si en pago | Id unico de la venta del integrador |
Request preconsulta
{
"flow": "facturas_consulta",
"opc": 2,
"idConv": 501004,
"celular": "3001234567",
"extraInputs": {
"reference": "1234567890"
}
}
Response preconsulta
{
"ok": true,
"data": {
"referencia": "1234567890",
"valorPago": 150820,
"idPre": "501004",
"pagoParcial": 0,
"amountEditable": false,
"amount": {
"amount": 150000,
"cost": 820,
"incentive": 0
},
"sign": "SIGN_PRECONSULTA",
"inputs": [],
"date": "2026-06-05 09:21:00 PM"
},
"trace_id": "abc123"
}
Request pago
{
"flow": "facturas_pago",
"opc": 2,
"idPre": "501004",
"reference": "1234567890",
"valor": 150820,
"celular": "3001234567",
"extraInputs": {
"reference": "1234567890",
"amount": 150820
},
"sign": "SIGN_PRECONSULTA",
"idtrans": "019e9ab1-b1d8-777b-9bf6-3cae010c5f0a"
}
Response pago
{
"ok": true,
"data": {
"idtrans": "019e9ab1-b1d8-777b-9bf6-3cae010c5f0a",
"respuesta": "Exitoso",
"date": "2026-06-05 09:21:15 PM",
"requestFeedback": true,
"reference": "1234567890",
"amount": 150820,
"producto": "Pago de factura"
},
"trace_id": "abc123"
}
En Proveedor 2 se recomienda siempre hacer preconsulta antes del pago y enviar el sign recibido.
| Caso | Comision aplicada | Nota |
|---|---|---|
Proveedor 1, tipo 0 o 3 | Normal | Factura tradicional |
Proveedor 1, tipo 2 | FG | Enviar el tipo recibido en el catalogo |
| Proveedor 2 | Fija de factura | Usa el valor confirmado en preconsulta |
Guarda la referencia devuelta por la API y el comprobante de la operacion. Esos datos facilitan soporte y conciliacion.
Multiproducto
| Operacion | Flow |
|---|---|
| Listar loterias | loteria_list |
| Ciudades por departamento | loteria_ciudad |
| Cliente frecuente | loteria_cliente |
| Consultar fracciones | loteria_fracttion |
| Vender loteria | loteria_sell |
| Consultar premios | loteria_premios |
| Pagar premios | loteria_pago_premios |
La venta exige datos reales del comprador y una sola loteria por transaccion. El arreglo select debe salir de los flujos previos de loteria.
Request venta ejemplo
{
"flow": "loteria_sell",
"tipodmento": "CC",
"name1": "Cliente",
"name2": "Demo",
"apellido1": "Prueba",
"apellido2": "Uno",
"identidlote": "1012345678",
"departlote": 11,
"ciudadlote": 11001,
"telelote": "3001234567",
"emaillote": "[email protected]",
"idtrans": "1778858151875649",
"originCash": 0,
"select": [
{
"v_Loteria": 12,
"v_Sorteo": 1452,
"v_NumeroBillete": "1234",
"v_NumeroSerie": "001",
"v_NumeroFraccion": 1,
"v_Fraccion": "S",
"v_NewId": "TEMP001",
"v_TemporalVenderBillete": 77
}
]
}
Response ejemplo
{
"ok": true,
"data": {
"message": "Venta realizada"
},
"trace_id": "abc123"
}
loteria_premios consulta premios por documento. loteria_pago_premios confirma los premios seleccionados y responde con message, total e idtrans.
Request premios ejemplo
{
"flow": "loteria_premios",
"tipodmento": "CC",
"identidlote": "1012345678"
}
Response premios ejemplo
{
"ok": true,
"data": {
"rows": [
{
"ticket": "1234-001",
"premio": 50000
}
]
},
"trace_id": "abc123"
}
Multiproducto
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | Valor fijo apuesta |
celular | Si | Documento o referencia del cliente segun operador |
telefono | Si | Celular del cliente |
operador | Si | Codigo de la casa de apuesta |
valor | Si | Monto a cargar. Minimo 2000 |
name | Condicional | Requerido cuando operador = lk (Luckia) |
idtrans | Si | Id unico de la venta |
Request ejemplo
{
"flow": "apuesta",
"celular": "1012345678",
"telefono": "3001234567",
"operador": "lk",
"valor": 20000,
"name": "Cliente Demo",
"idtrans": "1778858151875649",
"originCash": 0
}
Response ejemplo
{
"ok": true,
"data": {
"provider": {
"transactionId": "SPT001",
"message": "Exitoso"
}
},
"trace_id": "abc123"
}
BetPlay operador = bt no se procesa por flow = apuesta; debe enviarse por recarga especial.
/gen_hys/esp/req
| Campo | Obligatorio | Descripcion |
|---|---|---|
celular | Si | Numero o identificacion destino |
operador | Si | Nombre interno del operador |
idtrans | Si | Id unico de la venta |
descript | Si | Descripcion comercial del operador |
identidad | Si | Documento del cliente |
valor | Si | Monto a cargar |
Request ejemplo
{
"celular": "1012345678",
"operador": "Betplay",
"idtrans": "1778858151875649",
"descript": "BetPlay",
"identidad": "1012345678",
"valor": 30000
}
Response ejemplo
{
"ok": true,
"data": {
"provider": {
"transactionId": "ESP001",
"message": "Exitoso"
}
},
"trace_id": "abc123"
}
Multiproducto
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow = obligaciones_list | No | Lista convenios disponibles. Acepta busqueda |
flow = obligaciones_producto | Si | Obtiene detalle e inputs requeridos para productId |
flow | Si | Valor fijo obligaciones_consulta |
productId | Si | Convenio a consultar |
extraInputs | Si | Formulario dinámico del proveedor. Puede incluir reference, customerQueryType, customerDocType, customerDocument y customerPaymentType |
Request ejemplo
{
"flow": "obligaciones_consulta",
"productId": 701005,
"extraInputs": {
"customerQueryType": "1",
"reference": "1234567890",
"customerDocType": "CC",
"customerDocument": "1012345678",
"customerPaymentType": "1"
}
}
Response ejemplo
{
"ok": true,
"data": {
"amount": 25000,
"amountEditable": false,
"inputs": [
{ "name": "reference", "required": true, "value": "1234567890" },
{ "name": "amount", "required": true, "value": 25000 }
]
},
"trace_id": "abc123"
}
Después de consultar, el pago usa flow = obligaciones_pago con productId, extraInputs, idtrans y datos del formulario. La respuesta mínima útil es data.provider.idtrans, data.provider.message y trace_id.
/gen_hys/recargas
| Campo | Obligatorio | Descripcion |
|---|---|---|
flow | Si | Valor fijo breb_key_resolve |
keyValue | Si | Alias o llave a resolver. Mínimo 3 caracteres |
flow = breb_key_cashin | Si | Usa la llave resuelta para depositar |
resolveId | Si | Id devuelto por la resolución |
valor | Si | Monto a depositar. Minimo 10000; respeta el maximo y los limites disponibles devueltos en la consulta para tu cuenta. |
idtrans | Si | Id único de la operación |
note | No | Observación del depósito |
Request resolve ejemplo
{
"flow": "breb_key_resolve",
"keyValue": "alias@entidad"
}
cashinBaseCost, cashinAdjustment, cashinCost, provider.resolveId, límites diarios y datos del titular.
Response ejemplo
{
"ok": true,
"data": {
"provider": {
"status": "00",
"resolveId": "BRB001",
"cashinBaseCost": 1000,
"cashinAdjustment": 300,
"cashinCost": 1300,
"cashinMaxAmount": 500000,
"cashinDailyRemainingForKey": 2
},
"keyData": {
"keyValue": "alias@entidad",
"accountHolderName": "Cliente Demo",
"bankName": "Banco Demo"
}
}
}
Request cashin ejemplo
{
"flow": "breb_key_cashin",
"keyValue": "alias@entidad",
"resolveId": "BRB001",
"valor": 50000,
"idtrans": "1778858151875649",
"note": "Transferencia Bre-B"
}
Response cashin ejemplo
{
"ok": true,
"data": {
"provider": {
"transactionId": "BRBCASH001",
"amount": 50000,
"baseCost": 1000,
"costAdjustment": 300,
"cost": 1300,
"totalDebit": 51300,
"message": "Transaccion exitosa"
}
}
}
El alias público prove2_ticket_detalle permite consultar el ticket de una operación avanzada con transactionId. Devuelve available, fields y text_lines.
Multiproducto
1. Consulta el catalogo disponible. 2. Selecciona un paquete. 3. Registra la solicitud con el paquete retornado. La respuesta entrega una referencia idtrans para seguimiento y soporte.
/gen_hys/create_service/pines/list
| Campo | Obligatorio | Descripcion |
|---|---|---|
operador | Si | Codigo del servicio. Ejemplos: nx, disn, amz, nup, plx, jlf, emb, vx, dg, ws. |
pais | Si | COLOMBIA, MEXICO o INTERNACIONAL |
reqt | Si | Crear o Renovar |
format | No | Usa json para recibir respuesta estructurada. Si no se envia, se mantiene HTML legacy. |
Request catalogo
{
"operador": "nx",
"pais": "COLOMBIA",
"reqt": "Crear",
"format": "json"
}
Para integraciones API usa format: "json". El HTML se mantiene solo por compatibilidad con integraciones visuales existentes.
Response JSON ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "create_service_catalog",
"operator": "nx",
"country": "COLOMBIA",
"request_type": "Crear",
"count": 1,
"products": [
{
"id": "PKG001",
"code": "PKG001",
"operator": "nx",
"category": "nx",
"name": "Netflix Premium 30 dias",
"description": "Netflix Premium 30 dias",
"value": 30000,
"currency": "COP"
}
],
"extra": {
"requires_plan_selection": true,
"requires_additional_data": false
}
},
"trace_id": "trc_catalog_001"
}
Response HTML legacy ejemplo
<div class="ov-btn-grow-box3" id="PKG001" data-cost="30000" data-decr="Netflix Premium 30 dias">
<span>Netflix Premium 30 dias</span>
<h4>Valor: 30000</h4>
</div>
/gen_hys/create_service/create
| Campo | Obligatorio | Descripcion |
|---|---|---|
email | Si | Correo o usuario de la cuenta sobre la que se solicita el servicio. |
clave | Si | Clave asociada al servicio. En renovacion, envia la clave actual cuando el servicio la requiera. |
pais | Si | Mismo pais usado al consultar el catalogo. |
req | Si | Crear o Renovar |
operador | Si | Mismo codigo usado al consultar el catalogo. |
paquete | Si | ID del paquete retornado por el catalogo. |
descript | Si | Nombre del servicio seleccionado. Debe corresponder al operador. |
addition | No | Informacion adicional solicitada por el servicio o plan. |
Request crear
{
"email": "[email protected]",
"clave": "ClaveSegura123*",
"pais": "COLOMBIA",
"req": "Crear",
"operador": "nx",
"paquete": "PKG001",
"descript": "Servicio Netflix",
"addition": "Plan Premium"
}
Request renovar
{
"email": "[email protected]",
"clave": "ClaveActual123*",
"pais": "MEXICO",
"req": "Renovar",
"operador": "amz",
"paquete": "PKG102",
"descript": "Amazon 30 dias",
"addition": "Cuenta principal"
}
Response crear
{
"idtrans": "019f5d5e-6a61-4750-a4d2-6d1a4c5d6b7e",
"response": "Espere de 5 - 10 minutos",
"date": "2026-06-05 09:35:00 PM",
"estado": "00",
"addition": "Es importante validar el correo de cada cuenta creada."
}
Response error
{
"ok": false,
"error": "INSUFFICIENT_BALANCE",
"message": "Saldo insuficiente.",
"trace_id": "trc_create_001"
}
| Codigo | Servicio | descript para crear | Notas |
|---|---|---|---|
nx | Netflix | Servicio Netflix | Colombia, Mexico e internacional segun catalogo |
disn | Disney | Disney 30 dias | Solo Colombia |
amz | Amazon | Amazon 30 dias | En Mexico solo renovar |
nup | Nuplin | Servicio Nuplin | Solo crear desde esta ruta |
plx | Plex | Servicio Plex | Solo crear desde esta ruta |
jlf | Jellyfin | Servicio Jellyfin | Solo crear desde esta ruta |
emb | Emby | Servicio Emby | Solo crear desde esta ruta |
vx | Vix | Servicio Vix | Crear o renovar segun catalogo |
dg | DirecTV GO | Servicio DirectvGo | Puede requerir datos adicionales |
ws | Win Sports | Servicio WinSport | Puede requerir datos adicionales |
| Tema | Regla |
|---|---|
| Catalogo | Consulta siempre el catalogo antes de registrar la solicitud. No armes el paquete manualmente. |
| Coherencia | Usa el mismo operador, pais y tipo de solicitud en ambos pasos. |
| Disney | Solo Colombia. El correo debe usar un dominio de correo reconocido. |
| Amazon Mexico | Solo permite Renovar. |
| Plex, Jellyfin y Emby | Solo Crear. La clave debe tener mayuscula, minuscula, numero, simbolo y minimo 10 caracteres. |
| Saldo | La plataforma descuenta el valor cuando la solicitud queda registrada. |
| Seguimiento | Guarda la referencia devuelta por la API y el correo usado en la solicitud para soporte. |
| Estado | estado: "00" indica solicitud registrada; no significa entrega inmediata del servicio. |
/gen_hys/report_plx/{servicio}
Permite reportar fallos de servicios especiales compatibles. El reporte queda asociado al usuario autenticado y a la cuenta entregada.
| Valor URL | Servicio |
|---|---|
plex | Plex |
jellyfin | Jellyfin |
emby | Emby |
| Campo | Obligatorio | Descripcion |
|---|---|---|
busplx | Si | Correo o usuario de la cuenta entregada. |
textoplx | Si | Descripcion clara del fallo reportado. |
evid_cap | No | Imagen de evidencia, enviado como archivo. |
Request form-data
POST /gen_hys/report_plx/plex
[email protected]
textoplx=La cuenta no permite iniciar sesion desde la app.
[email protected]
Response exitoso
{
"success": true,
"message": "Reporte enviado con exito!"
}
Cuenta sin asociacion
{
"success": false,
"message": "Error la cuenta ya no se encuentra asociada a este usuario"
}
Reporte duplicado
{
"success": false,
"message": "Ya hay un reporte en espera de respuesta."
}
No abras otro reporte si ya existe uno en espera. Usa evidencia cuando ayude a validar el caso y evita enviar datos sensibles que no sean necesarios.
Multimedia
| Ruta | Uso |
|---|---|
GET /gen_hys/<familia>/catalog | Lista productos de la familia |
GET /gen_hys/<familia>/summary | Entrega resumen operativo de la familia |
POST /gen_hys/<familia>/purchase | Realiza la compra |
Request ejemplo
GET /gen_hys/pantalla/catalog
GET /gen_hys/pantalla/summary
POST /gen_hys/pantalla/purchase
| Familia | Descripcion |
|---|---|
pantalla | Pantallas de streaming |
pin | Pines y codigos |
cuenta | Cuentas completas |
music | Musica y video |
digital1 | TV digital |
lic-soft | Licencias y software |
Response ejemplo
{
"ok": true,
"data": {
"families": ["pantalla", "pin", "cuenta"]
}
}
Multimedia
/gen_hys/pantalla/catalog
Request
Sin body
Recorre data.sections[].items[]. Cada producto incluye id, nombre, precio y datos comerciales. Conserva el ID de esta familia; no mezcles IDs de otros catalogos. La disponibilidad puede cambiar antes de comprar.
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "pantalla_catalog",
"moneda": "COP",
"saldo": 50000,
"total_items": 1,
"sections": [{"id":"netflix","label":"Netflix","items":[{"id":12345,"nombre":"Netflix 1 pantalla","precio":18000}]}]
}
}
/gen_hys/pantalla/summary
Request
Sin body
data.total_items y data.sections[] con id, label y count. El conteo es de productos del catalogo, no una reserva de inventario.
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "pantalla_summary",
"saldo": 50000,
"moneda": "COP",
"total_items": 1,
"sections": [{"id":"netflix","label":"Netflix","count":1}]
}
}
Multimedia
/gen_hys/pantalla/purchase
| Campo | Obligatorio | Descripcion |
|---|---|---|
product_id | Si | Id del producto tomado del catalogo |
quantity | Segun familia | Pantalla siempre compra una unidad; cuenta requiere una cantidad positiva. |
cliente | No | Nombre o referencia de tu cliente final. No es el usuario API. |
Request ejemplo
{
"product_id": 12345,
"quantity": 1,
"cliente": "Cliente demo"
}
| Campo | Tipo | Descripcion |
|---|---|---|
data.purchase | object | Entrega: correo, contrase, perfil, pin, pantallas, fecha y url segun producto. |
data.purchase.total | number | Importe de la compra. Saldo resultante en saldo_restante. |
trace_id | string | Id tecnico para auditoria y soporte |
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "pantalla_purchase",
"purchase": {"cant":1,"correo":"[email protected]","contrase":"CLAVE_DE_EJEMPLO","perfil":"Perfil 1","pin":"","pantallas":"1","total":18000,"saldo_restante":32000}
},
"trace_id": "abc123"
}
Multimedia · ciclo de la venta
Catalogos y compras multimedia requieren confirmacion de habilitacion API por soporte antes de su uso en produccion.
product_id a la ruta de compra de la misma familia.data.purchase. Si compras varias unidades, conserva el orden de los campos recibidos como arreglos./gen_hys/dr___reg{"fecha1":"2026-09-01","fecha2":"2026-09-30"}
Solo consulta ventas del usuario autenticado. La respuesta utiliza aaData en la raiz. No uses credenciales administrativas para integrar a tus clientes.
/gen_hys/loadear{"mode":"renew","busca":""}
Resultados en aaData. Filtra por correo con busca. Consulta renovable y valor_renovacion antes de confirmar.
/gen_hys/renovaRequiere saldo y una cuenta propia renovable, entre 1 y 15 dias antes del vencimiento. Solicita confirmacion del cliente antes de enviar: descuenta saldo.
| Campo enviado | Valor de la fila de aaData |
|---|---|
| crreo | correo |
| idc | idc (no el campo id del usuario) |
| pr | perfil |
| tip | tipo |
| pantll2 | pantallas |
| vg | fecha_vence: numero de dias, no una fecha ISO |
{"crreo":"[email protected]","idc":123,"pr":"Perfil 1","tip":"netflix","pantll2":"1","vg":5}
Exito: estado=1, con vence, valor, saldo_anterior y saldo_nuevo. Para otros estados, revisa message. HTTP 200 no garantiza renovacion exitosa.
No repitas automaticamente una renovacion sin respuesta. Consulta primero la cuenta.
Multimedia
/gen_hys/report
Permite registrar un fallo sobre una venta multimedia del usuario autenticado. La venta debe existir y no debe tener un reporte abierto.
| Campo | Obligatorio | Descripcion |
|---|---|---|
correo | Si | Correo o identificador entregado en la venta |
tipo | Si | Servicio o producto vendido |
perfiles | Si | Perfil asociado a la venta |
pantallas | Si | Pantalla o paquete asociado |
mensaje | Si | Descripcion clara del problema |
evidencia_cap | No | Imagen adjunta cuando se envia como multipart/form-data |
Request JSON sin evidencia
{
"correo": "[email protected]",
"tipo": "Netflix",
"perfiles": "Perfil 1",
"pantallas": "1",
"mensaje": "El cliente indica que la cuenta no permite iniciar sesion."
}
Envia multipart/form-data y adjunta la imagen en el campo exacto evidencia_cap. Se aceptan JPG, PNG o WEBP, maximo 2 MB y hasta 4000x4000 pixeles.
Request form-data con evidencia
[email protected]
tipo=Netflix
perfiles=Perfil 1
pantallas=1
mensaje=El cliente adjunta captura del error de inicio de sesion.
[email protected]
Response exitosa
{
"ok": true,
"success": true,
"code": "REPORTED",
"message": "Fallo reportado correctamente.",
"data": {
"module": "gen_hys",
"action": "report",
"correo": "[email protected]",
"idc": "",
"evidencia": null
},
"trace_id": "abc123"
}
| Codigo | Cuando ocurre |
|---|---|
VALIDATION_ERROR | Faltan campos obligatorios |
NOT_ALLOWED | No existe venta elegible o ya fue reportada |
FILE_TOO_LARGE | La imagen supera 2 MB o esta vacia |
FILE_INVALID | El archivo recibido no es valido |
INVALID_MIME | La imagen no es JPG, PNG ni WEBP |
BAD_DIMENSIONS | La imagen no cumple las dimensiones permitidas |
REPORT_SERVER_ERROR | No fue posible registrar el reporte |
/gen_hys/report_history
Consulta los reportes creados por el usuario autenticado para mostrar casos abiertos o resueltos.
Request ejemplo
{}
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "report_history",
"count": 1,
"items": [
{
"id": 1452,
"correo": "[email protected]",
"usuario": "cliente_demo",
"tipo": "Netflix",
"perfiles": "Perfil 1",
"pantallas": "1",
"estado": "Espera",
"fecha": "2026-07-01 14:35:10",
"fechar": "2026-07-01 14:35:10"
}
]
},
"trace_id": "abc123"
}
/gen_hys/report_thread
Consulta el hilo, estado y respuesta de soporte para una venta reportada.
Request ejemplo
{
"correo": "[email protected]",
"tipo": "Netflix",
"perfiles": "Perfil 1",
"pantallas": "1"
}
Response ejemplo
{
"ok": true,
"data": {
"module": "gen_hys",
"action": "report_thread",
"count": 1,
"items": [
{
"correo": "[email protected]",
"usuario": "cliente_demo",
"agente": "soporte",
"tipo": "Netflix",
"perfiles": "Perfil 1",
"pantallas": "1",
"estado": "Resuelto",
"mensaje": "El cliente indica que la cuenta no permite iniciar sesion.",
"respuesta": "Cuenta revisada y reemplazada.",
"fecha": "2026-07-01 14:35:10",
"fechar": "2026-07-01 15:02:44",
"imagen1": "https://cdn.ejemplo.com/reportes/captura-error.png",
"imagen2": ""
}
]
},
"trace_id": "abc123"
}
Multimedia
/gen_hys/solicite/verycode
Primero solicita el codigo en la plataforma del servicio; luego consultalo aqui con el correo de tu compra. Disponible para cuentas propias compatibles y con permiso gen_hys.
CODE_OK: data.code. LINK_OK: data.link. BODY_FALLBACK: data.body_preview. Conserva los codigos como texto, no renderices el contenido como HTML y comprueba data.date.
| Campo | Obligatorio | Descripcion |
|---|---|---|
email | Si | Correo de la cuenta vendida |
tipo | Si | Proveedor o familia multimedia |
caso | Si | Caso especifico del codigo o enlace solicitado |
Request ejemplo
{
"email": "[email protected]",
"tipo": "netflix",
"caso": "ininet"
}
| Tipo | Caso | Resultado |
|---|---|---|
netflix | ininet | Codigo de inicio de sesion |
netflix | viajenet | Enlace/codigo de viaje |
netflix | hogarnet | Enlace para actualizar hogar |
netflix | resetnet | Enlace para restablecer contrasena |
disney | accdisne | Codigo de acceso Disney+ |
disney | hogar | Codigo hogar Disney+ |
amazon | amz1 | Codigo o contenido Amazon |
hbo | accmax | Codigo Max/HBO |
tools | cgptcode | Contenido/codigo ChatGPT |
canva | canvacode | Codigo o contenido Canva |
spotify | spoticode | Codigo o contenido Spotify |
universal | univer1 | Codigo o contenido Universal+ |
win | wincode | Contenido del correo Win Sports |
Codigo encontrado
{
"ok": true,
"code": "CODE_OK",
"message": "Codigo encontrado.",
"data": {
"code": "123456",
"date": "2026-07-02 10:15:40"
}
}
Enlace encontrado
{
"ok": true,
"code": "LINK_OK",
"message": "Enlace encontrado.",
"data": {
"link": "https://www.netflix.com/account/travel/verify/abc123",
"date": "2026-07-02 10:15:40"
}
}
| Codigo | Cuando ocurre |
|---|---|
MISSING_FIELDS | Falta email, tipo o caso |
EMAIL_NOT_OWNED | El correo no pertenece al usuario autenticado |
REQUEST_NOT_ALLOWED | La solicitud no esta permitida para esa venta/caso |
DOMAIN_NOT_SUPPORTED | Dominio de correo no soportado |
UNSUPPORTED_CASE | Combinacion tipo/caso no configurada |
EMAIL_NOT_FOUND | No se encontro correo con el asunto esperado |
CODE_NOT_FOUND | Se encontro el correo, pero no el codigo |
LINK_NOT_FOUND | Se encontro el correo, pero no el enlace |
IMAP_CONNECT_FAILED | No fue posible conectar al buzon |
Error ejemplo
{
"ok": false,
"code": "EMAIL_NOT_OWNED",
"message": "Este correo no esta asociado a su cuenta.",
"data": []
}
Soporte
| Codigo | Significado |
|---|---|
AUTH_API_INVALID | Token invalido o sin permisos |
VALIDATION_ERROR | Faltan datos o el formato no es valido |
NOT_FOUND | No se encontro el recurso o movimiento |
PAYMENT_PENDING | El pago aun no aparece aprobado |
PAYMENT_ALREADY_PROCESSED | El pago ya fue aplicado antes |
PROVIDER_ERROR | El proveedor rechazo o no pudo procesar la operacion |
PROVIDER_UNAVAILABLE | Proveedor no disponible |
PROVIDER_INVALID_RESPONSE | Formato no esperado desde el proveedor |
Produccion
Recursos