Da de alta los cuatro tipos de entidad de tu cuenta
Los endpoints no aceptan texto libre: aceptan tus identificadores. Antes de poder preguntarle nada a Veetal tienes que decirle qué vigilar — un hotel, un destino, un mercado filtrado, una ruta. Cuatro asistentes, uno de cada, y las trampas que esconde cada uno.

Qué vas a construir
Un alojamiento con sus perfiles de OTA resueltos, una ubicación, una búsqueda de ubicación con los filtros que definen tu conjunto competitivo y una ruta de vuelo — más los endpoints de account que hacen lo mismo desde código.
Cómo funciona
- 01Qué es una entidad y por qué hay cuatro
- 02Alojamiento — el hotel
- 03Ubicación — el destino
- 04Búsqueda de ubicación — el destino, filtrado
- 05Vuelo — la ruta
- 06Lo mismo por API
- 07Qué pasa después
Paso a paso
Al terminar tendrás una de cada uno de los cuatro tipos de entidad en tu cuenta —un alojamiento, una ubicación, una búsqueda de ubicación y un vuelo—, que es lo que te pide cualquier endpoint Feed o Real Time para saber sobre qué trabajar.
Qué necesitas: una API key de Veetal. Nada más: los endpoints de account son gratis y funcionan con cualquier key.
Lo que cuesta: nada en el dashboard. Dar de alta entidades es gratis, y también la resolución contra Booking y la búsqueda de perfiles en OTAs que hacen los asistentes mientras las creas: solo pagas cuando pides datos sobre ellas. Por API, dos de esas consultas son peticiones aparte; la sección de API, al final, dice cuáles.
Qué es una entidad y por qué hay cuatro
Una entidad es algo que le has dicho a Veetal que vigile. Los endpoints no aceptan texto libre: aceptan tus identificadores. Cuál necesitas depende de la pregunta:
| Tipo | Responde | Lo usan |
|---|---|---|
| Alojamiento | un hotel: sus tarifas, disponibilidad, reputación, reseñas, paridad | casi todos los endpoints Real Time y los datasets Feed de alojamiento |
| Ubicación | un destino entero: qué está pasando allí | los feeds de eventos y festivos |
| Búsqueda de ubicación | un destino filtrado en un conjunto competitivo: quién está a la venta y a qué precio | el feed de Booking location search, el de demanda de mercado y la búsqueda de ubicación real-time |
| Vuelo | una ruta: cuánto cuesta volar hasta allí | el feed de tarifas de vuelo (las tarifas de vuelo real-time reciben los aeropuertos directamente) |
Los cuatro viven en Mi organización, cada uno en su pestaña, y los cuatro se pueden crear también desde el botón + de la cabecera. Si abres el asistente desde la página de una API, añade un paso final para meter la entidad nueva directamente en los schedules de esa API.
1. Alojamiento — el hotel
En la pestaña Accommodations, Add accommodations. El asistente abre con tres caminos:

Search Booking accommodation es el habitual. I have accommodation Booking URL sirve cuando la búsqueda es ambigua y ya tienes la ficha abierta. Import accommodations from .csv/.xls file es la vía masiva.
Busca por nombre. Los resultados traen la foto y la ciudad del hotel, y los que ya tienes en la cuenta salen en gris y marcados It's yours, lo que te ahorra el duplicado:

Si no aparece nada, usa menos palabras: la búsqueda casa contra Booking por aproximación, no por tu cadena exacta.
Elige uno y Continue. Veetal resuelve la ficha de verdad y te enseña lo que ha encontrado —estrellas, nota de los huéspedes, número de reseñas, dirección— más Profiles Found: en qué OTAs tiene ficha ese hotel realmente.

En este ejemplo aparecieron Booking, Tripadvisor y Google; Expedia y Hotels.com no. Eso importa después: una OTA sin ficha no tiene nada que importar, y el feed de reputación solo devolverá las del tick verde. Repeat search profiles relanza la detección si crees que se ha dejado alguna, y View Profile abre la ficha con la que ha casado para que compruebes que es el hotel correcto.
Add accommodation y el hotel entra en el listado de la pestaña Accommodations. Su columna SETUP es ese mismo mapa de perfiles, una insignia por OTA; aquí, en otros hoteles de la cuenta:

Un detalle que conviene saber: el slug que asigna Veetal sale de la URL de Booking, no del nombre. "Ohla Barcelona" se quedó en ohla. El slug es lo que piden todos los endpoints, así que cópialo de la fila en vez de deducirlo.
2. Ubicación — el destino
Pestaña Locations, Add locations. El propio diálogo dice para qué es: "You will use them to search events in the destination".
Busca el destino y verás por qué existe este paso:

Cuatro Barcelonas —España, Venezuela, Colombia, Filipinas—, cada una con sus coordenadas y un Show Map para comprobarlo. Elige la que no es y todos los eventos que leas después serán de otra ciudad.
Add location y la fila aparece con su tipo —aquí Tier 1— y sus coordenadas:

3. Búsqueda de ubicación — el destino, filtrado
Pestaña Location searches, Add location searches. El buscador es más rico que el de ubicaciones: además de la ciudad ofrece barrios, el aeropuerto, la provincia y recintos como la Fira, porque un "mercado" puede ser cualquiera de esas cosas.
El segundo paso es la razón de ser de esta entidad: los filtros.

País, moneda e idioma (cambian los precios que enseña Booking), régimen, estrellas, tipo de alojamiento y, más abajo, distancia al centro, puntuación mínima, cancelación gratuita, pet friendly, noches, adultos, niños, bebés y habitaciones.
Esos filtros son la entidad. Definen qué hoteles entran en la búsqueda —tu universo competitivo—. No cambian el precio: cada ejecución del feed se cobra por búsqueda de ubicación y por noche, entren los hoteles que entren. El ejemplo de aquí son hoteles de 4 y 5 estrellas en Barcelona, una noche, dos adultos. Add location search, y la fila te devuelve los filtros como chips:

4. Vuelo — la ruta
Pestaña Flights, Add flights. Es la más autocontenida de las cuatro: los aeropuertos se resuelven en local, así que funciona incluso cuando las OTAs no.
Escribe una ciudad y te salen sus aeropuertos con su código IATA. Londres da siete —seis alrededor de Londres y uno en London, Ontario (YXU)—, así que mira el país antes de elegir:

Después el tipo de viaje, las fechas, los pasajeros y dos campos obligatorios que es fácil pasar por alto: LANGUAGE y COUNTRY. Son el punto de venta —el mercado cuyos precios quieres—, no la ruta. Deja uno vacío y el campo se pone en rojo con This field is required y Add flight sigue deshabilitado.

Un Round trip pide un rango de fechas; One way se conforma con una.
Lo mismo por API
Los cuatro tienen su endpoint de account, pero cada uno pide su propio body:
| Endpoint | Body |
|---|---|
POST /v3/account/accommodation | booking_url, la ficha de Booking |
POST /v3/account/location | booking_dest_id y name |
POST /v3/account/location-search | booking_dest_id, name y los filtros |
POST /v3/account/flight | origin_airport, destination_airport, departure_date, más language y country |
Un GET a esas mismas rutas lista lo que tienes. Las ubicaciones, las búsquedas de ubicación y los vuelos responden { data: [...], pagination }. Los alojamientos responden un objeto con el slug como clave —el slug que piden los endpoints de datos— y solo con tus hoteles activos: los desactivados y los competidores no salen, y un hotel sin slug va con su id como clave.
Tres cosas que los asistentes hacen por ti y que aquí haces tú:
- Los perfiles de OTA. Crear un hotel con su URL de Booking solo resuelve Booking. La búsqueda de sus otros perfiles es
POST /v3/account/accommodation/{accommodation_id}/otas, y se cobra por lo que encuentra: la parte proporcional a las OTAs que rellena, como mucho lo que cuesta una petición Real Time, y nada si no encuentra ninguna.force_otas(por ejemplo["expedia"]) vuelve a buscar las que ya tienen id. - El id del destino.
booking_dest_ides elbooking_idque devuelveGET /v3/real-time/booking/search/{type}/{name}, y esa búsqueda es una petición Real Time. Una ubicación aceptacity,region,countryodistrict; una búsqueda de ubicación acepta ademáslandmarkyairport. Cualquier otro tipo responde con el error732. Elnameno se compara con el de Booking: se busca en Booking, y el id del destino tiene que salir entre los resultados. Si mandas el nombre que devolvió la búsqueda, sale; con un nombre tuyo puede no salir y fallar con el error731. - El punto de venta.
languageycountryson opcionales aquí. Un vuelo creado sin ellos se guarda comoes/ES—tarifas de España— sin avisar. Mándalos.
Qué pasa después
Las entidades por sí solas no traen nada. A partir de aquí el camino se bifurca: un endpoint Real Time te responde sobre ellas al momento, petición a petición; un dataset Feed necesita que antes haya corrido un import, que se programa como schedule en la página de esa API. Cada fila tiene además activar, desactivar y borrar, y los checkboxes te dan esas tres acciones en masa — una entidad desactivada deja de importarse, y lo que escribieron los imports anteriores sigue legible hasta que caduca (las tarifas, la paridad, la reputación, las búsquedas de ubicación y los vuelos se guardan 15 días; las reseñas, los eventos y la demanda de mercado no se borran).
Preguntas
¿Dar de alta una entidad gasta créditos?
No. Crear, editar, activar y borrar entidades es gratis, y también la resolución contra Booking y la búsqueda de perfiles en OTAs que hace el dashboard mientras las creas. Empiezas a pagar cuando pides datos: una petición real-time, o un import del feed corriendo sobre la entidad. Por API, dos consultas son peticiones aparte: la búsqueda de perfiles en OTAs de un hotel y la búsqueda del destino que te da el booking_dest_id.
El hotel que quiero no sale en la búsqueda
Usa menos palabras. La búsqueda casa contra Booking por aproximación, y los nombres oficiales largos ("G.L Monumento", "by Meliá") suelen romper la coincidencia. Si aun así no aparece, abre la ficha en Booking y usa el segundo camino, "I have accommodation Booking URL", que acepta la URL directamente.
Dos OTAs han salido como Profile Not Found. ¿Es un problema?
Solo significa que el hotel no tiene ficha ahí, o que la coincidencia automática no ha tenido confianza suficiente. No se rompe nada: esas OTAs simplemente no tienen nada que importar, y los feeds de reputación y tarifas devolverán las que sí se encontraron. "Repeat search profiles" lo reintenta, y "View Profile" te deja comprobar que las encontradas son el hotel correcto.
¿Qué diferencia hay entre una ubicación y una búsqueda de ubicación?
Una ubicación es el destino entero y alimenta los datasets de eventos y festivos. Una búsqueda de ubicación es el destino más unos filtros —estrellas, tipo de alojamiento, régimen, ocupación— y alimenta los datasets de tarifas y de mercado. Si tu pregunta es "qué está pasando en esta ciudad", es una ubicación. Si es "quién está a la venta aquí y a qué precio", es una búsqueda de ubicación.
¿Por qué mi vuelo me pide idioma y país?
Porque una tarifa no es un número único: depende de dónde se venda. Idioma y país son el punto de venta y cambian los precios que recibes. Hablan del mercado en el que vendes, no de la ruta. El dashboard los exige; la API no, y un vuelo creado por API sin ellos se guarda como es / ES, el punto de venta de España.
¿Puedo crear todo esto por API en vez de a mano?
Sí. Los cuatro tipos tienen POST, PUT, DELETE y GET bajo /v3/account. El dashboard es más rápido para los primeros y para todo aquello en lo que quieras ver qué ha resuelto Booking antes de confirmar; la API es lo que quieres para el alta masiva y para mantener tus entidades sincronizadas con tu propio sistema.
Construye el tuyo
Empieza gratis con 1.000 créditos de API. Sin tarjeta ni llamada comercial.
¿Qué quieres construir con detalle de hotel?
Dilo en una línea y te devolvemos el prompt, la receta si ya existe y las APIs sobre las que corre, empezando por detalle de hotel.