Portal tecnico CopDigital

Referencia API para integradores

Conecta tu sistema con CopDigital: autenticacion, pagos, multiproducto y multimedia. Ejemplos de solicitudes y respuestas para integrar desde tu servidor.

Base URL productiva Bearer API

Base productiva

1

Dominio principal de la API.

Modulos

3

Pagos, Multiproducto, Multimedia.

Scopes

2

payments y gen_hys.

Guardar

4

trace_id, reference, provider_reference, idtrans.

Empieza aqui

Tu primera integracion

1. Habilita tu acceso

Solicita acceso API y habilitacion de los servicios. Si aplica, registra la IP de tu servidor.

2. Obtiene un token

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"}'

3. Consulta antes de operar

Usa Authorization: Bearer TU_TOKEN. Consulta primero los catalogos o el historial. Las compras, recargas y transferencias no son simulaciones: pueden afectar saldo real.

4. Confirma y concilia

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.

Timeouts y reintentos

Si no recibes respuesta, consulta la operacion antes de repetirla. Si no puedes confirmar su estado, contacta a soporte con su referencia.

Errores y limites

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.

Ejemplos

Los valores son ilustrativos. Usa los montos, comisiones y limites devueltos por la API.

Paso 1

Autenticacion

Obligatorio
POST /api/auth/token
CampoObligatorioDescripcion
usuarioSiUsuario API entregado al integrador
passwordSiClave API del integrador

Request ejemplo

{
  "usuario": "cliente_demo",
  "password": "TuClaveSegura123"
}

Campos de respuesta

CampoTipoDescripcion
okbooleanResultado general de la autenticacion
data.token_typestringNormalmente Bearer
data.access_tokenstringToken para usar en el resto de llamadas
data.expires_inintegerTiempo de vigencia en segundos
data.scopesarrayModulos permitidos al cliente
Header para el resto de la integracion

Authorization: Bearer TOKEN_API_CLIENTE
Content-Type: application/json

Response ejemplo

{
  "ok": true,
  "data": {
    "token_type": "Bearer",
    "access_token": "TOKEN_API_CLIENTE",
    "expires_in": 86400,
    "scopes": ["payments", "gen_hys"]
  }
}
FlowUsoRequest minimo
revistas_convenioListar conveniosOpcional force_refresh
revistas_consultaPreconsultaidConv, phone, referencia
revistas_pagoPagar revistaidPre, valor, celular, idtrans, extraInputs
certificado_snr_listListar serviciosOpcional busqueda
certificados_productoDetalleproductId
certificados_consultaPreconsultaproductId, extraInputs
certificados_pagoPagar certificadoproductId, valor, idtrans, extraInputs
epm_compraPagar EPMvalor, celular, idtrans y datos del formulario

Base comun

Convenciones que debes guardar

Variable Que es Que hacer
trace_idId tecnico de la ejecucionGuardarlo en logs y soporte
referenceReferencia CopDigitalUsarla como identificador principal
provider_referenceReferencia del proveedorGuardarla para conciliacion y soporte
idtransId de venta del integradorNo reutilizarlo
flowOperacion exacta del endpointEnviar el valor correcto del flujo
inputsFormulario dinamicoRenderizarlo como llega
extraInputsValores del formulario dinamicoReenviar las mismas llaves

Pagos

PSE

POST /v2/nq/apipes
CampoObligatorioDescripcion
valorSiMonto en COP
documentNoDocumento del pagador
mailNoCorreo del pagador
nameNoNombre del pagador
secondNameNoApellido del pagador
phoneNoCelular del pagador

Request generar

{
  "valor": 25000,
  "document": "123456789",
  "mail": "[email protected]",
  "name": "Carlos",
  "secondName": "Perez",
  "phone": "3001234567"
}

Campos de respuesta

CampoTipoDescripcion
data.providerstringIdentificador del medio de pago
data.linkstringURL externa para completar el pago
data.referencestringReferencia CopDigital para consultar despues
data.provider_referencestringReferencia interna del proveedor
data.return_modestringModo de salida del flujo de pago
Retorno para integradores

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.

Verificacion recomendada

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

QR COP y QR Bre-B

QR COP

POST /v2/nq/apicop
Solicitud

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

{}
Respuesta principal

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."
}

QR Bre-B

POST /v2/breb/generate/qr
CampoObligatorioDescripcion
valorSiMonto a recaudar en COP

Request generar

{
  "valor": 25000
}
Respuesta principal

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"
  }
}

Verificar QR COP

POST /v2/nq/verify_qr
CampoObligatorioDescripcion
sidSiReferencia 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."
  }
}

Verificar QR Bre-B

POST /v2/breb/verify_qr
CampoObligatorioDescripcion
sidSiReferencia 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

Binance

POST /v2/bn/consulta/exchange
CampoObligatorioDescripcion
valorSiMonto en USDT que pagara el cliente

Request cotizacion

{
  "valor": 5.3
}
Campos clave de cotizacion

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
  }
}
POST /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"
  }
}
POST /v2/bn/ver_pay
CampoObligatorioDescripcion
dataSiPrepay id recibido en la generacion del cobro

Request verificar

{
  "data": "PREPAY_ID_BINANCE"
}
Campos de verificacion

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

Prix

POST /v2/prix/generate/link
CampoObligatorioDescripcion
valorSiMonto en COP. Minimo 20000
return_urlNoURL de retorno para integrador
logoBase64NoLogo personalizado en Base64. JPG, PNG o WEBP. Maximo 1MB

Request generar

{
  "valor": 25000,
  "return_url": "https://tu-app.com/pagos/resultado",
  "logoBase64": "iVBORw0KGgoAAAANSUhEUgAAA..."
}
Respuesta principal

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"
  }
}
POST /gen_hys/prix_status
Verificar un pago Prix

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.

CampoObligatorioDescripcion
referenceSiReferencia CopDigital devuelta en la generacion

Request estado

{
  "reference": "1779040898962525"
}
Campos de estado

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

Supra

POST /v2/spr/consulta/exchange
CampoObligatorioDescripcion
valorSiMonto en la moneda seleccionada a recaudar
moneySiMoneda enviada desde el front para Supra: MXN, CLP o BRL

Request cotizacion

{
  "valor": 100,
  "money": "MXN"
}
Cotizacion

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
  }
}
POST /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"
  }
}
POST /v2/spr/verify/pay
CampoObligatorioDescripcion
idverSiIdentificador del pago Supra

Request verificar

{
  "idver": "ID_PAGO_SUPRA"
}
Campos de verificacion

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

Efipay

POST /v2/rbill/consulta/exchange
CampoObligatorioDescripcion
valorSiMonto en COP a recaudar

Request cotizacion

{
  "valor": 35000
}
Cotizacion

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
  }
}
POST /v2/rbill/generate/link
CampoObligatorioDescripcion
valorSiMonto en COP
return_urlNoURL de retorno del integrador
webhook_urlNoURL 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"
}
Webhook integrador

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"
  }
}
POST /v2/rbill/verify/pay
CampoObligatorioDescripcion
idverSiIdentificador del pago Efipay

Request verificar

{
  "idver": "ID_PAGO_EFIPAY"
}
Campos de verificacion

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

Verificacion unificada

POST /gen_hys/verifypay
CampoObligatorioDescripcion
TerpSiMedio de pago. Valores comunes: PSE, QR, QR_BREB, BINANCE, PRIX, SUPRA, EFIPAY
dataSiReferencia o id del pago segun el medio consultado

Request ejemplo

{
  "Terp": "QR",
  "data": "7049126"
}

Campos de respuesta

CampoTipoDescripcion
data.statusstringEstado homologado del pago
data.amountnumberMonto pagado o consultado
data.costnumberCosto total aplicado
data.creditnumberSaldo 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

Consulta de pagos por rango

POST /gen_hys/consultpay
CampoObligatorioDescripcion
fecha1SiFecha inicial en formato YYYY-MM-DD
fecha2SiFecha final en formato YYYY-MM-DD
TerpSiMedio a consultar: PSE, QR, BINANCE, PRIX, SUPRA, EFIPAY

Request ejemplo

{
  "fecha1": "2026-05-01",
  "fecha2": "2026-05-19",
  "Terp": "PSE"
}

Respuesta

CampoTipoDescripcion
data.rowsarrayListado de pagos encontrados en el rango
rows[].referencestringReferencia CopDigital del pago
rows[].statusstringEstado del pago
rows[].amountnumberMonto asociado al registro

Response ejemplo

{
  "ok": true,
  "data": {
    "rows": [
      {
        "reference": "1779040898962525",
        "status": "approved",
        "amount": 25000
      }
    ]
  }
}

Multiproducto

Resumen

RutaUso
POST /gen_hys/recargasOperaciones Colombia y corresponsal
POST /gen_hys/recargas-mxOperaciones Mexico
POST /gen_hys/esp/reqRecargas especiales
POST /gen_hys/list_multipListado de movimientos
POST /gen_hys/list_multip_ticketTicket por movimiento
GET /gen_hys/modules_stateModulos habilitados
GET /gen_hys/dashboard_stateEstado del dashboard
POST /gen_hys/list_multip

Movimientos

CampoObligatorioDescripcion
fecha1SiFecha inicial en formato YYYY-MM-DD
fecha2SiFecha 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"
}
POST /gen_hys/list_multip_ticket

Ticket por movimiento

CampoObligatorioDescripcion
idSiId 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

Recargas

POST /gen_hys/recargas

Recarga Colombia

Flujo

1. Selecciona proveedor con opc. 2. Usa el codigo de operador de recarga. 3. Envia numero, monto e idtrans.

CampoObligatorioDescripcion
flowSiValor fijo recarga
opcSi1 proveedor 1, 2 proveedor 2
operadorSiCodigo del operador movil a recargar
celularSiNumero a recargar
valorSiMonto en COP
idtransSiId unico de la venta del integrador
originCashNoOrigen del saldo. Normalmente 0

Codigos de operador para recargas Colombia

OperadorCodigo
Clarocl
Movistarmo
Tigoti
ETBet
Virginvi
Exitoex
Buenofonbf
WOMwm
Flash Mobilefm
DirecTVdi

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
}
Respuesta principal

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"
}
POST /gen_hys/recargas-mx

Recarga Mexico

Flujo

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.

CampoObligatorioDescripcion
flowSiValor fijo recarga
carrierSiId del offer MX obtenido desde catalog_tae o catalog_tae_virtual
telefonoSiNumero destino de 10 digitos
typeSi0 TAE normal, 1 TAE virtual
walletTypeNoBL saldo MX o GL ganancias MX. Si no se envía usa BL
idtransSiId 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"
}
Respuesta principal

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"
}
Otros flujos MX

catalog_tae y catalog_tae_virtual listan recargas. services_list, peajes_list y pines_list listan catálogo adicional para pagos, peajes y pines.

FlowUsoRequest minimoResponse minimo
services_listLista servicios MXSin campos obligatoriosdata.rows[].sku, data.rows[].name, data.rows[].amount
services_payPaga servicio MXsku, referencia, monto, telefono, idtransdata.provider.idtrans, message
pines_listLista pines MXSin campos obligatoriosdata.rows[].sku, data.rows[].name, data.rows[].amount
pines_payCompra pin MXidPin, telefono, idtransdata.provider.idtrans, message, codePin
peajes_listLista peajes MXSin campos obligatoriosdata.rows[].idPeaje, data.rows[].name
peajes_payCompra peaje MXidPeaje, referencia, telefono, monto, idtransdata.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

Paquetes

Flujo de integracion

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.

POST /gen_hys/recargas

Listar paquetes

CampoObligatorioDescripcion
flowSiValor fijo paquetes_list
operadorSiCodigo del operador a consultar

Codigos de operador Colombia

OperadorCodigo
Claropc
Movistarpm
Tigopi
ETBep
Virginvp
Exitope
Buenofonbp
WOMpw

Codigos de operador Venezuela

OperadorCodigo
Digiteldtvn
Movistar VEmovn
Movilnetmvn
SimpleTVstv

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"
}
POST /gen_hys/recargas

Comprar paquete

CampoObligatorioDescripcion
flowSipaquete para Colombia o venpaquete para Venezuela
operadorSiCodigo del operador de paquetes
paqueteSiId del paquete elegido desde rows[].practi_code o catálogo equivalente
celularSiNumero destino
idtransSiId 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"
}
Respuesta principal

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

Pines

Proveedor 1

POST /gen_hys/recargas

Consulta por operador. En la compra, paquete debe ser el practi_code devuelto por el catalogo.

FlowUsoCampos clave
pines_listListar catalogooperador
pinesComprar pincelular, operador, paquete, idtrans

Codigos de operador

CodigoProductoGanancia
nxNetflixPorcentaje
amzAmazonPorcentaje
vxVixPorcentaje
dgDirecTV GOPorcentaje
wsWin SportsPorcentaje

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"
}
Respuesta esperada

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"
}

Proveedor 2

POST /gen_hys/recargas

Consulta la lista, valida el detalle del producto y envia los campos solicitados en extraInputs.

FlowUsoCampos clave
pines_prove2_listListar catalogoSin parametros adicionales
pines_prove2_productoConsultar detalleproductId
pines_prove2_pagoComprar pinproductId, idtrans, extraInputs

Codigos de ganancia por producto

CodigoProducto detectadoGanancia
nxbNetflixPorcentaje
mcbMcAfeePorcentaje
dzbDeezerPorcentaje
xbbXboxPorcentaje
ptbPlayStationPorcentaje
wifbWifi PremiumPorcentaje
wsbWin SportsPorcentaje
dibDirecTVPorcentaje
dgbDirecTV GOPorcentaje
rabRazer GoldPorcentaje
ofbMicrosoft OfficePorcentaje
ffbFree FirePorcentaje
iubIMVUPorcentaje
kabKasperskyPorcentaje
robRobloxPorcentaje
esabEnergia ESSAFijo
embbEnergia EPMFijo
ecebEnergia CENSFijo
midbMidatacreditoFijo

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"
}
Respuesta principal

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

EnlaceDisney

Catalogo + compra
Flujo recomendado

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.

GET /enlace-disney/products

Consultar catalogo

Devuelve los productos activos para vender. El precio viene en COP y debe usarse para mostrar el valor antes de confirmar la compra.

HeaderObligatorioDescripcion
AuthorizationSiBearer TOKEN_API_CLIENTE
Content-TypeSiapplication/json

Request ejemplo

GET /enlace-disney/products
Authorization: Bearer TOKEN_API_CLIENTE
Content-Type: application/json

Campos de respuesta

CampoTipoDescripcion
data.products[].idintegerIdentificador que se envia como productId al comprar
data.products[].namestringNombre comercial del producto
data.products[].descriptionstringDescripcion corta del producto
data.products[].pricenumberValor de venta en COP
data.countintegerCantidad de productos disponibles
trace_idstringId 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"
}
POST /enlace-disney/buy

Comprar producto

La compra descuenta el saldo del integrador, registra la venta multiproducto y devuelve el enlace de activacion cuando la operacion es exitosa.

CampoObligatorioDescripcion
data.referenceNoReferencia numerica unica del integrador, de 6 a 16 digitos. Si no se envia, CopDigital genera una.
data.customerNameSiNombre completo del cliente final
data.emailSiCorreo del cliente final donde se asociara la compra
data.productIdSiId del producto tomado desde /enlace-disney/products

Request ejemplo

{
  "data": {
    "reference": "1781065879040292",
    "customerName": "Pedro Marin",
    "email": "[email protected]",
    "productId": 2
  }
}

Campos de respuesta

CampoTipoDescripcion
data.resultstringResultado de la compra. Para exito devuelve success
data.referencestringReferencia usada para la venta
data.provider_idstringId de entrega generado para la compra
data.linkstringEnlace de activacion para entregar al cliente
data.activation_urlstringMismo enlace de activacion, disponible como alias
data.productobjectProducto vendido: id, nombre, descripcion y precio
data.customerobjectNombre y correo enviados en la compra
data.ganancianumberGanancia calculada para la venta
data.saldo_actualnumberSaldo disponible despues de la compra
trace_idstringId 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"
}
POST /enlace-disney/status

Consultar estado

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.

CampoObligatorioDescripcion
data.referenceSiReferencia enviada en la compra
data.idNoId 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"
}

Cuándo consultar estado

Tu sistema envio la compra pero no recibio respuesta por timeout.
El cliente cerro la pantalla antes de confirmar la respuesta.
Hubo corte de internet durante la compra.
Tienes la reference, pero no tienes el enlace de activacion.
Importante

La consulta puede hacerse solo con reference. Si tambien tienes provider_id, puedes enviarlo en id.

Errores comunes

CodigoCuando ocurreAccion recomendada
VALIDATION_ERRORFalta productId, customerName, email o la referencia no cumple formatoCorregir el request y reenviar con una referencia unica
PRODUCT_NOT_FOUNDEl producto ya no esta disponibleActualizar catalogo y permitir seleccionar otro producto
DUPLICATE_TRANSACTIONLa referencia ya fue usadaNo reutilizar reference; consultar el movimiento antes de reintentar
INSUFFICIENT_BALANCESaldo insuficiente para cubrir el precioRecargar saldo antes de comprar
PROVIDER_UNAVAILABLENo fue posible completar la compraEl saldo se reintegra; reintentar mas tarde o contactar soporte con trace_id

Buenas practicas

Genera una reference numerica unica por intento de compra.
No reutilices referencias aprobadas.
Entrega al cliente el valor de link o activation_url.
Guarda provider_id, movement_id y trace_id.
Usa /enlace-disney/status antes de repetir una compra con la misma referencia.
Actualiza el catalogo si recibes PRODUCT_NOT_FOUND.
Si hay error temporal, valida primero tu historial antes de crear una referencia nueva.

Multiproducto

Crear servicio

Flujo recomendado

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.

POST /gen_hys/create_service/pines/list

Paso 1: consultar catalogo

CampoObligatorioDescripcion
operadorSiCodigo del servicio. Ejemplos: nx, disn, amz, nup, plx, jlf, emb, vx, dg, ws.
paisSiCOLOMBIA, MEXICO o INTERNACIONAL
reqtSiCrear o Renovar
formatNoUsa json para recibir respuesta estructurada. Si no se envia, se mantiene HTML legacy.

Request catalogo

{
  "operador": "nx",
  "pais": "COLOMBIA",
  "reqt": "Crear",
  "format": "json"
}
Respuesta del catalogo

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>
POST /gen_hys/create_service/create

Paso 2: registrar solicitud

CampoObligatorioDescripcion
emailSiCorreo o usuario de la cuenta sobre la que se solicita el servicio.
claveSiClave asociada al servicio. En renovacion, envia la clave actual cuando el servicio la requiera.
paisSiMismo pais usado al consultar el catalogo.
reqSiCrear o Renovar
operadorSiMismo codigo usado al consultar el catalogo.
paqueteSiID del paquete retornado por el catalogo.
descriptSiNombre del servicio seleccionado. Debe corresponder al operador.
additionNoInformacion 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"
}

Codigos de operador

CodigoServiciodescript para crearNotas
nxNetflixServicio NetflixColombia, Mexico e internacional segun catalogo
disnDisneyDisney 30 diasSolo Colombia
amzAmazonAmazon 30 diasEn Mexico solo renovar
nupNuplinServicio NuplinSolo crear desde esta ruta
plxPlexServicio PlexSolo crear desde esta ruta
jlfJellyfinServicio JellyfinSolo crear desde esta ruta
embEmbyServicio EmbySolo crear desde esta ruta
vxVixServicio VixCrear o renovar segun catalogo
dgDirecTV GOServicio DirectvGoPuede requerir datos adicionales
wsWin SportsServicio WinSportPuede requerir datos adicionales

Reglas importantes

TemaRegla
CatalogoConsulta siempre el catalogo antes de registrar la solicitud. No armes el paquete manualmente.
CoherenciaUsa el mismo operador, pais y tipo de solicitud en ambos pasos.
DisneySolo Colombia. El correo debe usar un dominio de correo reconocido.
Amazon MexicoSolo permite Renovar.
Plex, Jellyfin y EmbySolo Crear. La clave debe tener mayuscula, minuscula, numero, simbolo y minimo 10 caracteres.
SaldoLa plataforma descuenta el valor cuando la solicitud queda registrada.
SeguimientoGuarda la referencia devuelta por la API y el correo usado en la solicitud para soporte.
Estadoestado: "00" indica solicitud registrada; no significa entrega inmediata del servicio.
POST /gen_hys/report_plx/{servicio}

Reportar servicio especial

Permite reportar fallos de servicios especiales compatibles. El reporte queda asociado al usuario autenticado y a la cuenta entregada.

Valor URLServicio
plexPlex
jellyfinJellyfin
embyEmby
CampoObligatorioDescripcion
busplxSiCorreo o usuario de la cuenta entregada.
textoplxSiDescripcion clara del fallo reportado.
evid_capNoImagen 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!"
}

Errores de reporte especial

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."
}
Reglas

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

Resumen

Patron comun

RutaUso
GET /gen_hys/<familia>/catalogLista productos de la familia
GET /gen_hys/<familia>/summaryEntrega resumen operativo de la familia
POST /gen_hys/<familia>/purchaseRealiza la compra

Request ejemplo

GET /gen_hys/pantalla/catalog
GET /gen_hys/pantalla/summary
POST /gen_hys/pantalla/purchase

Familias activas

FamiliaDescripcion
pantallaPantallas de streaming
pinPines y codigos
cuentaCuentas completas
musicMusica y video
digital1TV digital
lic-softLicencias y software

Response ejemplo

{
  "ok": true,
  "data": {
    "families": ["pantalla", "pin", "cuenta"]
  }
}

Multimedia

Catalogo

GET /gen_hys/pantalla/catalog

Request

Sin body
Que devuelve

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}]}]
  }
}
GET /gen_hys/pantalla/summary

Request

Sin body
Que devuelve

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

Compra

POST /gen_hys/pantalla/purchase
CampoObligatorioDescripcion
product_idSiId del producto tomado del catalogo
quantitySegun familiaPantalla siempre compra una unidad; cuenta requiere una cantidad positiva.
clienteNoNombre o referencia de tu cliente final. No es el usuario API.

Request ejemplo

{
  "product_id": 12345,
  "quantity": 1,
  "cliente": "Cliente demo"
}

Campos de respuesta

CampoTipoDescripcion
data.purchaseobjectEntrega: correo, contrase, perfil, pin, pantallas, fecha y url segun producto.
data.purchase.totalnumberImporte de la compra. Saldo resultante en saldo_restante.
trace_idstringId 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

Ventas y renovaciones

De catalogo a entrega

Disponibilidad

Catalogos y compras multimedia requieren confirmacion de habilitacion API por soporte antes de su uso en produccion.

  1. Consulta el catalogo de cuentas o pantallas.
  2. Envia el ID elegido como product_id a la ruta de compra de la misma familia.
  3. Lee la entrega en data.purchase. Si compras varias unidades, conserva el orden de los campos recibidos como arreglos.
  4. Consulta tus ventas antes de repetir una compra sin respuesta.

Historial por fechas

POST/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.

Buscar cuentas para renovar

POST/gen_hys/loadear
{"mode":"renew","busca":""}

Resultados en aaData. Filtra por correo con busca. Consulta renovable y valor_renovacion antes de confirmar.

Confirmar una renovacion

POST/gen_hys/renova

Requiere saldo y una cuenta propia renovable, entre 1 y 15 dias antes del vencimiento. Solicita confirmacion del cliente antes de enviar: descuenta saldo.

Campo enviadoValor de la fila de aaData
crreocorreo
idcidc (no el campo id del usuario)
prperfil
tiptipo
pantll2pantallas
vgfecha_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.

Reintentos

No repitas automaticamente una renovacion sin respuesta. Consulta primero la cuenta.

Multimedia

Reporte de fallos

POST /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.

CampoObligatorioDescripcion
correoSiCorreo o identificador entregado en la venta
tipoSiServicio o producto vendido
perfilesSiPerfil asociado a la venta
pantallasSiPantalla o paquete asociado
mensajeSiDescripcion clara del problema
evidencia_capNoImagen 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."
}
Con evidencia

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 y errores

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"
}
CodigoCuando ocurre
VALIDATION_ERRORFaltan campos obligatorios
NOT_ALLOWEDNo existe venta elegible o ya fue reportada
FILE_TOO_LARGELa imagen supera 2 MB o esta vacia
FILE_INVALIDEl archivo recibido no es valido
INVALID_MIMELa imagen no es JPG, PNG ni WEBP
BAD_DIMENSIONSLa imagen no cumple las dimensiones permitidas
REPORT_SERVER_ERRORNo fue posible registrar el reporte
POST /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"
}
POST /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

Solicitar codigo

POST /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.

Resultado

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.

CampoObligatorioDescripcion
emailSiCorreo de la cuenta vendida
tipoSiProveedor o familia multimedia
casoSiCaso especifico del codigo o enlace solicitado

Request ejemplo

{
  "email": "[email protected]",
  "tipo": "netflix",
  "caso": "ininet"
}

Casos comunes

TipoCasoResultado
netflixininetCodigo de inicio de sesion
netflixviajenetEnlace/codigo de viaje
netflixhogarnetEnlace para actualizar hogar
netflixresetnetEnlace para restablecer contrasena
disneyaccdisneCodigo de acceso Disney+
disneyhogarCodigo hogar Disney+
amazonamz1Codigo o contenido Amazon
hboaccmaxCodigo Max/HBO
toolscgptcodeContenido/codigo ChatGPT
canvacanvacodeCodigo o contenido Canva
spotifyspoticodeCodigo o contenido Spotify
universaluniver1Codigo o contenido Universal+
winwincodeContenido del correo Win Sports

Responses ejemplo

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"
  }
}

Errores frecuentes

CodigoCuando ocurre
MISSING_FIELDSFalta email, tipo o caso
EMAIL_NOT_OWNEDEl correo no pertenece al usuario autenticado
REQUEST_NOT_ALLOWEDLa solicitud no esta permitida para esa venta/caso
DOMAIN_NOT_SUPPORTEDDominio de correo no soportado
UNSUPPORTED_CASECombinacion tipo/caso no configurada
EMAIL_NOT_FOUNDNo se encontro correo con el asunto esperado
CODE_NOT_FOUNDSe encontro el correo, pero no el codigo
LINK_NOT_FOUNDSe encontro el correo, pero no el enlace
IMAP_CONNECT_FAILEDNo fue posible conectar al buzon

Error ejemplo

{
  "ok": false,
  "code": "EMAIL_NOT_OWNED",
  "message": "Este correo no esta asociado a su cuenta.",
  "data": []
}

Soporte

Errores frecuentes

CodigoSignificado
AUTH_API_INVALIDToken invalido o sin permisos
VALIDATION_ERRORFaltan datos o el formato no es valido
NOT_FOUNDNo se encontro el recurso o movimiento
PAYMENT_PENDINGEl pago aun no aparece aprobado
PAYMENT_ALREADY_PROCESSEDEl pago ya fue aplicado antes
PROVIDER_ERROREl proveedor rechazo o no pudo procesar la operacion
PROVIDER_UNAVAILABLEProveedor no disponible
PROVIDER_INVALID_RESPONSEFormato no esperado desde el proveedor

Produccion

Checklist final

Token API funcionando
Scope correcto habilitado
Modulos o medios habilitados
URLs de retorno autorizadas
Guardado de trace_id
Persistencia de reference y provider_reference
Reintentos de verificacion controlados
Casos de error probados

Recursos

Descargas y guias complementarias