Operadora Occidente C.A. • RIF J-503047259
Operadora Occidente
OPERADORA OCCIDENTE PI-Ganemos API
Entorno de Integración & Desarrollo (Sandbox / DEV)

Esta documentación pública expone los endpoints oficiales de prueba (ganemosdev.operadoraoccidente.net). Los endpoints de Producción Definitivos, el alta de IPs productivas y las credenciales reales se suministran de manera privada por correo institucional una vez certificada la integración técnica.

Ambiente: DEV
Integración Server-to-Server (S2S) Ultra Rápida (<450ms)

API Oficial de Comercializadoras PI-Ganemos

Conexión directa en tiempo real con los 3 motores oficiales y exclusivos de Operadora Occidente, C.A: La Foca Millonaria, El Zoológico Millonario y Triple de Oro. Diseñada para puntos de venta POS, quioscos y comercializadoras externas con garantía de idempotencia nativa.

Auth: X-API-Key
Cierre: 3 min antes
Idempotencia: Por serial de taquilla
Base Endpoint Oficial (DEV / Sandbox): https://ganemosdev.operadoraoccidente.net/api/v1/external

Los 3 Únicos Productos Oficiales de Operadora Occidente

Fichas técnicas y reglas de negocio inmutables registradas en base de datos para todas las comercializadoras:

La Foca Millonaria
foca_millonaria ID 4

La Foca Millonaria

Catálogo oficial de 77 figuras (0, 00, 01..74 a 60x y la figura estelar 75 (La Foca) a 120x).

12 Sorteos Diarios:
09:30 AM, 10:30 AM, 11:30 AM, 12:30 PM, 01:30 PM, 03:30 PM, 04:30 PM, 05:30 PM, 06:30 PM, 07:30 PM, 08:30 PM, 09:30 PM
Acumulado del Capitán (type 3): 4 figuras seleccionadas. Cierra diariamente a las 06:30 PM y se liquida en el sorteo de las 09:30 PM.
El Zoológico Millonario
zoologico_millonario ID 2

El Zoológico Millonario

Catálogo oficial de 38 figuras (01 Carnero al 38 Conejo a 30x).

10 Sorteos Diarios:
09:00 AM, 10:00 AM, 11:00 AM, 12:00 PM, 01:00 PM, 04:00 PM, 05:00 PM, 06:00 PM, 07:00 PM, 08:00 PM
Receso programado entre la 01:00 PM y las 04:00 PM.
Triple de Oro
triple_oro ID 1

Triple de Oro

Modalidades: Triples (600x), Terminales (60x) y Signos Zodiacales / Tripletas (6000x) (12 signos: 01 Aries a 12 Piscis).

3 Sorteos Diarios:
01:15 PM, 04:15 PM, 09:15 PM
Integración directa por número de triple o con signo zodiacal.

123 Flujo de Integración: Paso A, B, C y ¡Listo!

Cualquier comercializadora puede salir a producción completando únicamente estos 3 pasos:

GET

/api/v1/external/games

Paso A: Obtener el catálogo dinámico de los 3 productos oficiales en DEV / Sandbox.

Petición cURL (Ambiente DEV)

curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/games" \

  -H "X-API-Key: SU_API_KEY_DEV" \

  -H "Accept: application/json"
Catálogo Opcional con Imágenes WebP:

Por defecto la consulta responde en modo ultra-liviano (< 2.7 KB). Si su aplicación o POS requiere descargar el catálogo completo de figuras y URLs de imágenes WebP optimizadas en CDN, pase el parámetro opcional ?include_figures=1:

curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/games?include_figures=1" \
  -H "X-API-Key: SU_API_KEY_DEV" \
  -H "Accept: application/json"

Respuesta Oficial (HTTP 200 OK - Formato Limpio con WebP Opcional)

{

  "status": "SUCCESS",

  "code": 200,

  "message": "Catálogo oficial de productos exclusivos de Ganemos Operadora Occidente cargado desde base de datos.",

  "data": [

    {

      "code": "la_foca_millonaria",

      "alias_code": "foca_millonaria",

      "name": "La Foca Millonaria",

      "program": "PI-Ganemos",

      "catalog_size": 77,

      "figures_range": "00, 0, 01 al 75 (77 figuras exactas)",

      "base_multiplier": 60,

      "figure_multiplier": 120,

      "cutoff_minutes_before": 3,

      "draw_schedule": [

        "09:30 AM", "10:30 AM", "11:30 AM", "12:30 PM",

        "01:30 PM", "03:30 PM", "04:30 PM", "05:30 PM",

        "06:30 PM", "07:30 PM", "08:30 PM", "09:30 PM"

      ],

      "figures": [

        { "number": "00", "name": "Ballena", "multiplier": 60, "image_url": "https://gan-img-produc.ganemos.net/images/animals/foca/00.webp" },

        { "number": "0",  "name": "Delfín",  "multiplier": 60, "image_url": "https://gan-img-produc.ganemos.net/images/animals/foca/0.webp" },

        { "number": "01", "name": "Carnero", "multiplier": 60, "image_url": "https://gan-img-produc.ganemos.net/images/animals/foca/01.webp" },

        "...",

        { "number": "75", "name": "La Foca", "multiplier": 120, "image_url": "https://gan-img-produc.ganemos.net/images/animals/foca/75.webp" }

      ]

    },

    {

      "code": "zoologico_millonario",

      "name": "El Zoológico Millonario",

      "program": "PI-Ganemos",

      "catalog_size": 38,

      "figures_range": "01 al 38 (38 figuras oficiales: 01 Carnero al 38 Conejo)",

      "base_multiplier": 30,

      "cutoff_minutes_before": 3,

      "draw_schedule": [

        "09:00 AM", "10:00 AM", "11:00 AM", "12:00 PM",

        "01:00 PM", "04:00 PM", "05:00 PM", "06:00 PM",

        "07:00 PM", "08:00 PM"

      ],

      "figures": [

        { "number": "01", "name": "Carnero", "multiplier": 30, "image_url": "https://gan-img-produc.ganemos.net/images/animals/zoologico/01.webp" },

        { "number": "02", "name": "Toro",    "multiplier": 30, "image_url": "https://gan-img-produc.ganemos.net/images/animals/zoologico/02.webp" },

        "...",

        { "number": "38", "name": "Conejo",  "multiplier": 30, "image_url": "https://gan-img-produc.ganemos.net/images/animals/zoologico/38.webp" }

      ]

    },

    {

      "code": "triple_oro",

      "name": "Triple de Oro",

      "program": "PI-Ganemos",

      "base_multiplier": 600,

      "terminal_multiplier": 60,

      "figure_multiplier": 6000,

      "cutoff_minutes_before": 3,

      "draw_schedule": [

        "01:15 PM", "04:15 PM", "09:15 PM"

      ],

      "zodiac_signs": [

        { "number": "01", "name": "Aries", "multiplier": 6000 },

        "...",

        { "number": "12", "name": "Piscis", "multiplier": 6000 }

      ]

    }

  ]

}
POST

/api/v1/external/tickets

Paso B: Emisión de apuestas en tiempo real con retorno de seriales y PIN.

Payload Enviado (DEV)

curl -X POST "https://ganemosdev.operadoraoccidente.net/api/v1/external/tickets" \

  -H "X-API-Key: SU_API_KEY_DEV" \

  -H "Content-Type: application/json" \

  -H "Accept: application/json" \

  -d '{

    "game_code": "foca_millonaria",

    "draw_time": "08:30 PM",

    "serial": "PIG-10293",

    "currency": "VES",

    "bets": [

      {

        "number": "75",

        "amount": 50.00

      }

    ]

  }'
Garantía de Idempotencia: Si envías "serial": "PIG-10293" y hay una reconexión, puedes reenviar la petición con total confianza: PI-Ganemos devuelve el ticket existente sin descontar saldo dos veces.

Respuesta Oficial (HTTP 200 OK)

{

  "status": "SUCCESS",

  "code": 200,

  "message": "Ticket procesado y registrado exitosamente en PI-Ganemos.",

  "data": {

    "ticket_number": "FOCA-10293",

    "external_reference": "PIG-10293",

    "pin": "9546",

    "barcode": "88102939546",

    "game_code": "foca_millonaria",

    "game_name": "La Foca Millonaria",

    "draw_time": "08:30 PM",

    "currency": "VES",

    "total_amount": 50,

    "potential_payout": 6000,

    "plays_count": 1,

    "status": "ACTIVE",

    "timestamp": "2026-10-01 20:05:42"

  }

}

¿Cómo emitir el Acumulado del Capitán (type 3)?

El acumulado juega con 4 animales distintos. Cierra diariamente a las 06:30 PM y no necesita draw_time si va solo porque juega automáticamente para el último sorteo de las 09:30 PM:

{

  "game_code": "foca_millonaria",

  "serial": "POS-ACUM-001",

  "currency": "VES",

  "bets": [

    {

      "type": 3,

      "numbers": ["05", "12", "33", "40"],

      "number": "90",

      "amount": 800.00

    }

  ]

}
POST

/api/v1/external/tickets/cancel

Paso C: Anulación del ticket antes del inicio del sorteo.

Petición de Anulación (cURL)

curl -X POST "https://ganemosdev.operadoraoccidente.net/api/v1/external/tickets/cancel" \

  -H "X-API-Key: SU_API_KEY_DEV" \

  -H "Content-Type: application/json" \

  -H "Accept: application/json" \

  -d '{

    "serial": "PIG-10293",

    "reason": "Cliente solicitó anulación antes de cierre de sorteo"

  }'

Respuesta (HTTP 200 OK)

{

  "success": true,

  "status": "SUCCESS",

  "code": 200,

  "message": "Ticket anulado exitosamente.",

  "data": {

    "ticket_number": "PIG-10293",

    "status": "CANCELLED",

    "refunded_amount": 50,

    "cancelled_at": "2026-10-01 20:05:51"

  }

}
D

Consulta de Resultados Oficiales GET /api/v1/external/results

Consulta en tiempo real de los números, figuras y multiplicadores ganadores por sorteo y fecha.

Petición cURL (Filtrar por Juego o Fecha)

# Consultar todos los resultados del día
curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/results?date=2026-10-02" \
  -H "X-API-Key: SU_API_KEY_DEV" \
  -H "Accept: application/json"

# Consultar resultados específicos de La Foca Millonaria
curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/results?game_code=la_foca_millonaria&date=2026-10-02" \
  -H "X-API-Key: SU_API_KEY_DEV" \
  -H "Accept: application/json"
Parámetros Opcionales: date (YYYY-MM-DD, default hoy), game_code (la_foca_millonaria, zoologico_millonario, triple_oro) y draw_time.

Respuesta Oficial (HTTP 200 OK)

{
  "success": true,
  "code": 200,
  "message": "Resultados consultados exitosamente.",
  "data": {
    "game_code": "la_foca_millonaria",
    "date": "2026-10-02",
    "draws": [
      {
        "lottery_id": 4,
        "draw_name": "1",
        "draw_time": "09:30 AM",
        "date": "2026-10-02",
        "status": "RESULTED",
        "number": "17",
        "animal": "Pavo",
        "payout_multiplier": 60,
        "comodin": false
      },
      {
        "lottery_id": 4,
        "draw_name": "3",
        "draw_time": "11:30 AM",
        "date": "2026-10-02",
        "status": "RESULTED",
        "number": "75",
        "animal": "La Foca",
        "payout_multiplier": 120,
        "comodin": true
      }
    ]
  }
}
E

Consulta de Límites, Cupos y Restricciones GET /api/v1/external/limits

Consulta dinámica de montos mínimos/máximos de jugada, cupos disponibles por figura/sorteo y reglas de protección anti-cobertura.

Petición cURL (Ambiente DEV)

# Consultar límites generales y por producto en VES
curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/limits?currency=VES" \
  -H "X-API-Key: SU_API_KEY_DEV" \
  -H "Accept: application/json"

# Consultar cupo específico para una figura y sorteo
curl -X GET "https://ganemosdev.operadoraoccidente.net/api/v1/external/limits?game_code=la_foca_millonaria&draw_time=08:30%20PM&number=75¤cy=VES" \
  -H "X-API-Key: SU_API_KEY_DEV" \
  -H "Accept: application/json"
Protección Anti-Cobertura Masiva (Por Ticket): Se permite comercializar todo el catálogo a diferentes clientes, pero un único ticket no puede abarcar más del 47.3% del tablero (máx 35 figuras en La Foca / máx 18 en Zoológico / máx 20 terminales en Triple de Oro) para preservar el margen de comisiones.

Respuesta Oficial (HTTP 200 OK)

{
  "status": "SUCCESS",
  "code": 200,
  "message": "Límites oficiales de juego y cupos por sorteo consultados exitosamente.",
  "currency": "VES",
  "currency_sign": "BS",
  "general_limits": {
    "jugada_minima": 5.00,
    "jugada_maxima": 10000.00,
    "cupo_figura_sorteo_default": 25000.00,
    "max_payout_per_ticket": 500000.00,
    "max_payout_per_draw": 2500000.00
  },
  "games": {
    "zoologico_millonario": {
      "game_name": "El Zoológico Millonario",
      "payout_multiplier": 30,
      "jugada_minima": 5.00,
      "jugada_maxima": 5000.00,
      "cupo_figura_sorteo": 25000.00,
      "max_figuras_correlacionadas_por_sorteo": 18
    },
    "la_foca_millonaria": {
      "game_name": "La Foca Millonaria",
      "payout_multiplier_standard": 60,
      "payout_multiplier_comodin": 120,
      "jugada_minima": 5.00,
      "jugada_maxima": 5000.00,
      "cupo_figura_sorteo": 25000.00,
      "cupo_comodin_75_sorteo": 12500.00,
      "max_figuras_correlacionadas_por_sorteo": 35
    },
    "triple_oro_a": {
      "game_name": "Triple de Oro - Letra A",
      "modes": {
        "triple": { "payout": 600, "jugada_minima": 5.00, "cupo_figura_sorteo": 5000.00 },
        "terminal": { "payout": 60, "jugada_minima": 5.00, "cupo_figura_sorteo": 25000.00 }
      }
    }
  }
}

Códigos de Error Oficiales

Deslizar tabla horizontalmente

Respuestas estandarizadas para el manejo de excepciones, cupos y límites en taquilla y POS:

Código de Error HTTP Causa / Condición Acción en Taquilla / POS
INSUFFICIENT_CREDIT 422 Saldo o cupo de crédito insuficiente para el agente comercializador (aplica únicamente cuando la entidad opera en modalidad Prepago con cupo estricto). Contactar a Operadora Occidente para ampliar el cupo de crédito o verificar la modalidad Postpago en la administración de agentes.
QUOTA_EXCEEDED 422 Cupo disponible agotado para la figura/número en el sorteo solicitado. La respuesta detalla el cupo restante disponible. Ajustar el importe de la jugada al cupo disponible o seleccionar el siguiente sorteo.
CORRELATED_BET_REJECTED 422 Abanico excesivo de figuras en un mismo ticket (límite: máx 35 figuras en La Foca / máx 18 en Zoológico / máx 20 terminales en Triple de Oro). Reducir la cantidad de figuras jugadas dentro de ese mismo ticket.
MIN_BET_LIMIT 422 El importe jugado es inferior a la jugada mínima configurada para la moneda (ej. < 5.00 VES / 0.10 USD). Aumentar el monto de la jugada al mínimo requerido.
MAX_BET_LIMIT 422 El importe de la jugada o ticket excede el tope máximo de apuesta permitido. Ajustar el importe de la apuesta por debajo del límite máximo.
MAX_PAYOUT_EXCEEDED 422 El premio potencial del ticket excede el techo máximo de exposición por ticket permitido para la entidad. Reducir el importe apostado para no superar el premio potencial máximo.
DRAW_CLOSED 422 El sorteo cerró para recepción de apuestas (2 a 3 minutos antes de la hora pautada). Ofrecer al cliente el siguiente sorteo disponible.
ACCUMULATED_CLOSED 422 Las ventas de acumulado cerraron (06:30 PM). Informar que el acumulado abre mañana a las 08:00 AM.
INVALID_NUMBER 422 Número jugado fuera del catálogo oficial de la lotería. Verificar figuras oficiales (00, 0, 01 al 75 para La Foca; 01 al 38 para Zoológico).
AMOUNT_MISMATCH 422 El total declarado no coincide con la sumatoria de apuestas. Recalcular la sumatoria antes de despachar el JSON.
TICKET_ALREADY_SETTLED 422 El ticket pertenece a un sorteo ya celebrado/premiado y no puede ser anulado. Informar que los tickets de sorteos pasados no admiten anulación.
GRACE_PERIOD_EXPIRED 422 Ha expirado el período de gracia (10 minutos) para anular el ticket tras su emisión. Las anulaciones deben solicitarse inmediatamente tras la emisión.
INSUFFICIENT_FUNDS 402 Saldo de prepago agotado en la comercializadora. Recargar saldo de cuenta comercializadora con Operadora Occidente.
UNAUTHORIZED 401 Header X-API-Key inválido, inactivo o faltante. Verificar la credencial suministrada en el panel de administración.
IP_NOT_ALLOWED 403 La IP pública de origen no está en la lista blanca (whitelist). Registrar la IP del servidor emisor en la configuración de la entidad.
Texto copiado al portapapeles