YourVisa Travel Visa MCP
Servidor MCP remoto de solo lectura que permite a los asistentes de IA consultar requisitos y tarifas de visas, eVisa, ETA y ESTA por país, y obtener enlaces oficiales de solicitud. Se requiere clave de API.
Servidor MCP alojado
npx add-mcp 'https://mcp.yourvisa.ai/api/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Base URL:
https://api.yourvisa.ai
¿Estás creando un asistente de viajes o inmigración impulsado por IA? Lee nuestra historia sobre cómo un servidor MCP de Travel Visa evitó que el chatbot de una agencia diera respuestas incorrectas sobre visados, y nuestro análisis técnico sobre Integración de servidores MCP para documentación de viajes en e-visa, ETA y ETIAS.
Bienvenido a la documentación de YourVisa.ai
Esta documentación completa de la API te guiará en la integración de nuestros servicios de visados en tu aplicación. Tanto si eres principiante como desarrollador experimentado, encontrarás todo lo que necesitas para empezar.
Rápido y Fiable
Tiempos de respuesta rápidos con garantía de disponibilidad del 99,9%
Seguro
Seguridad de nivel empresarial con autenticación OAuth 2.0
Bien Documentado
Ejemplos claros y explicaciones detalladas para cada endpoint
Guía de Inicio Rápido
1
Obtén tus Credenciales de API
Regístrate para obtener una cuenta y genera tu clave y secreto de API de producción y/o sandbox desde el panel de control.
Key: your-api-key Secret: your-api-secret
Genera un Token de Acceso
Envía tu clave y secreto mediante POST para obtener un token bearer. La respuesta incluye agencyId e isApiSandbox (true para credenciales sandbox, false para producción). No envíes un campo de entorno: se deduce de qué credenciales coinciden.
curl -X POST "https://api.yourvisa.ai/unprotected/generate-programmatic-token" -H "Content-Type: application/json" -d '{"key": "your-api-key","secret": "your-api-secret"}'
Realiza tu Primera Llamada a la API
Usa el token para autenticar tus solicitudes a los endpoints protegidos.
curl -X GET "https://api.yourvisa.ai/agents-api/get-products-from-countries?from=IL&to=IN" -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
URL Base
Todas las solicitudes a la API deben realizarse a la siguiente URL base:
https://api.yourvisa.ai
Autenticación
La mayoría de los endpoints requieren autenticación mediante un token Bearer. Incluye el token en el encabezado Authorization de tus solicitudes:
Authorization: Bearer YOUR_ACCESS_TOKEN
Importante: Mantén tus credenciales de API seguras. Nunca las expongas en código del lado del cliente ni en repositorios públicos. Usa credenciales sandbox para pruebas de integración; los tokens sandbox marcan las reservas como de prueba y omiten los cargos de saldo.
Manejo de Errores
La API utiliza códigos de estado HTTP estándar para indicar éxito o fracaso:
- 200Éxito - Solicitud completada correctamente
- 400Solicitud Incorrecta - Parámetros inválidos o campos obligatorios faltantes
- 401No Autorizado - Token de acceso inválido o caducado
- 404No Encontrado - Recurso no encontrado
- 500Error Interno del Servidor - Algo salió mal en nuestro lado
¿Necesitas Ayuda?
Si tienes preguntas o necesitas asistencia, no dudes en contactarnos:
- Correo electrónico:api-support@yourvisa.ai
post /unprotected/generate-programmatic-token
Generar token programático
Intercambia una clave y secreto de API de Agents por un token de acceso JWT (válido durante 12 horas). Envía credenciales de producción o sandbox: el entorno se deduce de qué clave coincide en la base de datos. No envíes un campo de entorno. Cuando coinciden credenciales sandbox, la respuesta incluye isApiSandbox: true y el JWT lleva la misma marca para que las reservas creadas con ese token se marquen como de prueba.
Cuerpo de la Solicitud
Esquema: GenerateProgrammaticToken
key Obligatoriostring
Clave de API de producción o sandbox
secret Obligatoriostring
Secreto de API de producción o sandbox correspondiente
Respuestas
200 Respuesta exitosa
Esquema: GenerateProgrammaticTokenResponse
success boolean
Predeterminado: true
token string
Token de acceso JWT válido durante 12 horas
agencyId string
ID de la agencia asociada a las credenciales de API
isApiSandbox boolean
true cuando la clave/secreto proporcionados son credenciales sandbox; false para producción. Los tokens sandbox marcan las reservas creadas mediante la API de Agents como de prueba y omiten los cargos de saldo.
Ejemplo false
400 Solicitud incorrecta
Esquema: GenerateProgrammaticTokenBadRequest
success boolean
Predeterminado: false
message string
Valores posibles:
Faltan camposEl usuario con acceso programático no existe
404 No encontrado
500 Error interno del servidor
Pruébalo
curl -X POST "https://api.yourvisa.ai/unprotected/generate-programmatic-token" \
-H "Content-Type: application/json" \
-d '{
"key": "string",
"secret": "string"
}'
get /agents-api/get-products-from-countries?from={from}&to={to}
Obtener productos de países
Requiere Autenticación (Token Bearer)
Parámetros
from Obligatoriopathstring
País de origen
to Obligatoriopathstring
País de destino
currency pathstring
Moneda de visualización opcional (código ISO 4217 compatible). Cuando se proporciona, cada producto paymentDetails incluye displayPricing con montos convertidos.
Valores posibles:
AUD BRL CAD CHF CNY CZK DKK EGP ETB EUR GBP GHS HKD HUF IDR ILS INR ISK JPY KES KRW MAD MXN MYR NGN NOK NZD PHP PLN RON SEK SGD THB TND TRY TZS UGX USD XAF XOF ZAR
Country codes string
AF, AX, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, KH, CM, CA, CV, KY, CF, TD, CL, CN, CX, CC, CO, KM, CG, CK, CR, CI, HR, CU, CW, CY, CZ, CD, DK, DJ, DM, DO, TL, EC, EG, SV, GQ, ER, EE, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, XK, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MK, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, KP, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, RE, RO, RU, RW, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, KR, SS, ES, LK, SD, SR, SJ, SZ, SE, CH, SY, TW, TJ, TZ, TH, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, VG, UA, AE, GB, US, UM, UY, VI, UZ, VU, VA, VE, VN, WF, EH, YE, ZM, ZW
Tipos de Respuesta
Tipo de respuesta - Obtener productos de países
Respuestas
200 Respuesta exitosa
Esquema: GetProductsFromCountriesSupportedResponse
success boolean
Predeterminado: true
products array
Matriz de objeto(click para ver propiedades)
400 Solicitud incorrecta
Esquema: GetProductsFromCountriesBadRequest
success boolean
Predeterminado: false
message string
Valores posibles:
El país de origen (from) o el país de destino (to) no se proporcionaEl código de país (from o to) no es válidoEl código de moneda no es válido. Valores compatibles: AUD, BRL, CAD, CHF, CNY, CZK, DKK, EGP, ETB, EUR, GBP, GHS, HKD, HUF, IDR, ILS, INR, ISK, JPY, KES, KRW, MAD, MXN, MYR, NGN, NOK, NZD, PHP, PLN, RON, SEK, SGD, THB, TND, TRY, TZS, UGX, USD, XAF, XOF, ZAR
401 No Autorizado
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha caducado
404 No encontrado
500 Error interno del servidor
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/get-products-from-countries?from={from}&to={to}" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
get /agents-api/get-supported-destinations?from={from}
Obtener códigos de países de destino compatibles
Devuelve códigos de país de destino ISO 3166-1 alfa-2 distintos que tienen productos de visado con isSupportedVisa true para el país de origen dado. El país de origen nunca se incluye como destino.
Requiere Autenticación (Token Bearer)
Parámetros
from Obligatoriopathstring
País de origen
Respuestas
200 Respuesta exitosa
Esquema: GetSupportedDestinationsResponse
success boolean
Predeterminado: true
countryCodes array
Matriz de string
400 Solicitud incorrecta
Esquema: GetSupportedDestinationsBadRequest
success boolean
Predeterminado: false
message string
Valores posibles:
El país de origen (from) no se proporcionaEl código de país (from) no es válido
401 No Autorizado
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha caducado
500 Error interno del servidor
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/get-supported-destinations?from={from}" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
get /agents-api/get-specific-product-details?productId=66a9ebe9572eb2904562c3ad
Obtener detalles de un producto específico
Requiere Autenticación (Token Bearer)
Parámetros
productId Obligatoriopathstring
ID del producto
Respuestas
200 Respuesta exitosa
Esquema: GetSpecificProductDetailsResponse
success boolean
Predeterminado: true
productInputDetails array
Matriz de objeto(click para ver propiedades)
productDetails object
400 Solicitud incorrecta
Esquema: GetSpecificProductDetailsBadRequest
success boolean
Predeterminado: false
message string
401 No Autorizado
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha caducado
404 No encontrado
500 Error interno del servidor
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/get-specific-product-details?productId=66a9ebe9572eb2904562c3ad" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
post /agents-api/commit-new-visa
Crear un nuevo producto de visado reservado
Confirma una nueva reserva de visado con los datos del cliente mediante la API. La combinación isPaidByCustomer=true con isFilledByCustomer=false (el cliente paga, la agencia completa) no es compatible y devuelve 400. Cuando se proporciona corporateIdForCharging, la reserva es pagada por la organización y se factura a esa corporación (saldo rotativo o back-to-back según la configuración de facturación corporativa). La agencia debe tener isAllowedToChargeCorporatesViaApi habilitado por el administrador de YourVisa.ai. Si el token Bearer se emitió con credenciales de API sandbox (isApiSandbox: true desde POST /unprotected/generate-programmatic-token), la reserva se marca automáticamente como visado de prueba y se omiten los cargos de saldo.
Requiere Autenticación (Token Bearer)
Cuerpo de la Solicitud
Esquema: CommitNewVisaRequest
productId Obligatoriostring
El ID del producto de visado
isPaidByCustomer boolean
Si el cliente pagará (true) o el agente pagará (false). No puede ser true cuando isFilledByCustomer es false.
isFilledByCustomer boolean
Si el cliente completará el formulario (true) o el agente lo completará (false). No puede ser false cuando isPaidByCustomer es true.
customerFirstName Obligatoriostring
Nombre del cliente
customerLastName Obligatoriostring
Apellido del cliente
customerEmail Obligatoriostring
Dirección de correo electrónico del cliente
voucherInvoiceNumber string
Referencia opcional de vale o factura almacenada con la reserva
Ejemplo "INV-2026-001"
travelFileNumber string
Número de archivo de viaje opcional de Travel CRM vinculado a esta reserva
Ejemplo "1252813"
messageForTraveler string
Mensaje opcional incluido en el correo electrónico de solicitud del viajero cuando isFilledByCustomer es true. Solo letras, números, espacios y puntuación básica (.,!? ' -).
Ejemplo "Please complete the form and upload a clear passport scan."
preferredLanguage string
Código de idioma opcional para correos electrónicos dirigidos al viajero: en (inglés, predeterminado), de (alemán), es (español), ru (ruso), he (hebreo), ar (árabe), fr (francés)
Valores posibles:
endeesruhearfr
corporateIdForCharging string
ID corporativo opcional para facturar esta reserva en lugar del saldo de la agencia. Requiere que la agencia tenga isAllowedToChargeCorporatesViaApi, que la corporación pertenezca a la agencia y que la corporación tenga una configuración de pago válida (tarjeta guardada para back-to-back, o recarga automática con tarjeta guardada para saldo rotativo). Cuando se establece, isPaidByCustomer se trata como false y el correo electrónico del viajero se agrega a la lista blanca corporativa.
Ejemplo "66a9ebe9572eb2904562c3ae"
customKeys object
Pares clave-valor personalizados opcionales para seguimiento o metadatos (máximo 5 claves). Ejemplo: {"customKey1": "customKey1 value", "customKey2": "customKey2 value", "customKey3": "customKey3 value", "customKey4": "customKey4 value", "customKey5": "customKey5 value"}
Respuestas
201 Producto reservado creado exitosamente
Esquema: CommitNewVisaResponse
success boolean
Ejemplo true
bookedProductId string
Ejemplo "66a9ebe9572eb2904562c3ae"
isPaymentTest boolean
true cuando la reserva se creó como visa de prueba (credenciales de API de sandbox o modo de prueba de integración de agencia/corporativo). Las reservas de prueba omiten los cargos de saldo.
Ejemplo false
message string
Ejemplo "Visa booking created successfully"
400 Solicitud incorrecta - error de validación
Esquema: CommitNewVisaBadRequest
success boolean
message string
401 No autorizado - token inválido o faltante
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha expirado
403 Prohibido - la agencia no tiene permitido crear reservas pagadas por la agencia
Esquema: CommitNewVisaForbidden
success boolean
message string
Ejemplo "Your agency is not allowed to create agent-paid bookings"
404 Producto o agencia no encontrado
Esquema: CommitNewVisaNotFound
success boolean
message string
Pruébalo
curl -X POST "https://api.yourvisa.ai/agents-api/commit-new-visa" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"productId": "string",
"isPaidByCustomer": true,
"isFilledByCustomer": true,
"customerFirstName": "string",
"customerLastName": "string",
"customerEmail": "string",
"voucherInvoiceNumber": "string",
"travelFileNumber": "string",
"messageForTraveler": "string",
"preferredLanguage": "en",
"corporateIdForCharging": "string",
"customKeys": {
"customKey1": "customKey1 value",
"customKey2": "customKey2 value",
"customKey3": "customKey3 value",
"customKey4": "customKey4 value",
"customKey5": "customKey5 value"
}
}'
post /agents-api/get-application-link
Generar enlace de solicitud para una reserva existente
Genera una URL de solicitud con token incorporado para un producto ya reservado. Úsalo después de crear una reserva mediante POST /agents-api/commit-new-visa, o después de recibir un bookedProductId desde una transferencia de pago instantáneo. Establece isIframe en true (predeterminado) para una URL compatible con iframe, o false para la URL regular del asistente de visa. Nota: este enlace solo es válido para solicitudes de visa que aún no se han enviado. El entorno se infiere del token Bearer: los tokens de sandbox solo pueden generar enlaces para reservas de prueba; los tokens de producción solo pueden generar enlaces para reservas que no son de prueba.
Requiere Autenticación (Token Bearer)
Cuerpo de la Solicitud
Esquema: GetApplicationLinkRequest
bookedProductId Requeridostring
El ID del producto reservado existente. Puede provenir de POST /agents-api/commit-new-visa o de una URL de retorno de pago instantáneo del socio.
langKey string
Preferencia de idioma opcional para el formulario de solicitud: en (inglés, predeterminado), de (alemán), es (español), ru (ruso), he (hebreo), ar (árabe), fr (francés)
Valores posibles:
endeesruhearfr
isIframe boolean
Si se genera una URL de iframe (true, predeterminado) que apunta a /iframe/visa-wizard, o una URL regular (false) que apunta a /visa-wizard
Predeterminado:
Respuestas
200 Enlace de solicitud generado exitosamente
Esquema: GetApplicationLinkResponse
success boolean
Ejemplo true
bookedProductId string
El ID del producto reservado
Ejemplo "66a9ebe9572eb2904562c3ae"
applicationUrl string
La URL completa incluido el dominio base.
Con isIframe=true (predeterminado): https://www.yourvisa.ai/iframe/visa-wizard?productId=...&token=...
Con isIframe=false: https://www.yourvisa.ai/visa-wizard?productId=...&token=...
Ejemplo "https://www.yourvisa.ai/iframe/visa-wizard?productId=66a9ebe9572eb2904562c3ad&token=eyJhbGc..."
path string
La parte de ruta y consulta de la URL (todo después del dominio base).
Con isIframe=true (predeterminado): /iframe/visa-wizard?productId=...&token=...
Con isIframe=false: /visa-wizard?productId=...&token=...
Ejemplo "/iframe/visa-wizard?productId=66a9ebe9572eb2904562c3ad&token=eyJhbGc..."
message string
Ejemplo "Application link generated successfully"
400 Solicitud incorrecta - error de validación
Esquema: GetApplicationLinkBadRequest
success boolean
message string
Valores posibles:
Faltan campos requeridosID de producto reservado inválidoID de agencia inválido
401 No autorizado - token inválido o faltante
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha expirado
403 Prohibido - la reserva no pertenece a tu agencia
Esquema: GetApplicationLinkForbidden
success boolean
message string
Valores posibles:
La reserva no pertenece a tu agencia
404 Producto reservado o agencia no encontrado
Esquema: GetApplicationLinkNotFound
success boolean
message string
Valores posibles:
Producto reservado no encontradoAgencia no encontrada
Pruébalo
curl -X POST "https://api.yourvisa.ai/agents-api/get-application-link" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"bookedProductId": "string",
"langKey": "en",
"isIframe": true
}'
get /agents-api/get-products-history
Obtener historial de productos
Devuelve productos reservados para la agencia autenticada. Los filtros opcionales se combinan con AND. Los campos de viajero consultan applicantDetails en cada reserva. Cada elemento incluye paymentDetails (costos de visa y quién paga). Si el administrador de YourVisa habilita el intercambio de datos de solicitantes para la agencia, cada elemento también incluye applicantDetails completos y URL de descarga con límite de tiempo para applicantUploads. Las URL de descarga expiran después de 5 minutos y se pueden obtener con una solicitud HTTPS GET normal. Los resultados se ordenan por dateCreated descendente (más recientes primero). Se devuelven como máximo 100 elementos. El entorno se infiere del token Bearer: los tokens de sandbox (isApiSandbox: true de generate-programmatic-token) devuelven solo reservas de prueba; los tokens de producción devuelven solo reservas que no son de prueba.
Requiere Autenticación (Token Bearer)
Parámetros
dateStart querystring
Límite inferior opcional en dateCreated de la reserva (fecha ISO o fecha-hora). Omítelo con dateEnd para dejar el rango abierto en el lado inferior.
dateEnd querystring
Límite superior opcional en dateCreated de la reserva (fecha ISO o fecha-hora). Omítelo con dateStart para dejar el rango abierto en el lado superior.
bookedProductId querystring
ObjectId de MongoDB del producto reservado (hex de 24 caracteres)
statusCode query
Filtro de estado de reserva orientado a la agencia (mismos valores que status en cada elemento).
Valores posibles:
waitingForTravelerToFill pleaseFillVisaDetails wereProcessingYourVisa missingVisaDetails waitingForTravelerResponse handledByOurTeam governmentReviewing applicationNotApproved fraudFlagged visaProcessFinished refundInProgress refundCompleted
fromCountry querystring
País de origen en la reserva (coincidencia exacta sin distinción de mayúsculas)
toCountry querystring
País de destino en la reserva (coincidencia exacta sin distinción de mayúsculas)
visaType querystring
Tipo de visa en la reserva (coincidencia exacta sin distinción de mayúsculas)
firstName querystring
Coincidencia de subcadena en applicantDetails.firstName (sin distinción de mayúsculas)
lastName querystring
Coincidencia de subcadena en applicantDetails.lastName (sin distinción de mayúsculas)
email querystring
Coincidencia de subcadena en applicantDetails.email (sin distinción de mayúsculas)
customKey1 querystring
Coincidencia exacta en customKeys.customKey1. Úsalo para datos de seguimiento o búsqueda definidos por el socio.
customKey2 querystring
Coincidencia exacta en customKeys.customKey2. Recomendado para un ID de reserva externo del socio.
customKey3 querystring
Coincidencia exacta en customKeys.customKey3. Recomendado para un ID de viajero externo del socio.
customKey4 querystring
Coincidencia exacta en customKeys.customKey4. Recomendado para un ID de viaje externo del socio.
customKey5 querystring
Coincidencia exacta en customKeys.customKey5. Úsalo para contexto adicional del socio cuando sea necesario.
Respuestas
200 Respuesta exitosa
Esquema: GetHistoryOfProductsResponse
success boolean
Ejemplo true
message string
Presente cuando ninguna reserva coincide con los filtros (success sigue siendo true).
Ejemplo "There are no matching products"
bookedProducts array
Reservas más recientes primero; limitado a 100 elementos.
Array de objeto(clic para ver propiedades)
400 Solicitud incorrecta
Esquema: GetHistoryOfProductsBadRequest
success boolean
Predeterminado: false
message string
Los ejemplos incluyen dateStart/dateEnd inválidos, fecha de inicio posterior a la fecha de fin, bookedProductId inválido, statusCode inválido.
401 No autorizado
Esquema: Unauthorized
success boolean
Predeterminado: false
message string
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso inválidoTu token de acceso no es válido o ha expirado
404 No encontrado
500 Error interno del servidor
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/get-products-history" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
Pagos instantáneos: completa solicitudes dentro de tu plataforma
Usa este flujo cuando quieras que el viajero pague en YourVisa antes de la solicitud de visa completa, y luego regrese a tu plataforma para completar la solicitud dentro de un iframe de YourVisa.
Pago InstantáneoTu PlataformaIframe
Detalles
Paso 1: Verifica los productos de visa
Llama a GET /agents-api/get-products-from-countries?from={from}&to={to} para encontrar productos disponibles. Usa el productId seleccionado en la URL de entrada al checkout.
Paso 2: Inicia el checkout instantáneo
Envía al viajero a https://www.yourvisa.ai/instant-visa-checkout (independiente) o https://www.yourvisa.ai/iframe/instant-visa-checkout (integrado en tu sitio) con productId, affiliatedAgencyId, travelerClient, isInstantPayment=true, campos opcionales de prellenado del viajero y customKey1..5. productId se usa al entrar porque bookedProductId no existe hasta que el checkout crea la reserva.
Paso 2A: URL de checkout web
Paso 2A-iframe: URL de checkout web integrada
Paso 2B: URL de checkout de aplicación
Paso 2C: Parámetros de checkout
travelerClient es web o app. Usa web cuando el viajero comienza desde tu sitio web. Usa app cuando el viajero comienza desde tu aplicación móvil y el pago se abre en una pestaña de navegador externa. travelerFirstName, travelerLastName, travelerEmail y travelerPhone son campos opcionales de prellenado. customKey1..5 son tus campos de referencia, por ejemplo, ID de usuario externo, ID de pedido, ID de viajero, ID de viaje, campaña o fuente.
Paso 3: Después del pago
El comportamiento depende de la configuración de transferencia de pago instantáneo de tu agencia (configurada por YourVisa — contáctanos para habilitarla o cambiarla): • Continuar en YourVisa (predeterminado): el viajero continúa el asistente de visa en YourVisa. • Regresar al socio: el viajero ve una pantalla de pago completado en lugar de continuar en YourVisa. Si YourVisa configuró una URL de redirección de socio para tu agencia, se les envía allí después de una breve cuenta regresiva con bookedProductId, productId, paymentStatus=paid y cualquier customKey1..5 no vacío — tanto para travelerClient=web como para travelerClient=app. Si no se configura una URL de redirección, ven una pantalla de agradecimiento y regresan a tu aplicación o sitio web por su cuenta. Las integraciones de iframe reciben instant_payment_complete en la página principal cuando la transferencia al socio está habilitada. YourVisa también envía al viajero un correo de confirmación de pago recibido con la marca de tu agencia.
Paso 3A: Ejemplo de URL de retorno web
https://partner.example.com/visa/payment-complete?bookedProductId={bookedProductId}&productId={productId}&paymentStatus=paid&customKey1={externalUserId}&customKey2={externalBookingId}&customKey3={externalTravelerId} Las URL de redirección son configuradas por YourVisa para tu agencia — contacta al soporte para solicitar o actualizar la tuya.
Paso 3B: Búsqueda de reserva en la aplicación
Después de que el viajero regrese a tu aplicación, usa tus claves personalizadas originales para encontrar la reserva pagada. Ejemplo: GET /agents-api/get-products-history?customKey1={externalUserId}&customKey2={externalBookingId}. Los filtros usan coincidencia exacta, están limitados a tu agencia y se combinan con otros filtros opcionales usando lógica AND. Usa el bookedProducts[0]._id devuelto como bookedProductId.
Paso 4: Obtén el enlace de solicitud de iframe
Llama a POST /agents-api/get-application-link con {"bookedProductId": "66a9ebe9572eb2904562c3ae", "langKey": "en", "isIframe": true}. La respuesta incluye applicationUrl.
Paso 5: Integra el iframe
<iframe src="{applicationUrl}" width="100%" height="700" frameborder="0"></iframe>
Paso 6: Escucha la finalización
Después de que YourVisa envía la solicitud dentro del iframe, muestra un mensaje de Solicitud enviada y envía application_submitted a la página principal. Tu plataforma controla lo que sucede a continuación: mantener el iframe abierto, cerrarlo o reemplazarlo con tu propia pantalla de estado del viaje/solicitud.
Consejos para la implementación
- Valida siempre los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de ponerla en producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
get /agents-api/download-evisa-document
Descargar el documento eVisa de una reserva
Devuelve una URL prefirmada de corta duración para descargar el documento eVisa de un producto reservado. La reserva debe pertenecer a la agencia autenticada. Los agentes que no son gerentes solo pueden acceder a las reservas que ellos crearon. Devuelve 404 cuando la reserva aún no tiene un documento eVisa adjunto. El entorno se deduce del token Bearer: los tokens de sandbox solo pueden descargar eVisa para reservas de prueba; los tokens de producción solo pueden descargar eVisa para reservas que no son de prueba.
Requiere autenticación (token Bearer)
Parámetros
bookedProductId Requeridoquery string
ObjectId de MongoDB del producto reservado (hex de 24 caracteres)
Respuestas
200 URL prefirmada de descarga generada correctamente
Esquema: DownloadEvisaDocumentResponse
success booleano
Ejemplo true
data objeto
400 Solicitud incorrecta: falta bookedProductId o no es válido
Esquema: DownloadEvisaDocumentBadRequest
success booleano
Predeterminado: false
message cadena
Ejemplo "bookedProductId query parameter is required"
401 No autorizado: token no válido o faltante
Esquema: Unauthorized
success booleano
Predeterminado: false
message cadena
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso no válidoTu token de acceso no es válido o ha caducado
403 Prohibido: reserva no encontrada o acceso denegado
Esquema: DownloadEvisaDocumentForbidden
success booleano
Predeterminado: false
message cadena
Ejemplo "Booking not found or access denied"
404 No hay documento eVisa disponible para esta reserva
Esquema: DownloadEvisaDocumentNotFound
success booleano
Predeterminado: false
message cadena
Ejemplo "No eVisa document available for this booking"
errorCode cadena
Valores posibles:
EVISA_DOCUMENT_NOT_AVAILABLEEVISA_DOCUMENT_FILE_NOT_FOUND
hasEvisaDocument booleano
false cuando la reserva aún no tiene eVisa adjunto; true cuando los metadatos existen pero el archivo falta
Ejemplo "false"
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/download-evisa-document" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
post /agents-api/create-corporate
Crear una cuenta corporativa conectada
Crea una corporación bajo tu agencia y tu identificador corporativo de socio. El identificador se almacena como affiliatePartnerCorporateKey y se puede usar con corporateIdentifier en otros endpoints corporativos. La persona de contacto que proporciones también se crea como gerente corporativo.
Requiere autenticación (token Bearer)
Cuerpo de la solicitud
Esquema: CreateCorporateRequest
corporateName Requeridocadena
partnerCorporateIdentifier Requeridocadena
Identificador corporativo propiedad del socio, único dentro de tu agencia
contact Requeridoobjeto
Contacto principal que también se crea como gerente corporativo
Respuestas
201 Corporación creada correctamente
Esquema: CreateCorporateResponse
success booleano
Ejemplo true
corporateId cadena
partnerCorporateIdentifier cadena
400 Error de validación
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
401 No autorizado
Esquema: Unauthorized
success booleano
Predeterminado: false
message cadena
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso no válidoTu token de acceso no es válido o ha caducado
409 El identificador corporativo del socio ya está en uso
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
Pruébalo
curl -X POST "https://api.yourvisa.ai/agents-api/create-corporate" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"corporateName": "string",
"partnerCorporateIdentifier": "string",
"contact": {}
}'
get /agents-api/get-corporates
Listar corporaciones de la agencia
Lista las corporaciones de la agencia autenticada. Los filtros opcionales son parámetros de consulta (sin cuerpo de solicitud). Hasta 100 resultados por página, ordenados de más reciente a más antiguo. hasPaymentMethod es true cuando la corporación tiene configurada la facturación para pagar las reservas.
URL de solicitud de ejemplo
https://api.yourvisa.ai/agents-api/get-corporates?partnerCorporateIdentifier=acme-001&corporateName=Acme&page=1
Requiere autenticación (token Bearer)
Parámetros
corporateId query string
ObjectId de MongoDB de la corporación YourVisa
partnerCorporateIdentifier query string
Identificador corporativo propiedad del socio (coincidencia exacta)
corporateName query string
Coincidencia parcial de nombre sin distinguir mayúsculas/minúsculas
page queryentero
Número de página (predeterminado 1)
Respuestas
200 Corporaciones listadas correctamente
Esquema: GetCorporatesResponse
success booleano
Ejemplo true
corporates matriz
Matriz de objeto(click para ver propiedades)
page entero
pageSize entero
totalCount entero
totalPages entero
400 Error de validación
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
401 No autorizado
Esquema: Unauthorized
success booleano
Predeterminado: false
message cadena
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso no válidoTu token de acceso no es válido o ha caducado
Pruébalo
curl -X GET "https://api.yourvisa.ai/agents-api/get-corporates?partnerCorporateIdentifier=acme-001&corporateName=Acme&page=1" \
-H "Authorization: Bearer YOUR_TOKEN_HERE"
post /agents-api/create-corporate-payment-setup-link
Configuración del enlace de pago corporativo
Crea un enlace seguro para que el gerente corporativo agregue una tarjeta de crédito en una página alojada por YourVisa. El enlace caduca 12 horas después de su creación. corporateIdentifier acepta tanto el ObjectId corporativo de YourVisa como tu identificador corporativo de socio. Establece isEmbeddedInPartnerPage en true al incrustar la página de configuración en tu propio sitio mediante iframe o WebView móvil: la URL devuelta apunta a /iframe/corporate-payment-setup/{token}, un diseño sin barra de navegación que muestra el logotipo de YourVisa.ai y enlaces de políticas legales. El gerente debe aceptar los términos de YourVisa.ai antes de guardar una tarjeta. Después de que el gerente guarde una tarjeta, la página incrustada emite un evento de host corporate_payment_method_saved. El langKey opcional establece el idioma de la interfaz en la página de configuración (predeterminado: en).
Requiere autenticación (token Bearer)
Cuerpo de la solicitud
Esquema: CreateCorporatePaymentSetupLinkRequest
corporateIdentifier Requeridocadena
ObjectId corporativo de YourVisa o identificador corporativo del socio
isEmbeddedInPartnerPage booleano
Cuando es true, setupUrl apunta a /iframe/corporate-payment-setup/{token} para incrustarlo en una página de socio sin la barra de navegación de YourVisa.
langKey cadena
Idioma opcional de la interfaz para la página de configuración: en (inglés, predeterminado), de (alemán), es (español), ru (ruso), he (hebreo), ar (árabe), fr (francés)
Valores posibles:
endeesruhearfr
Respuestas
201 Enlace de configuración creado correctamente
Esquema: CreateCorporatePaymentSetupLinkResponse
success booleano
Ejemplo true
token cadena
setupUrl cadena
URL completa para enviar al gerente corporativo
path cadena
Ejemplo "/corporate-payment-setup/abc123?langKey=de"
expiresAt cadena
Hora de caducidad del enlace (12 horas después de la creación)
corporateId cadena
partnerCorporateIdentifier cadenanull
isEmbeddedInPartnerPage booleano
Si la página de configuración está destinada a incrustarse en un iframe
langKey cadena
Idioma de interfaz resuelto para la página de configuración
Valores posibles:
endeesruhearfr
400 Error de validación
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
401 No autorizado
Esquema: Unauthorized
success booleano
Predeterminado: false
message cadena
Valores posibles:
No tienes credencialesNo tienes permisoToken de acceso no válidoTu token de acceso no es válido o ha caducado
403 La corporación no está configurada para facturación pagada por la organización
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
404 Corporación no encontrada
Esquema: BadRequest
message cadena
errorCode cadena
Predeterminado: BadRequest
Detalles
Paso 1: Crear enlace incrustado
POST /agents-api/create-corporate-payment-setup-link
{
"corporateIdentifier": "acme-001",
"isEmbeddedInPartnerPage": true,
"langKey": "he"
}
Use setupUrl from the 201 response (targets /iframe/corporate-payment-setup/{token}).
Paso 2: Cargar el iframe
<iframe
src="{setupUrl}"
width="100%"
height="700"
frameborder="0"
style="border: none; border-radius: 8px;"
></iframe>
Paso 3: Escuchar en el navegador (padre del iframe)
window.addEventListener("message", (event) => {
// Optional but recommended: verify the iframe origin in production
if (event.origin !== "https://www.yourvisa.ai") {
return;
}
if (
event.data?.source === "yourvisaai-iframe" &&
event.data?.event === "corporate_payment_method_saved"
) {
console.log("Card saved:", event.data.data);
}
});
Paso 4: Escuchar en React Native WebView
<WebView
source={{ uri: setupUrl }}
onMessage={(event) => {
const payload = JSON.parse(event.nativeEvent.data);
if (
payload?.source === "yourvisaai-iframe" &&
payload?.event === "corporate_payment_method_saved"
) {
console.log("Card saved:", payload.data);
}
}}
/>
Estructura del evento
{source: "yourvisaai-iframe", event: "corporate_payment_method_saved", data: {corporateId: "...", corporateName: "...", timestamp: "2026-07-02T13:25:50.110Z"}}
Cuándo se dispara
Only when isEmbeddedInPartnerPage was true on link creation and after the server confirms card save on POST /corporate-payment-setup/:token/complete.
Pruébalo
curl -X POST "https://api.yourvisa.ai/agents-api/create-corporate-payment-setup-link" \
-H "Authorization: Bearer YOUR_TOKEN_HERE" \
-H "Content-Type: application/json" \
-d '{
"corporateIdentifier": "string",
"isEmbeddedInPartnerPage": true,
"langKey": "en"
}'
Crear un enlace para una agencia afiliada con un producto específico
Esta sección explica cómo construir y usar una URL especializada para incrustar la solicitud de visa para agencias y agentes afiliados.
Uso de agencia afiliada
Detalles
URL de ejemplo con productId
URL de ejemplo para cualquier producto
Dominio
https://www.yourvisa.ai/ - La URL base del servicio, que debe incrustarse mediante un iframe o abrirse directamente.
productId
Representa el ID único del producto que se está reservando.
affiliatedAgencyId
Representa el ID único de la agencia afiliada o socio que integra el servicio.
affiliatedAgentId
(Campo opcional) Identifica al agente específico dentro de la agencia afiliada que está generando la visa.
customKey1-5
(Opcional) Parámetros de seguimiento personalizados. Puedes incluir hasta 5 claves personalizadas (customKey1, customKey2, customKey3, customKey4, customKey5) para fines adicionales de seguimiento o identificación. Se almacenarán en la reserva y se enviarán mediante webhooks.
Consejos para la implementación
- Valida siempre los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de ponerla en producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Crear un enlace de página de viajero personalizada con información de país prellenada
Esta sección explica cómo construir una URL especializada que prellena la búsqueda de visa con países de origen y destino específicos, junto con el seguimiento de la agencia afiliada.
Uso de agencia afiliadaEnlaces personalizados
Detalles
URL de ejemplo con países
URL de ejemplo mínima
https://www.yourvisa.ai/traveler/IL/US
Dominio
https://www.yourvisa.ai/ - La URL base del servicio.
from
(Requerido) Código de país de dos letras que representa el país de origen del viajero o la nacionalidad del pasaporte (p. ej., 'IL' para Israel, 'US' para Estados Unidos).
to
(Requerido) Código de país de dos letras que representa el país de destino (p. ej., 'US' para Estados Unidos, 'GB' para Reino Unido).
visaType
(Opcional) Tipo de visa que se solicita (p. ej., 'tourist', 'business', 'student'). Si no se especifica, el valor predeterminado es 'tourist'.
affiliatedAgencyId
Representa el ID único de la agencia afiliada o socio que integra el servicio.
affiliatedAgentId
(Campo opcional) Identifica al agente específico dentro de la agencia afiliada que está generando la visa.
customKey1-5
(Opcional) Parámetros de seguimiento personalizados. Puedes incluir hasta 5 claves personalizadas (customKey1, customKey2, customKey3, customKey4, customKey5) para fines adicionales de seguimiento o identificación. Se almacenarán en la reserva y se enviarán mediante webhooks.
Consejos para la implementación
- Valida siempre los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de ponerla en producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Herramienta interactiva
Descargar el probador de iframes
Obtén una página HTML independiente para probar localmente todos los flujos de iframe incrustados: búsqueda de visa, asistente, pago instantáneo, configuración de pago corporativo y eventos postMessage. Download iframe tester
Resumen y eventos del host
Incorpora los flujos de YourVisa dentro de tu sitio web o WebView móvil sin la barra de navegación ni el pie de página de YourVisa. Usa las URL /iframe/* para la incrustación; usa las URL que no son iframe al abrir en una nueva pestaña del navegador. Las superficies de pago incrustadas en un iframe (pago instantáneo, configuración de tarjeta corporativa y el paso de pago del asistente de visas) también muestran el logotipo de YourVisa.ai y enlaces a los términos, privacidad, reembolso y políticas de cookies. La búsqueda de visas y los pasos del asistente que no son de pago no incluyen ese marco de pago.
Iframe incrustado
Detalles
Ruta base del iframe
Todas las rutas de iframe viven bajo https://www.yourvisa.ai/iframe/..... Suprimen la barra de navegación principal y el pie de página de YourVisa.
Marca de la página de pago
Las superficies de pago incrustadas muestran el logotipo de YourVisa.ai y enlaces a políticas legales: /iframe/instant-visa-checkout, /iframe/corporate-payment-setup/{token} y el paso de pago dentro de /iframe/visa-wizard. La búsqueda de visas y otros pasos del asistente no lo hacen.
Escuchar eventos (navegador)
window.addEventListener("message", (event) => { if (event.origin !== "https://www.yourvisa.ai") { return; } if (event.data?.source !== "yourvisaai-iframe") { return; } console.log(event.data.event, event.data.data); });
Evento: application_submitted
{source: "yourvisaai-iframe", event: "application_submitted", data: {bookedProductId: "...", productId: "...", timestamp: "2026-07-04T10:30:00.000Z", ...}} — fired after the traveler submits the visa application inside the iframe.
Evento: instant_payment_complete
{source: "yourvisaai-iframe", event: "instant_payment_complete", data: {bookedProductId: "66a9ebe9572eb2904562c3ae", productId: "68e94b68f0022238439d7d4b", paymentStatus: "paid", redirectUrl: "https://partner.example.com/visa/payment-complete?...", timestamp: "2026-07-04T10:30:00.000Z"}} — fired immediately on the partner handoff payment-complete screen when instant checkout runs inside an iframe, before any automatic redirect. redirectUrl is included when configured.
Evento: corporate_payment_method_saved
{source: "yourvisaai-iframe", event: "corporate_payment_method_saved", data: {corporateId: "...", corporateName: "...", timestamp: "2026-07-02T13:25:50.110Z"}} — fired after a corporate manager saves a card on the embedded payment-setup page.
React Native WebView
<WebView source={{ uri: iframeUrl }} onMessage={(event) => { const payload = JSON.parse(event.nativeEvent.data); if (payload?.source === "yourvisaai-iframe") { console.log(payload.event, payload.data); } }} />
Parámetros de consulta opcionales
En /iframe/traveler, /iframe/visa-wizard y /iframe/instant-visa-checkout puedes agregar: customKey1..5, langKey (por ejemplo, &langKey=he).
Soporte de idiomas (URL de iframe directas)
Agrega langKey como parámetro de consulta en las URL de iframe que construyas tú mismo. Valores admitidos: en (predeterminado), de, es, ru, he, ar, fr. Búsqueda de viajeros: https://www.yourvisa.ai/iframe/traveler?affiliatedAgencyId={agencyId}&customKey1={value1}&langKey=he Pago instantáneo: https://www.yourvisa.ai/iframe/instant-visa-checkout?productId={productId}&affiliatedAgencyId={agencyId}&isInstantPayment=true&travelerClient=web&customKey1={value1}&langKey=de
Soporte de idiomas (URL del asistente de visas)
Agrega langKey como parámetro de consulta cuando construyas la URL del iframe directamente. https://www.yourvisa.ai/iframe/visa-wizard?productId={productId}&affiliatedAgencyId={agencyId}&customKey1={value1}&langKey=de
Soporte de idiomas (enlace de solicitud firmado)
Si ya tienes un bookedProductId y necesitas un enlace tokenizado, pasa langKey en POST /agents-api/get-application-link. Usa applicationUrl de la respuesta como src del iframe.
Soporte de idiomas (configuración de pago corporativo)
Pasa langKey en POST /agents-api/create-corporate-payment-setup-link. La respuesta setupUrl lo incluye cuando se proporciona. {"corporateIdentifier": "acme-001", "isEmbeddedInPartnerPage": true, "langKey": "he"} Ejemplo de ruta setupUrl: /iframe/corporate-payment-setup/{token}?langKey=he
Marca personalizada
Si tu agencia tiene la marca personalizada habilitada, las rutas de iframe aplican automáticamente tu experiencia de marca.
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Asistente de solicitud de visa
Incorpora el asistente de solicitud de visa cuando ya sepas qué producto debe solicitar el viajero. Apunta el iframe a /iframe/visa-wizard con productId y tu affiliatedAgencyId.
Iframe incrustadoSolicitud de visa
Detalles
URL de iframe directa
https://www.yourvisa.ai/iframe/visa-wizard?productId={productId}&affiliatedAgencyId={agencyId}
Ejemplo
Incrustar
<iframe src="https://www.yourvisa.ai/iframe/visa-wizard?productId={productId}&affiliatedAgencyId={agencyId}&customKey1={value1}&customKey2={value2}&langKey=en" width="100%" height="700" frameborder="0" style="border: none; border-radius: 8px;" ></iframe>
Parámetros requeridos
productId — el producto de visa que el viajero está solicitando. affiliatedAgencyId — el ID de tu agencia para que la reserva se atribuya a tu cuenta.
Parámetros opcionales
customKey1..5, langKey (por ejemplo, &langKey=he).
Independiente vs iframe
Usa /iframe/visa-wizard para incrustar dentro de tu sitio. Usa /visa-wizard con los mismos parámetros de consulta al abrir en una nueva pestaña del navegador.
Escuchar la finalización
Después del envío, el iframe envía application_submitted a la página principal.
¿Ya tienes un bookedProductId?
Si el viajero ya pagó o creaste una reserva mediante la API, usa POST /agents-api/get-application-link con isIframe: true en su lugar. Eso devuelve un applicationUrl firmado con un token para la reserva existente.
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Pago instantáneo
Incorpora el pago instantáneo cuando ya conozcas el productId.
Carga el pago en /iframe/instant-visa-checkout dentro de tu sitio o aplicación. La página muestra el logotipo de YourVisa.ai y enlaces a nuestras políticas legales.
Después del pago, tu integración sigue una de tres rutas: contacta con YourVisa para configurar la opción que se adapte a tu producto.
Iframe incrustadoPago instantáneo
Detalles
Después del pago — opción 1: Redirigir a tu sitio web
YourVisa envía al viajero a una URL de redirección que proporcionas de antemano. Los parámetros de consulta incluyen bookedProductId, productId, paymentStatus=paid y cualquier customKey1..5 no vacío. Funciona tanto para travelerClient=web como para travelerClient=app. Contacta con el soporte de YourVisa para solicitar o cambiar tu URL de redirección: no se puede configurar mediante la API.
Después del pago — opción 2: Permanecer incrustado (evento de iframe)
Cuando el pago se ejecuta dentro de un iframe, tu página principal recibe un postMessage instant_payment_complete tan pronto como el pago se realiza correctamente. Úsalo para cerrar el iframe, mostrar tu propia confirmación o continuar en tu interfaz. Consulta Escuchar pago completado y Evento: instant_payment_complete a continuación.
Después del pago — opción 3: Continuar con el asistente de visas
El viajero pasa directamente al asistente de visas de YourVisa en el mismo iframe o pestaña: sin redirección ni pantalla de transferencia al socio. No se envía instant_payment_complete en el momento del pago. Escucha application_submitted después de que el viajero termine y envíe el formulario de visa.
Combinar opciones 1 y 2
Cuando se configura una URL de redirección, el pago incrustado aún activa instant_payment_complete de inmediato, muestra una pantalla breve de pago completado y luego redirige dentro del iframe después de unos segundos. Eso le da tiempo a tu página para cerrar el iframe o manejar el evento antes de la redirección.
Incrustar pago
<iframe id="yourvisa-instant-checkout" src="https://www.yourvisa.ai/iframe/instant-visa-checkout?productId={productId}&affiliatedAgencyId={agencyId}&travelerClient=web&isInstantPayment=true&langKey=en&travelerFirstName={firstName}&travelerLastName={lastName}&travelerEmail={email}&travelerPhone={phone}&customKey1={externalUserId}&customKey2={externalBookingId}&customKey3={externalTravelerId}&customKey4={externalTripId}&customKey5={extraContext}" width="100%" height="700" frameborder="0" style="border: none; border-radius: 8px;" ></iframe>
Parámetros requeridos
productId, affiliatedAgencyId, isInstantPayment=true, travelerClient (web o app).
Parámetros opcionales
customKey1..5, langKey (por ejemplo, &langKey=he), travelerFirstName, travelerLastName, travelerEmail, travelerPhone.
travelerClient
web — el viajero comienza desde tu sitio web o iframe incrustado. app — el viajero comienza desde tu aplicación móvil nativa; el pago puede abrirse en una pestaña externa del navegador o WebView.
Sin URL de redirección configurada
Si la transferencia al socio está habilitada pero no se establece una URL de redirección, los viajeros ven una pantalla de agradecimiento que les indica que se recibió el pago y que deben volver a tu aplicación o sitio web. Encuentra la reserva pagada con GET /agents-api/get-products-history o reanuda con POST /agents-api/get-application-link.
Escuchar pago completado (navegador)
window.addEventListener("message", (event) => { if (event.origin !== "https://www.yourvisa.ai") { return; } if ( event.data?.source === "yourvisaai-iframe" && event.data?.event === "instant_payment_complete" ) { const { bookedProductId, productId, paymentStatus, redirectUrl } = event.data.data; console.log("Instant payment complete", { bookedProductId, productId, paymentStatus, redirectUrl }); // Close the iframe now, or let the traveler follow the in-iframe redirect } });
Evento: instant_payment_complete
{source: "yourvisaai-iframe", event: "instant_payment_complete", data: {bookedProductId: "66a9ebe9572eb2904562c3ae", productId: "68e94b68f0022238439d7d4b", paymentStatus: "paid", redirectUrl: "https://partner.example.com/visa/payment-complete?...", timestamp: "2026-07-04T10:30:00.000Z"}} Fired immediately on the partner handoff payment-complete screen when checkout runs inside an iframe — before any automatic redirect. redirectUrl is included when YourVisa configured one for your agency.
Ejemplo de integración completa
<iframe id="yourvisa-instant-checkout" src="https://www.yourvisa.ai/iframe/instant-visa-checkout?productId={productId}&affiliatedAgencyId={agencyId}&travelerClient=web&isInstantPayment=true&customKey1={externalUserId}&customKey2={externalBookingId}" width="100%" height="700" frameborder="0" style="border: none; border-radius: 8px;" ></iframe> <script> window.addEventListener("message", (event) => { if (event.origin !== "https://www.yourvisa.ai") { return; } if (event.data?.source !== "yourvisaai-iframe") { return; } if (event.data.event === "instant_payment_complete") { const { bookedProductId, productId } = event.data.data; document.getElementById("yourvisa-instant-checkout").style.display = "none"; // Resume in your UI, or load the wizard iframe with POST /agents-api/get-application-link } }); </script>
Ejemplo de URL de redirección
Evento: application_submitted
{ "source": "yourvisaai-iframe", "event": "application_submitted", "data": { "bookedProductId": "6a493c9b8f46d0e57c31bd65", "productId": "68e94b68f0022238439d7d4b", "visaType": "tourist", "timestamp": "2026-07-04T17:08:29.646Z" } } Fired inside an iframe when the traveler submits the visa application after instant payment and continuing through the wizard. This is the completion signal for option 3 — not instant_payment_complete. applicantName may also be included when available.
Escuchar solicitud enviada (navegador)
window.addEventListener("message", (event) => { if (event.origin !== "https://www.yourvisa.ai") { return; } if ( event.data?.source === "yourvisaai-iframe" && event.data?.event === "application_submitted" ) { const { bookedProductId, productId, visaType } = event.data.data; console.log("Visa application submitted", { bookedProductId, productId, visaType }); // Close the iframe, show your own confirmation, or refresh trip status } });
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Configuración del método de pago corporativo
Incorpora la página de configuración de tarjeta corporativa para que un gerente corporativo pueda guardar un método de pago dentro de tu sitio. Requiere POST /agents-api/create-corporate-payment-setup-link con isEmbeddedInPartnerPage: true. La página incrustada muestra el logotipo de YourVisa.ai y enlaces a políticas legales.
Iframe incrustadoCorporativo
Detalles
Paso 1: Crear enlace incrustado
POST /agents-api/create-corporate-payment-setup-link { "corporateIdentifier": "acme-001", "isEmbeddedInPartnerPage": true, "langKey": "he" } langKey is set in the request body. Use setupUrl from the 201 response as the iframe src (targets /iframe/corporate-payment-setup/{token}?langKey=he).
Paso 2: Cargar el iframe
<iframe src="{setupUrl}" width="100%" height="700" frameborder="0" style="border: none; border-radius: 8px;" ></iframe>
Parámetros opcionales
Solo langKey: se establece en el cuerpo del POST al crear el enlace (por ejemplo, "langKey": "he"). El setupUrl devuelto lo incluye. customKey1..5 no se aplican a este flujo.
Paso 3: Escuchar en el navegador
window.addEventListener("message", (event) => { if (event.origin !== "https://www.yourvisa.ai") { return; } if ( event.data?.source === "yourvisaai-iframe" && event.data?.event === "corporate_payment_method_saved" ) { console.log("Card saved:", event.data.data); } });
Cuándo se activa
Solo cuando isEmbeddedInPartnerPage era true en la creación del enlace y después de que el servidor confirme el guardado de la tarjeta.
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Servidor MCP — conecta asistentes de IA a YourVisa.ai
El servidor MCP (Model Context Protocol) de YourVisa permite que cualquier asistente de IA compatible — Claude Desktop, Cursor y otros — consulte requisitos de visa, tarifas y genere enlaces de solicitud en tiempo real. Es un servicio HTTP remoto que utiliza el transporte HTTP Streamable y requiere una clave API.
Integración MCPIA
Detalles
1. Obtener una clave API
Inicia sesión en tu cuenta de YourVisa.ai, ve a Panel → pestaña API MCP y haz clic en 'Nueva clave'. Cópiala y guárdala: solo se muestra una vez.
2. Agregar a la configuración de tu cliente MCP
Agrega el bloque de configuración que se muestra a continuación al archivo de configuración de tu cliente MCP (por ejemplo, claude_desktop_config.json para Claude Desktop, o la configuración de MCP en Cursor).
3. Herramientas disponibles
search_visas · get_visa_details · get_visa_requirements · get_visa_fees · get_application_link · get_country_info
4. Sin estado y solo lectura
El servidor MCP solo lee datos. No se realizan reservas ni escrituras mediante MCP.
5. Límites de velocidad
Nivel gratuito: 60 solicitudes / minuto.
Ejemplo de respuesta
{
"mcpServers": {
"YourVisa.ai": {
"url": "https://mcp.yourvisa.ai/api/mcp",
"headers": {
"Authorization": "Bearer yv_mcp_your_key_here"
}
}
}
}
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.
Configurar una URL de webhook para recibir notificaciones cuando se envíen solicitudes de visa
En la configuración de tu cuenta, puedes definir una URL de webhook para recibir notificaciones cada vez que tu agencia envíe una solicitud de visa. Cada notificación incluye los costos de la visa y quién paga.
Configuración de cuentaWebhook
Detalles
Dónde configurarlo
Inicia sesión en tu panel y ve a la pestaña 'Configuración de cuenta'. Allí puedes agregar o actualizar tu URL de webhook.
Para qué se usa
Tu webhook se activará cada vez que tu agencia envíe una solicitud de visa. El payload incluye los costos de la visa y si paga el viajero/empleado o la empresa/agencia.
Información de pago
paymentDetails incluye los costos de la visa (tarifa gubernamental, tarifa de servicio, tarifa de velocidad de procesamiento y total) y quién paga. paidBy es CLIENT cuando paga el viajero o empleado, y AGENT cuando paga la empresa o agencia. Si el administrador de YourVisa habilita el intercambio de datos del solicitante para tu agencia, el webhook también incluye applicantDetails y URL de descarga con límite de tiempo para cada archivo en applicantUploads. Esas URL caducan después de 5 minutos y funcionan con un GET HTTPS normal desde tu servidor.
Ejemplo de uso
Podrías usar esto para sincronizar solicitudes con tu CRM interno, enviar alertas o realizar lógica personalizada en nuevos envíos.
Ejemplo de respuesta
{
"toCountry": "US",
"fromCountry": "IL",
"productId": "66a9ebe9572eb2904562c3ae",
"bookedProductId": "66b0aae9572eb2904562c3af",
"customKeys": {
"customKey1": "travel-file-9",
"customKey2": "string",
"customKey3": "string",
"customKey4": "string",
"customKey5": "string"
},
"dateCreated": 1710000000000,
"paymentDetails": {
"currency": "USD",
"govVisaCost": 35,
"productServiceFee": 100,
"partnerServiceFee": 0,
"processingSpeedFee": 20,
"partnerProcessingSpeedFee": 0,
"totalCost": 155,
"paymentStatus": "PAID",
"paidBy": "AGENT"
},
"applicantDetails": {},
"applicantUploads": {}
}
Consejos para la implementación
- Siempre valida los parámetros antes de construir la URL para evitar errores.
- Prueba tu integración en un entorno de desarrollo antes de salir a producción.
- Mantén tus credenciales de autenticación seguras y nunca las expongas en código del lado del cliente.
- Contacta con soporte si necesitas ayuda con la implementación.