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.
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.
X-API-Key
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
Catálogo oficial de 77 figuras (0, 00, 01..74 a 60x y la figura estelar 75 (La Foca) a 120x).
El Zoológico Millonario
Catálogo oficial de 38 figuras (01 Carnero al 38 Conejo a 30x).
Triple de Oro
Modalidades: Triples (600x), Terminales (60x) y Signos Zodiacales / Tripletas (6000x) (12 signos: 01 Aries a 12 Piscis).
123 Flujo de Integración: Paso A, B, C y ¡Listo!
Cualquier comercializadora puede salir a producción completando únicamente estos 3 pasos:
Paso A: Consultar Catálogo
Obtén la lista de los 3 productos oficiales (La Foca 77, El Zoológico 38, Triple de Oro), figuras y los horarios exactos de sorteo (draw_schedule).
Paso B: Emitir Ticket
Envía la jugada con tu serial interno. El motor devuelve de inmediato el ticket oficial, PIN, código de barras y estado ACTIVO.
Paso C: Anular Ticket
Si el apostador en taquilla pide anulación antes del cierre (3 min previos al sorteo), envías tu serial o número de ticket y se reversa al instante.
/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"
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 }
]
}
]
}
/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
}
]
}'
"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
}
]
}
/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"
}
}
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"
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
}
]
}
}
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"
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 horizontalmenteRespuestas 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. |