Respuestas de error habituales
Rapid API Las líneas de negocio comparten códigos de error, mensajes y formatos de respuesta comunes
Estos errores se dan en todas las líneas de negocio de Rapid, entre las que se incluyen:
- Rapid Lodging API
- Rapid Car API
- API de Rapid Flight
- Rapid Activities API
Se señalan las diferencias que haya entre las distintas líneas de negocio.
Rapid API gestión de errores
Te recomendamos que tu lógica de gestión de errores incluya estos puntos para evitar problemas:
- Asegúrate de que haya una lógica de gestión de errores para gestionar los errores de las API de compras y reservas.
- Utiliza siempre un
affiliate_reference_idúnico para cada solicitud de reserva, a menos que se especifique lo contrario en las notas que aparecen a continuación. - Revisa y actualiza periódicamente tu lógica de gestión de errores, sobre todo en lo que respecta a las solicitudes de reserva.
- Todas las respuestas de Rapid API tienen un código de respuesta HTTP correspondiente.
Tiempo de espera de conexión o de comunicación
Se recomienda configurar un tiempo de espera de 120 segundos para las solicitudes de reserva a través de la API de vuelos; para el alojamiento y el resto de nuestras API, recomendamos 90 segundos. Sin embargo, quizá prefieras establecer un tiempo de espera de conexión más corto para las consultas sobre la disponibilidad de productos en Shopping.
Si no has recibido respuesta en 120 segundos, Rapid API te mostrará un error 5xx, ya que los propios tiempos de espera de conexión de Rapid API's están configurados en 120 segundos.
En algunos casos, Rapid API no es compatible con el HTTP Expect: 100-Continue proceso. Es posible que tengas problemas de conexión al intentar conectarte a los servidores con este proceso, sobre todo en cURL, C#/.NET y algunos otros lenguajes de programación que siguen este proceso por defecto.
Nota: El error "HTTP 504 gateway time out" no implica que se haya agotado el tiempo de espera de Rapid. En estos casos, o bien se ha producido un fallo en un servicio de infraestructura, o bien Rapid actúa como puerta de enlace hacia otro servicio posterior y establece un límite de tiempo de espera para ese servicio. Ese tiempo de espera en la fase posterior se traducirá en un error 504. Si aparece el error 504 en una llamada de reserva, comprueba si la reserva se creó mediante «Itinerary Retrieve» (affiliate_reference_id+ correo electrónico), ya que el problema subyacente podría haberse producido antes de que se creara la reserva (comunicación con el hotel, servidor de pagos) o después (Expedia Group, gestión financiera). Además, comprueba que la conexión a Internet sea estable. Un comando Traceroute puede ayudar a identificar si hay problemas de conectividad.
Resolución de errores "5xx" de reserva y recuperación
Un error en la reserva (código de estado 5xx) o un tiempo de espera agotado no significa necesariamente que la reserva en sí no sea válida. Es posible que el error se haya producido después de crear la reserva. Te recomendamos que solicites una consulta del itinerario en affiliate_reference_idy envíes un correo electrónico para comprobar el estado de la reserva.
Cualquier error que se devuelva en 90 segundos no indica el estado final de la reserva. Por lo general, la mayoría de las reservas se confirman en un plazo de entre 13 y 30 segundos, aunque algunas pueden tardar hasta 5 minutos en completarse.
Puedes programar una lógica para comprobar el estado de la reserva tres veces en un periodo de 90 segundos. La mayoría de las respuestas se confirmarán en los primeros 30 segundos, así que puedes confirmar la respuesta sin tener que esperar los 90 segundos completos. Si no has recibido una respuesta definitiva, puedes volver a intentar la recuperación durante 30 minutos antes de ponerte en contacto con los agentes del centro de atención al cliente de Rapid API para obtener más ayuda.
Utiliza una llamada a la API «Retrieve» para consultar los resultados de la reserva en double-confirm (respuesta HTTP 200 o HTTP 404).
La respuesta de recuperación devuelve la información de retención y reanudación
A veces, tras una reserva de alojamiento realizada con éxito, la respuesta de «Itinerary Retrieve» muestra datos que parecen corresponderse con una reserva en espera o reanudada. Así que, en lugar de la información habitual sobre la reserva (habitaciones, penalizaciones por cancelación, etc.), la respuesta solo incluirá los tokens necesarios para una situación de suspensión/reanudación.
El motivo es que la reserva, aunque es válida, sigue apareciendo como «pendiente». Este estado desaparecerá, normalmente, en cuestión de minutos, por lo que es necesario repetir las solicitudes de Itinerary Retrieve hasta que se complete la reserva.
Ejemplo de respuesta:
{
"itinerary_id": "2667552437552",
"links": [
{
"rel": "retrieve",
"method": "GET",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
},
{
"rel": "resume",
"method": "PUT",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
},
{
"rel": "cancel",
"method": "DELETE",
"href": "/v3/itinerary/{itinerary_id}?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m"
}
]
}Desglose de errores con estructura de varios niveles
La respuesta de la API puede desglosar un error en varios niveles cuando un error de tipo « single-level » no basta para explicar todos los detalles necesarios. Repasar la información en todos los niveles te ayudará a aclarar el error y a solucionarlo.
Ejemplo de respuesta:
{
"type": "invalid_input",
"message": "An invalid request was sent in, please check the nested errors for details.",
"errors": [
{
"type": "duplicate_itinerary",
"message": "An itinerary already exists with this affiliate reference id.",
"fields": [
{
"name": "affiliate_reference_id",
"type": "body",
"value": "XXXXXX"
}
]
}
]
}Códigos de respuesta HTTP
400 - Bad Request
Aparece si tu solicitud tenía un formato o valores incorrectos.
Los errores de código 400 «Solicitud incorrecta» indican un problema con el encabezado «Request Booking». La respuesta de error incluirá el campo concreto del array de error que no es válido en el encabezado de la solicitud de reserva. El encabezado está formado por varias matrices y un sub-arrays,, como «rooms» y «payments». La matriz general es el cuerpo. De esta forma, body.email indicaría el parámetro del correo electrónico para el cuerpo del encabezado.
Nota: En la API de alojamiento, la matriz «rooms» del encabezado «Booking» debe tener el mismo número de entradas que las habitaciones solicitadas en la llamada a «Availability».
Se devuelve un error 400 (solicitud incorrecta) con la etiqueta "Tomcat Exception Report" cuando los parámetros de la solicitud son demasiado grandes, con mayor frecuencia en las API Property Content y Get Availability. Para evitar este error, reduce el número de alojamientos o elimina los parámetros innecesarios de la solicitud.
Ejemplos de respuesta:
Idiomas no aceptados:
{
"type": "invalid_input",
"message": "An invalid request was sent in, please check the nested errors for details.",
"errors": [
{
"type": "language.not_supported",
"message": "Language is not supported. Supported languages are: [de-DE, en-US, es-ES, es-MX, fr-FR, id-ID, it-IT, ja-JP, ko-KR, pt-BR, zh-CN]",
"fields": [
{
"name": "language",
"type": "querystring",
"value": "xx-XX"
}
]
},
{
"type": "filter.mismatch",
"message": "Existing booking is expedia_collect, this cannot be changed",
"fields": [
{
"name": "filter",
"type": "querystring",
"value": "property_collect"
}
]
}
]
}Falta el valor de la versión:
{
"type": "version.required",
"message": "You have not specified a version, the supported versions are: [1, 2]",
"fields": [
{
"name": "version",
"type": "path",
"value": "missing"
}
]
}El valor de la versión no es válido:
{
"type": "version.unsupported",
"message": "You have requested a version that is not supported, supported versions are: [1, 2]",
"fields": [
{
"name": "version",
"type": "path",
"value": "3"
}
]
}401 - Unauthorized
Se devuelve si falta tu encabezado de autorización HTTP o si no se ha podido analizar. Cada solicitud a cualquier API de Rapid Lodging debe incluir el hash sin sal deSHA-512, que es la concatenación de tu clave API + el secreto compartido + la marca de tiempo UNIX en segundos. Consulta nuestra página de verificación por firma para obtener todos los detalles.
Ejemplo de respuesta 401 «No autorizado» de la API de alojamiento:
{
"type": "request_unauthenticated",
"message": "Data required to authenticate your request is missing. Ensure that your request follows the guidelines in our documentation.",
"fields": [
{
"name": "apikey",
"type": "header",
"value": "jaj3982k239dka328e"
},
{
"name": "signature",
"type": "header",
"value": "129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b"
},
{
"name": "timestamp",
"type": "header",
"value": 198284729
},
{
"name": "servertimestamp",
"type": "server",
"value": 198284729
}
]
}Para las llamadas a la API de Rapid Flight, tienes que incluir un token web JSON (JWT) válido de EGToken principal en el encabezado de la solicitud.
Authorization: EGToken principal-JWT={encodedJwt}El JWT principal se obtiene mediante el intercambio de tokens y credenciales de cliente de OAuth 2.0; para más detalles, consulta las guías de uso de la autenticación OAuth 2.0 y de la API de reserva rápida de vuelos.
403 - Forbidden
Aparece cuando tu encabezado HTTP de autorización es válido, pero no se te permite acceder al recurso solicitado.
Ejemplo de la respuesta 403 - Forbidden:
{
"type": "request_unauthorized",
"message": "Your request could not be authorized."
}404 - Not Found
Aparece si no ha podido encontrarse el recurso de la API solicitado. Compara la URL de la solicitud con los ejemplos que hemos documentado.
La API de geografía de Lodging y la API de contenido también usan respuestas 404 para indicar que no se pueden localizar los archivos o recursos solicitados relacionados con la geografía o content-specific. Para obtener ejemplos completos, consulta las páginas respectivas de la documentación.
El código 404 después de una recuperación de itinerario indica que no se ha podido encontrar la reserva. Si la recuperación se ha realizado debido a un error de reserva, este código indica que la reserva no se ha creado. Sin embargo, tienes que asegurarte de que los parámetros de la solicitud de la API de recuperación de itinerarios sean válidos, así que comprueba que el « affiliate_reference_id », el correo electrónico y/o el número de itinerario sean correctos. Además, si la llamada a la API de recuperación se ha realizado menos de 90 segundos después de la llamada de reserva, te recomendamos que vuelvas a intentar la recuperación.
Ejemplo de respuesta:
{
"type": "resource.not_found",
"message": "The requested resource could not be found."
}409 - Price Mismatch
Muchos proveedores utilizan la fijación dinámica de precios, o lo que también se conoce como «time-based ». Esto significa que los precios varían en función de los algoritmos de la oferta y la demanda. Expedia Group recibe las tarifas actualizadas varias veces por segundo, lo que significa que las tarifas cambian con frecuencia.
Es importante tener en cuenta que, por lo general, esta decisión la toma el proveedor y no Expedia Group. Además, como hay almacenamiento en caché a varios niveles para las tarifas y la disponibilidad, puede haber varias capas de latencia en cualquier reserva.
Una discrepancia de precios (PMM) es algo que puede pasar y tiene varias causas, como fallos en los sistemas o que estos no reflejen los precios actualizados. Deberías hacer un seguimiento de la frecuencia de estos incidentes y ponerte en contacto con el servicio de asistencia si la tasa aumenta de repente o alcanza un umbral determinado.
Si se ha producido un PMM en varios resultados a la vez, deberías comprobar si hay una posible degradación rápida.
Si un PMM devuelve los mismos resultados durante un periodo prolongado, probablemente se deba a que el proveedor ha introducido mal las tarifas. Puedes ponerte en contacto con el servicio técnico para comprobarlo.
Para recuperarte de un PMM, vuelve a realizar la llamada «Price Check» (API de alojamiento) o «Flight Details» (API de vuelos) para obtener un nuevo token de la URL de la reserva. Puedes utilizar el mismo affiliate_reference_id en la llamada de reserva.
Ejemplo de respuesta:
{
"type": "price_mismatch",
"message": "Payment amount did not match current price, please check price and try again.",
"fields": [
{
"name": "payments.amount",
"type": "body",
"value": "100.00"
},
{
"name": "price.amount",
"type": "body",
"value": "120.00"
}
]
}410 - Gone or Sold Out
Devuelve un valor si el enlace Rapid API al que se está accediendo ha caducado o si el stock solicitado ya no está disponible.
Muchos proveedores tienen enlaces de comunicación directos y sincrónicos con Expedia Group que funcionan en tiempo real.
La reserva de comunicación sincrónica se produce cuando se realizan llamadas a «Disponibilidad de compras y comprobación de precios» (API de alojamiento) o a «Detalles de vuelos» (API de vuelos) utilizando los datos de los proveedores que te facilitamos y que gestionamos. Este error se produce cuando no hay suficiente disponibilidad para la selección de la reserva.
Puede que sea algo temporal y, si lo intentas de nuevo, quizá el artículo ya esté disponible. Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo affiliate_reference_id que se envió con la reserva. Si no se encuentra ninguna reserva, puede que el viajero tenga que elegir otra opción.
Los mensajes de error de «agotado» también pueden aparecer si la conexión con el proveedor no funciona bien. En ese caso, no tenemos ninguna indicación de la disponibilidad real.
Ejemplo de respuesta:
Enlace caducado:
{
"type": "link.expired",
"message": "The link you followed has expired. Please request a new link."
}Agotado:
"type": "rooms_unavailable",
"message": "One or more requested rooms are unavailable."426 - Upgrade Required
Devuelve un valor si la solicitud no ha utilizado Transport Layer Security (TLS), un protocolo criptográfico que sustituye a Secure Sockets Layer (SSL).
Ejemplo de respuesta:
{
"type": "upgrade_required",
"message": "This service requires the use of TLS."
}429 - Rate Limit Errors
Cuando el recuento de solicitudes supera el límite de cuota, se devuelve un código de estado 429. Cada respuesta puede ser sometida a dos límites de cuota diferentes: una en la que una integración está enviando solicitudes a una velocidad superior al límite y otra en la que los servidores de Expedia Group están sufriendo una carga que sobrepasa el límite.
Cuando haces una solicitud a la API de Expedia Group, el servidor receptor comprueba si el número de solicitudes está dentro del límite. Si el recuento de solicitudes está dentro del límite, la solicitud prosperará y se incrementará el recuento para el cliente. Si el recuento de la solicitud del cliente sobrepasa el límite, el servidor devolverá una respuesta con un código HTTP de estado 429 (demasiadas solicitudes).
El servidor puede incluir, de forma opcional, un encabezado Rate-Limit-Day-Reset y Rate-Limit-Minute-Reset. Indica cuánto tiempo deberías esperar antes de enviar siguiente solicitud. Se trata de las marcas de tiempo en las que se producirá la siguiente caída, expresadas en microsegundos (no en milisegundos).
Por ejemplo, cuando se convierten a una fecha u hora, el valor "15489792000000" da como resultado Friday, February 1, 2019 12:00:00 AM (UTC).
Nota: Si recibes un error por un exceso de solicitudes, espera al menos cinco minutos antes de intentar enviar una solicitud corregida. Si lo reintentas antes de ese tiempo, se seguirán produciendo errores debido a la sincronización de la caché.
Ejemplo de respuesta:
HTTP/1.1 429 Too Many Requests
Connection →keep-alive
Content-Length →106
Date →Fri, 01 Feb 2019 06:20:51 GMT
Rate-Limit-Day-Remaining →18
Rate-Limit-Day-Reset →1548979200000
Rate-Limit-Minute-Remaining →0
Rate-Limit-Minute-Reset →1549002000000
Rate-Limit-Reduction-Status →inactive
Server →EAN
Transaction-Id →003224d2-1407-42fe-8bf8-6d74226e7f00500 – Internal Server Error
Devuelve un error en el servidor « Rapid API » o en los sistemas anteriores. Sigue las instrucciones del campo del mensaje si se indica una acción específica; de lo contrario, intenta realizar la solicitud otra vez con el mismo affiliate_reference_id.
Rapid API devuelve un código HTTP 500 cuando detecta un problema, pero no puede dar más detalles sobre cuál es exactamente el problema. Todos los socios deben tener en cuenta que, de vez en cuando, pueden recibir algunas respuestas con el código 500 al usar Rapid API.
También se puede producir un error HTTP 500 cuando se utiliza un punto de venta no compatible, como Siria.
Si has recibido un error en una respuesta de la API que no sea "Crear reserva" o "Cancelar reserva", y no parece haber ningún problema de conexión, vuelve a intentar la solicitud en otro momento. Puede que incluya un encabezado Retry-After para indicar el retardo mínimo (en segundos) antes de volver a intentarlo.
Si has recibido un error en la respuesta de la API al crear una reserva:
- Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo
affiliate_reference_idque se envió con la reserva. - Si no se encuentra ninguna reserva o sigues recibiendo el error 500, vuelve a intentar hacer la reserva más tarde.
Si te ha aparecido el error en la respuesta de la API al cancelar una reserva:
- Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de Itinerary Retrieve utilizando el
itinerary_idconocido. - Si no se cancela la reserva o sigues recibiendo el error 500, vuelve a intentar la solicitud de cancelación más tarde.
Ejemplos de respuesta:
{
"type": "unknown_internal_error",
"message": "An internal server error has occurred."
}{
"type": "internal_error",
"message": "An internal server error has occurred. Please discard any previously received results in this pagination and restart the pagination from the beginning."
}503 - Service Unavailable
El error HTTP 503 suele ser temporal e indica que Rapid API,, o un servicio subyacente, no puede gestionar la solicitud en este momento. Hay varias razones posibles para esto, desde una sobrecarga temporal hasta la pérdida de la conexión con el proveedor.
Si te ha aparecido el error en una respuesta de la API que no sea «Crear reserva» o «Cancelar reserva», y no se conoce ningún problema de rendimiento, vuelve a intentar la solicitud más tarde. Puede que incluya un encabezado Retry-After para indicar el retardo mínimo (en segundos) antes de volver a intentarlo.
Si has recibido un error en la respuesta de la API al crear una reserva:
- El enlace de reserva que aparece en la respuesta anterior de «Comprobación de precios» (API de alojamiento) o «Detalles del vuelo» (API de vuelos) caduca al cabo de poco tiempo. Si, tras el primer intento, se te muestra un error HTTP 503, es probable que el enlace haya caducado. Deberás obtener un nuevo enlace y realizar un nuevo intento de reserva.
- Si recibes un 503 en el segundo intento, espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de recuperación utilizando el mismo
affiliate_reference_idque se envió con la reserva. - Si no se ha encontrado ninguna reserva o sigues recibiendo el error 503, vuelve a intentar hacer la reserva más tarde.
Si te ha aparecido el error en la respuesta de la API al cancelar una reserva:
- Espera 90 segundos y, a continuación, comprueba el estado de la reserva con una solicitud de Itinerary Retrieve utilizando el
itinerary_idconocido. - Si la reserva no se cancela o sigues recibiendo el error 503, vuelve a intentar la solicitud de cancelación más tarde.
Ejemplo de respuesta:
{
"type": "service_unavailable",
"message": "This service is currently unavailable."
}504 - Gateway Time Out
El error HTTP 504 no suele provenir del servidor Rapid API, sino más bien de la infraestructura en la nube o de perímetro, e indica que algún componente de la infraestructura de red (como el equilibrador de carga) ha fallado durante la transacción. Normalmente es algo pasajero.
Nota: Puede que se produzca un tiempo de espera antes o después de crear el itinerario, así que comprueba siempre si se ha creado.
Las respuestas de error HTTP 504 (y 502) están en formato HTML, en lugar del par «tipo/objeto de mensaje» de JSON que se utiliza en Rapid API's. Esto es otro indicio de que estos errores no los genera Rapid API.
Ejemplo de respuesta:
<html>
<head><title>504 Gateway Time-out</title></head>
<body>
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>Tasa umbral de respuestas erróneas
Para establecer tus propios valores umbral, deberías medir la tasa diaria de los siguientes códigos de respuesta: 409, 410, 500, 503 y 504. Si se supera el límite, ponte en contacto con el servicio de asistencia de Rapid API.
Expedia Group No hay unos valores límite fijos, ya que varían en función del mercado de tu organización, además de otros factores. Conocer el mercado es fundamental para averiguar por qué se producen algunos mensajes de error. Nuestra recomendación es que contéis con que entre el 5 % y el 6 % de las llamadas para hacer reservas puedan fallar con un error de código 50x en un periodo diario o semanal.
Con el tiempo, deberías ser capaz de calcular tus propios valores umbral. No te fijes solo en un aumento repentino en el número diario de errores; aunque el límite esté fijado en 5 al día, recibir dos errores 500 con menos de 5 minutos de diferencia, por ejemplo, puede ser motivo para ponerte en contacto con el servicio de asistencia de Rapid API.
Registros
Si el servicio de asistencia de Rapid API te pide los registros de solicitud y respuesta, intenta facilitar lo siguiente:
- El valor
Transaction-Iddel encabezado de respuesta de la API. Esto es fundamental para investigar a fondo el caso. - Los registros de solicitudes y respuestas de la API. Los registros de solicitudes deben incluir la URL completa del punto de conexión utilizado. Los registros de respuestas deben incluir el código HTTP devuelto, los datos completos de las respuestas y cualquier encabezado que se haya devuelto.
- La solicitud de la API de disponibilidad con el parámetro
point_of_sale, así como la respuesta de disponibilidad. Esto permitirá al servicio de asistencia identificar la cuenta y el perfil de Rapid API que se están utilizando. - Encabezado de solicitud de la API de reservas y encabezado de autorización (con APIKey, firma y marca de tiempo) para cada solicitud de reserva.
- La URL de la solicitud de reserva y el token que aparecen en los registros de solicitudes.
- La recuperación de itinerario emitida después de una llamada de la API de reserva, independientemente de si dicha llamada se ha realizado correctamente.
Incluye también la solicitud y la respuesta JSON completas. Una cadena JSON debe tener el formato « double-quoted, », así que no hace falta incluir el carácter de escape «\» delante del carácter « double-quote ».
| Código JSON correcto | Código JSON incorrecto |
|---|---|
json "id": "208646250", "status": "available", | json\"id\": \"208646250\", \"status\": \"available\", |
Usa el carácter de escape «barra invertida» delante de una comilla doble solo cuando necesites que la comilla doble forme parte de la cadena.
Ejemplo de respuesta:
"spokenwords": "He said "hello world""Nota: No conviertas los registros a formato PDF. Expedia Group El equipo de soporte a veces copia y pega datos de registro en herramientas internas, y el formato PDF añade caracteres de línea innecesarios a los datos.


