[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"page:es:doc-sport-events-api.html":3},{"id":4,"body":5,"extension":23,"meta":120,"slug":121,"stem":122,"__hash__":123},"content_es\u002Fes\u002Fdoc-sport-events-api.json",{"template":6,"meta":7,"content":13},"docs",{"title":8,"description":9,"keywords":10,"ogTitle":11,"ogDescription":12},"Documentación de la API de Resultados, Apuestas y Cupones | Bet in Box","Documentación técnica de integración del sistema de cálculo de apuestas y cupones: cómo funciona el sistema, autorización de usuario, envío de apuesta\u002Fcupón, parámetros remote_host y rate_mode, campos de respuesta, códigos de error e interpretación de Status\u002FExtStatus.","API, deportes, cuotas, resultados, línea deportiva, integración, casa de apuestas, apuestas, cálculo de cupones, remote_host, rate_mode","Documentación de la API de cálculo de apuestas y cupones - Bet in Box","Documentación de integración del sistema de cálculo de mercados, cuotas y resultados para casas de apuestas. Cálculo de apuestas y cupones.",{"hero":14,"navLabel":35,"sections":36,"footer":108},{"eyebrow":15,"titleHtml":16,"lead":17,"cta":18,"code":21,"badges":25},"Documentación de la API","Integración del sistema de \u003Cspan class=\"hl\">cálculo de apuestas y cupones\u003C\u002Fspan>","Este sistema está diseñado para operadores de apuestas deportivas, casas de apuestas y desarrolladores de plataformas que buscan automatizar el proceso de cálculo de apuestas y la gestión de cupones. Permite integrar rápidamente el cálculo de resultados, proporcionando datos precisos sobre los estados de los cupones (ganada, perdida o devolución), y simplifica la interacción entre el servidor del operador y el sistema de cálculo.",{"label":19,"order":20},"Obtener una clave",true,{"title":22,"lang":23,"body":24},"POST \u002Fv1\u002Fcoupon","json","{\n  \"coupon_id\": \"A7F3K9\",\n  \"type\": \"express\",\n  \"events\": [\n    { \"id\": 88213, \"pick\": \"1\", \"odds\": 2.10, \"result\": \"win\" },\n    { \"id\": 88150, \"pick\": \"over_2_5\", \"odds\": 1.80, \"result\": \"win\" }\n  ],\n  \"total_odds\": 3.78, \"status\": \"won\"\n}",[26,28,30,33],{"label":27},"REST over HTTPS",{"label":29},"JSON only",{"label":31,"tone":32},"Package header auth","lime",{"label":34},"api.sportapi.net","En esta página",[37,41,47,69,75,79,83,87,93,97,103],{"id":38,"title":39,"html":40},"how","¿Cómo funciona el sistema?","\u003Ch3>¿Cómo funciona el sistema de cálculo de cuotas y resultados?\u003C\u002Fh3>\n\u003Cp>La integración con nuestro sistema de cálculo de apuestas y cupones consta de tres etapas clave:\u003C\u002Fp>\n\u003Ch4>Paso 1: Autorización\u003C\u002Fh4>\n\u003Cp>En la primera etapa debes autorizarte en el sistema. Esto se hace realizando una \u003Cstrong>petición POST\u003C\u002Fstrong> con las credenciales del usuario (login y contraseña). Una autorización correcta devuelve una sesión representada como una \u003Cstrong>cookie\u003C\u002Fstrong>, que debe guardarse. Estas cookies son necesarias para todas las peticiones posteriores, ya que se usan para identificar la sesión del usuario en el sistema.\u003C\u002Fp>\n\u003Ch4>Paso 2: Envío de una apuesta\u003C\u002Fh4>\n\u003Cp>En esta etapa se envía a nuestro sistema un código de apuesta que contiene:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>ID del partido\u003C\u002Fstrong>, correspondiente al evento.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Código de apuesta\u003C\u002Fstrong>, que describe el resultado seleccionado (por ejemplo, victoria del equipo, hándicap o total).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Cuota de la apuesta\u003C\u002Fstrong>, válida en el momento del envío.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Al enviar los datos, deben incluirse las \u003Cstrong>cookies\u003C\u002Fstrong> obtenidas durante la autorización. Esto garantiza la correcta identificación del usuario y el procesamiento de la apuesta.\u003C\u002Fp>\n\u003Ch4>Paso 3: Recepción de resultados\u003C\u002Fh4>\n\u003Cp>Tras calcular los resultados o los cupones, nuestro sistema envía \u003Cstrong>peticiones POST\u003C\u002Fstrong> al \u003Ccode>remote_host\u003C\u002Fcode> indicado. Esta petición incluye:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Estado del cupón\u003C\u002Fstrong> (ganada, perdida o devolución).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Estados de todos los resultados\u003C\u002Fstrong> incluidos en el cupón.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Los resultados se envían en cuanto se determina el resultado. Por ejemplo:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Si la apuesta se hizo sobre un resultado intermedio (por ejemplo, hándicap 2.5, y se marca el tercer gol), el cálculo puede realizarse durante el partido.\u003C\u002Fli>\n  \u003Cli>Si la apuesta es sobre el resultado final (por ejemplo, victoria del equipo), la información de estado se enviará inmediatamente después de que finalice el partido.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Ahora revisa cada paso por separado. Hemos descrito en detalle las peticiones, los parámetros y las respuestas de la API REST.\u003C\u002Fp>",{"id":42,"title":43,"html":44,"json":45,"jsonTitle":46},"auth","Autorización de usuario","\u003Cp>El login, la contraseña y el host para enviar peticiones se pueden obtener del manager.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>URL de la petición:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{APIHOST}\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Tipo de envío de datos:\u003C\u002Fstrong> POST\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Datos enviados:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Parámetro\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>login\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Login del usuario\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>password\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Contraseña del usuario\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>¡Importante!\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Durante la autorización, la respuesta incluye \u003Cstrong>cookies\u003C\u002Fstrong>. Estas \u003Cstrong>cookies\u003C\u002Fstrong> deben guardarse y enviarse con las peticiones posteriores.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Recomendaciones para una integración más sencilla:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Asegúrate de que el campo \u003Ccode>login\u003C\u002Fcode> se pase como cadena.\u003C\u002Fli>\n  \u003Cli>Verifica el correcto guardado y envío de las cookies, ya que esto afecta a la ejecución de las peticiones posteriores.\u003C\u002Fli>\n  \u003Cli>En caso de error, la petición devolverá un objeto vacío. Asegúrate de gestionar este escenario adecuadamente.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Las \u003Cstrong>cookies\u003C\u002Fstrong> son válidas durante 3 meses. Sin embargo, pueden restablecerse si se reinicia el servidor. Por lo tanto, debes volver a autorizarte si encuentras un error al guardar un cupón.\u003C\u002Fp>","\"errorCode\":1,\n\"fullErrorCode\":99,\n\"errorMessage\":\"Invalid access level\"","Respuesta de error",{"id":48,"title":49,"codeTabs":50,"codeTitle":67,"html":68},"auth-example","Ejemplo de envío de una petición (usa los datos proporcionados por el manager):",[51,55,59,63],{"label":52,"lang":53,"body":54},"Python","python","import requests\nimport json\n\nurl = \"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\"\n\npayload = json.dumps({\n  \"login\": \"demo-login@demosportapi.net\",\n  \"password\": \"demo-password\"\n})\nheaders = {\n  'Content-Type': 'application\u002Fjson'\n}\n\nprint(response.text)",{"label":56,"lang":57,"body":58},"PHP","php","$curl = curl_init();\n\ncurl_setopt_array($curl, array(\n    CURLOPT_URL => 'https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F',\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_ENCODING => '',\n    CURLOPT_MAXREDIRS => 10,\n    CURLOPT_TIMEOUT => 0,\n    CURLOPT_FOLLOWLOCATION => true,\n    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_POSTFIELDS =>'{\n    \"login\":\"demo-login@demosportapi.net\",\n    \"password\":\"demo-password\"\n}',\n    CURLOPT_HTTPHEADER => array(\n    'Content-Type: application\u002Fjson'\n    ),\n));\n\n$response = curl_exec($curl);\n\ncurl_close($curl);\necho $response;",{"label":60,"lang":61,"body":62},"JavaScript","js","const myHeaders = new Headers();\nmyHeaders.append(\"Content-Type\", \"application\u002Fjson\");\n\nconst raw = JSON.stringify({\n    \"login\": \"demo-login@demosportapi.net\",\n    \"password\": \"demo-password\"\n});\n\nconst requestOptions = {\n    method: \"POST\",\n    headers: myHeaders,\n    body: raw,\n    redirect: \"follow\"\n};\n\nfetch(\"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\", requestOptions)\n    .then((response) => response.text())\n    .then((result) => console.log(result))\n    .catch((error) => console.error(error));",{"label":64,"lang":65,"body":66},"Java","java","OkHttpClient client = new OkHttpClient().newBuilder()\n.build();\nMediaType mediaType = MediaType.parse(\"application\u002Fjson\");\nRequestBody body = RequestBody.create(mediaType, \"{\\r\\n    \\\"login\\\":\\\"demo-login@demosportapi.net\\\",\\r\\n    \\\"password\\\":\\\"demo-password\\\"\\r\\n}\");\nRequest request = new Request.Builder()\n.url(\"https:\u002F\u002Fexample-domain-calc.com\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F\")\n.method(\"POST\", body)\n.addHeader(\"Content-Type\", \"application\u002Fjson\")\n.build();\nResponse response = client.newCall(request).execute();","POST {APIHOST}\u002FWebServices\u002FBCService.asmx\u002FLogIn\u002F","\u003Cp>\u003Cstrong>Ejemplo de respuesta:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Correcta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\"d\":{\"UserId\":\"36557\"}}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Incorrecta:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{\"d\":{}}\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Cstrong>Descripción de los campos de respuesta:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Campo\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>UserId\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Identificador único del usuario\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>d\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Objeto raíz de la respuesta\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Recomendaciones generales:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Antes de la primera petición, asegúrate de que el usuario haya introducido las credenciales correctas.\u003C\u002Fli>\n  \u003Cli>Configura la gestión de errores para mostrar al usuario los motivos del fallo de autorización (por ejemplo, login o contraseña incorrectos).\u003C\u002Fli>\n  \u003Cli>Registra los intentos correctos e incorrectos para su análisis y monitorización.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Las cookies deben guardarse y enviarse con las peticiones posteriores.\u003C\u002Fp>",{"id":70,"title":71,"html":72,"json":73,"jsonTitle":74},"coupon","Método de envío de apuesta o cupón","\u003Cp>Para enviar una apuesta debes usar las cookies obtenidas durante la etapa de autorización. Estos datos son necesarios para identificar tu sesión y procesar las peticiones.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>URL de la petición:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cpre>\u003Ccode>{HOST_API}\u002Fbet\u002Fplace\u002F\u003C\u002Fcode>\u003C\u002Fpre>","{\n    \"data\":{\n        \"list_bets\":[\n            \"line#586464528|17|954|2.5#4.27\",  \"live#586464528|87|4|0#1.12\"\n        ],\n        \"realAmount\":\"2\",\n        \"currency\":\"USD\",\n        \"lang\":\"en\",\n        \"remote_host\":\"https:\u002F\u002Fmysites.com\",\n        \"rate_mode\":\"reject\"\n    }\n}","Ejemplo de cuerpo (body) de la petición",{"id":76,"title":77,"html":78},"params","Parámetros remote_host y rate_mode","\u003Ch4>Descripción de los campos\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Parámetro\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>list_bets\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Código de apuesta y cuotas. Formato: \u003Ccode>\"tipo_evento#ID_partido|código_apuesta#cuota\"\u003C\u002Fcode>. Ejemplo: \u003Ccode>\"live#579216393|1|1|0#2.1\"\u003C\u002Fcode>\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>realAmount\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Importe de la apuesta. Debe pasarse como cadena, p. ej., \"150\".\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>currency\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Moneda del cupón.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>lang\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>El idioma en el que se guardan la apuesta y el cupón. Por ejemplo: \"en\", \"ru\" o \"tr\".\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>remote_host\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>La URL a la que enviar los resultados de cálculo del cupón. No incluyas una barra final.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>rate_mode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Opción para gestionar la aceptación del cupón cuando cambian las cuotas: \"reject\" (rechazar ante cambios) o \"accept\" (aceptar independientemente de los cambios). Por defecto: \"accept\".\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Nota:\u003C\u002Fstrong> Asegúrate de que los parámetros se pasen en el formato correcto. Por ejemplo, \u003Ccode>list_bets\u003C\u002Fcode> debe ser un array, aunque solo haya una apuesta.\u003C\u002Fp>\n\u003Cblockquote>No validamos el importe de la apuesta. Puedes enviar el importe real de la apuesta o cualquier valor arbitrario. Esto se hace para garantizar la confidencialidad de tus datos financieros. Nuestra tarea es proporcionar los resultados de cálculo. Tú eres responsable de acreditar las ganancias a tus jugadores.\u003C\u002Fblockquote>\n\u003Ch4>Parámetros obligatorios para enviar una apuesta:\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>list_bets\u003C\u002Fstrong> — contiene información sobre la apuesta y el partido correspondiente.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>remote_host\u003C\u002Fstrong> — la URL a la que enviaremos los resultados de cálculo del cupón o del resultado.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>rate_mode\u003C\u002Fstrong> — determina cómo gestiona el sistema los cambios de cuotas.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>El resto de parámetros también deben enviarse, pero son opcionales y pueden usarse para tu comodidad.\u003C\u002Fp>\n\u003Ch4>Descripción del parámetro remote_host\u003C\u002Fh4>\n\u003Cp>\u003Cstrong>remote_host\u003C\u002Fstrong> es la dirección de tu servidor a la que enviamos peticiones con los resultados de cálculo de apuestas. Este host debe estar configurado para aceptar peticiones de nuestro servidor. A continuación se muestran ejemplos de posibles valores y detalles específicos sobre el trabajo con este parámetro.\u003C\u002Fp>\n\u003Cp>Puedes especificar varias opciones para \u003Cstrong>remote_host\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Host simple:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Host con puerto:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com:78665\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Host con rutas adicionales:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest\u002Fsportapi\u002Fsender\u003C\u002Fcode>\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Host con parámetros:\u003C\u002Fstrong> \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Importante:\u003C\u002Fstrong> Al enviar una petición, nuestro sistema añade automáticamente la cadena \u003Ccode>\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode> al \u003Ccode>remote_host\u003C\u002Fcode> indicado. Así, la dirección final para recibir peticiones se forma como \u003Ccode>remote_host + \"\u002Fapi\u002Fbet\u002Fresult\"\u003C\u002Fcode>. Asegúrate de que tu servidor esté configurado para recibir datos en esta ruta.\u003C\u002Fp>\n\u003Ch6>Ejemplos:\u003C\u002Fh6>\n\u003Cul>\n  \u003Cli>Especificas \u003Ccode>remote_host = https:\u002F\u002Fmysites.com\u003C\u002Fcode>. Enviamos peticiones a: \u003Ccode>https:\u002F\u002Fmysites.com\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>Especificas \u003Ccode>remote_host = https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u003C\u002Fcode>. Enviamos peticiones a: \u003Ccode>https:\u002F\u002Fmysites.com\u002Frequest.php?action=webhook\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Detalles técnicos:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Las peticiones se envían mediante el método \u003Ccode>POST\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>Tu servidor debe estar listo para aceptar los datos JSON que enviamos.\u003C\u002Fli>\n  \u003Cli>Tu servidor debe devolver un código de estado 200 al recibir correctamente los datos.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Asegúrate de que tu servidor procese correctamente la ruta y las peticiones indicadas. La siguiente sección muestra un ejemplo de la estructura de datos enviada por nuestro servidor.\u003C\u002Fp>\n\u003Ch4>Descripción del parámetro rate_mode\u003C\u002Fh4>\n\u003Cp>El parámetro \u003Cstrong>rate_mode\u003C\u002Fstrong> define el comportamiento del sistema cuando cambian las cuotas. Puede tomar dos valores:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>accept\u003C\u002Fstrong>: En este modo, el cupón se aceptará con las cuotas actuales, incluso si han cambiado. Por ejemplo, un jugador añade una apuesta \"Gana el Manchester\" con una cuota de 2.02. Mientras pulsa el botón \"Hacer apuesta\", la cuota cambia a 1.37 o 2.78. En el modo \u003Ccode>accept\u003C\u002Fcode>, el sistema guarda el cupón con las nuevas cuotas sin notificar a tu sistema.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>reject\u003C\u002Fstrong>: En este modo, el sistema rechaza el cupón si las cuotas han cambiado. La respuesta incluirá un error notificando que las cuotas han cambiado.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Elige el modo que mejor se adapte a tus procesos de negocio y ofrezca comodidad a tus usuarios.\u003C\u002Fp>\n\u003Ch4>Recomendaciones importantes\u003C\u002Fh4>\n\u003Col>\n  \u003Cli>\u003Cstrong>Formato JSON:\u003C\u002Fstrong> Asegúrate de que los datos se serialicen correctamente en formato JSON antes de enviarlos.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Cookies:\u003C\u002Fstrong> Incluye las cookies obtenidas durante la autorización para identificar correctamente la sesión del usuario.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Gestión de errores:\u003C\u002Fstrong> Gestiona las respuestas del servidor, especialmente los casos en que se devuelve \u003Ccode>errorCode = 1\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Pruebas:\u003C\u002Fstrong> Realiza pruebas en todas las etapas de la integración, incluido el envío de apuestas individuales y múltiples.\u003C\u002Fli>\n\u003C\u002Fol>",{"id":80,"title":81,"html":82},"fields","Campos de respuesta y descripción de errores","\u003Ch4>Campos de respuesta\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Parámetro\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Ccode>betCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Número único de la apuesta en nuestro sistema\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>errorCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Estado principal del resultado de la petición\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>fullErrorCode\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Detalle del error\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>errorMessage\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Mensajes de texto de errores del sistema\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>AmountOut\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Importe potencial de ganancia\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>CountEvents\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Número de apuestas en el cupón\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>Coef\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Cuotas de los resultados\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>IsLive\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Tipo de apuesta: en vivo o pre-partido (true\u002Ffalse)\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>LinesId\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>ID del partido\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Ccode>EventDate\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Fecha del partido\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Descripción de errores en el envío de apuestas\u003C\u002Fh4>\n\u003Cp>Al enviar una apuesta pueden producirse diversos errores. La respuesta del servidor contiene tres campos clave:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>\u003Cstrong>errorCode:\u003C\u002Fstrong> Estado principal de la petición.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>fullErrorCode:\u003C\u002Fstrong> Detalle del error.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>errorMessage:\u003C\u002Fstrong> Descripción de texto del error.\u003C\u002Fli>\n\u003C\u002Ful>",{"id":84,"title":85,"json":86,"jsonTitle":85},"success","Operación correcta","{\n  \"errorCode\": 0,\n  \"fullErrorCode\": 0,\n  \"errorMessage\": \"\"\n}",{"id":88,"title":89,"html":90,"json":91,"jsonTitle":92},"errors","Códigos de error","\u003Cp>Si la apuesta se acepta correctamente, el servidor devuelve una respuesta correcta (ver arriba). El cupón se ha aceptado y no hay errores.\u003C\u002Fp>\n\u003Cp>Si se produce un error, el servidor devuelve una respuesta de error general (ver arriba). Se ha producido uno de los posibles errores. A continuación se muestran los códigos y mensajes de error.\u003C\u002Fp>\n\u003Ch4>Posibles códigos y descripciones de error\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Código de error (fullErrorCode)\u003C\u002Fth>\u003Cth>Mensaje de error (errorMessage)\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_wrong_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Datos de apuesta incorrectos. Comprueba el parámetro \u003Ccode>list_bets\u003C\u002Fcode> y otros campos obligatorios.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_block_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>La apuesta está bloqueada temporalmente y no se puede aceptar.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>1\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_repeat_bet_data\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>No se permiten apuestas duplicadas sobre el mismo resultado de un mismo partido.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>2\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>label_change_rate\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Las cuotas han cambiado. El cupón se rechazó debido a una discrepancia entre las cuotas indicadas y las actuales.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>3\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>\u003Ccode>error_exist_bet\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>El resultado de apuesta indicado ya no existe. Comprueba la exactitud de los datos.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>99\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Invalid access level\u003C\u002Ftd>\u003Ctd>El usuario no tiene permisos para realizar esta operación. Lo más probable es que sea necesario volver a autorizarse, falten las cookies o la cuenta esté bloqueada.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>99\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Error exist remote host!\u003C\u002Ftd>\u003Ctd>El parámetro \u003Ccode>remote_host\u003C\u002Fcode> es incorrecto o falta. Comprueba la configuración de tu servidor.\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Recomendaciones para la gestión de errores\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Validación de datos de entrada:\u003C\u002Fstrong> Asegúrate de que todos los parámetros obligatorios se proporcionen correctamente. Comprueba el formato de \u003Ccode>list_bets\u003C\u002Fcode> y la presencia de todos los campos obligatorios.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Trabajo con cuotas:\u003C\u002Fstrong> Si se usa \u003Ccode>rate_mode = reject\u003C\u002Fcode>, gestiona los errores relacionados con cambios de cuotas (\u003Ccode>label_change_rate\u003C\u002Fcode>).\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Configuración del servidor:\u003C\u002Fstrong> Asegúrate de que tu servidor esté correctamente indicado en el parámetro \u003Ccode>remote_host\u003C\u002Fcode>.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Registro de errores:\u003C\u002Fstrong> Registra todos los errores (\u003Ccode>errorCode\u003C\u002Fcode>, \u003Ccode>fullErrorCode\u003C\u002Fcode>, \u003Ccode>errorMessage\u003C\u002Fcode>) para simplificar la depuración y la interacción con el soporte.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Acciones ante errores críticos:\u003C\u002Fstrong> En caso de errores de nivel \u003Ccode>99\u003C\u002Fcode>, comprueba los permisos de acceso y la configuración de la API en tu lado.\u003C\u002Fli>\n\u003C\u002Ful>","{\n  \"errorCode\": 1,\n  \"fullErrorCode\": [ERROR_CODE],\n  \"errorMessage\": \"[ERROR_DESCRIPTION]\"\n}","Error general",{"id":94,"title":95,"json":96,"jsonTitle":95},"odds-changed","Recomendaciones para gestionar errores cuando las cuotas han cambiado","{\n    \"errorCode\":1,\n    \"fullErrorCode\":2,\n    \"errorMessage\":\"Odds have changed\",\n    \"rate_mode\":\"reject\",\n    \"changed\":[\n        {\n            \"gid\":\"586464528\", \u002F\u002F match ID\n            \"rb\":2.15, \u002F\u002F odds in your coupon\n            \"rg\":\"2.27\", \u002F\u002F current real odds\n            \"rt\":0 \u002F\u002F status of change. 0 - decreased, 1 - increased\n        }\n    ]\n}",{"id":98,"title":99,"html":100,"json":101,"jsonTitle":102},"results","Envío de resultados de cálculo","\u003Cp>Cuando se añade una apuesta a nuestro sistema y se calcula, enviamos los resultados del cupón a tu servidor. Estos pueden incluir:\u003C\u002Fp>\n\u003Cul>\n  \u003Cli>Resultados del cupón (cálculo completo).\u003C\u002Fli>\n  \u003Cli>Estados del cupón (ganada, perdida, devolución).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Las peticiones se envían a la dirección que indicaste en el parámetro \u003Ccode>remote_host\u003C\u002Fcode>. A esta dirección se le añade automáticamente la cadena \u003Ccode>\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>. Asegúrate de que tu servidor esté configurado para recibir datos en esta ruta.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Ejemplo de la dirección final:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Si indicaste: \u003Ccode>remote_host = https:\u002F\u002Fmysite.com\u003C\u002Fcode>, enviaremos los datos a: \u003Ccode>https:\u002F\u002Fmysite.com\u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fp>","{\n    \"remote_host\": \"https:\u002F\u002Fmysite.com\",\n    \"Heads\": [{\n        \"KeyHead\": {\n            \"Id\": \"344143\",\n            \"BarCode\": \"x9c52i8411\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 11130,\n        \"DateReceive\": \"1597075782\"\n    }]\n}","Ejemplo de datos para un solo cupón",{"id":104,"title":105,"html":106,"json":107,"jsonTitle":105},"results-multi","Ejemplo de datos para varios cupones","\u003Ch4>Descripción de los campos\u003C\u002Fh4>\n\u003Ctable>\n  \u003Cthead>\u003Ctr>\u003Cth>Campo\u003C\u002Fth>\u003Cth>Descripción\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\u003Ctd>\u003Cstrong>remote_host\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>La dirección de tu servidor a la que se envían los datos.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>Id\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Identificador único de la apuesta en nuestro sistema. Se ignora en la mayoría de los casos.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>BarCode\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Número único del cupón.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>Status\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Estado actual del cupón. Valores posibles: \u003Cstrong>2\u003C\u002Fstrong> — ganada, \u003Cstrong>4\u003C\u002Fstrong> — perdida.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>ExtStatus\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Estado adicional en caso de devolución: \u003Cstrong>0\u003C\u002Fstrong> — sin cambios, \u003Cstrong>1\u003C\u002Fstrong> — uno o más resultados se calcularon con una cuota modificada.\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>AmountOut\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>Importe de ganancia (si el cupón ganó).\u003C\u002Ftd>\u003C\u002Ftr>\n    \u003Ctr>\u003Ctd>\u003Cstrong>DateReceive\u003C\u002Fstrong>\u003C\u002Ftd>\u003Ctd>La hora y fecha en que se calculó el cupón.\u003C\u002Ftd>\u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003Ch4>Cómo interpretar Status y ExtStatus\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Status = 2 y ExtStatus = 0:\u003C\u002Fstrong> El cupón ganó.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Status = 4 y ExtStatus = 0:\u003C\u002Fstrong> El cupón perdió.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Status = 2 y ExtStatus = 1:\u003C\u002Fstrong> Devolución. El cupón se calculó con una cuota de 1.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Puntos importantes para la integración\u003C\u002Fh4>\n\u003Cul>\n  \u003Cli>\u003Cstrong>Gestión de ExtStatus = 1:\u003C\u002Fstrong> Esto puede ocurrir si un partido se canceló o terminó antes de tiempo. En tales casos, todas las apuestas se calculan con una cuota de 1.\u003C\u002Fli>\n  \u003Cli>\u003Cstrong>Requisitos técnicos:\u003C\u002Fstrong> Las peticiones se envían mediante el método \u003Cstrong>POST\u003C\u002Fstrong>. Tu servidor debe estar listo para aceptar datos JSON en la ruta \u003Ccode>remote_host + \u002Fapi\u002Fbet\u002Fresult\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>","{\n    \"remote_host\": \"https:\u002F\u002Fmysite.com\",\n    \"Heads\": [{\n        \"KeyHead\": {\n            \"Id\": \"313\",\n            \"BarCode\": \"75vz48t935\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 19.85,\n        \"DateReceive\": \"1592937968\"\n    }, {\n        \"KeyHead\": {\n            \"Id\": \"312\",\n            \"BarCode\": \"77i0r6e15t\"\n        },\n        \"Status\": 2,\n        \"ExtStatus\": 0,\n        \"AmountOut\": 12.51,\n        \"DateReceive\": \"1592937280\"\n    }]\n}",{"title":109,"items":110},"Otra integración",[111,114,117],{"label":112,"href":113},"Sports Line docs","\u002Fes\u002Fdoc-sport-line-api.html",{"label":115,"href":116},"Sports Line API","\u002Fes\u002Fsport-line-api.html",{"label":118,"href":119},"Match Results API","\u002Fes\u002Fsport-rezult-api.html",{},"doc-sport-events-api.html","es\u002Fdoc-sport-events-api","XVwYVYXWmstIoaL1Qlg097cm39e7-zo3iBZbe9p0GoQ"]