Searches and returns available service intents based on filters and trip context.
POST/api/app/travel-services/service-intents
Search for service intents by service type and trip context. The endpoint is anonymous; send Content-Type: application/json.
serviceType is required unless serviceIntentKeysFilter contains one or more keys. When keys are supplied, the endpoint resolves only those keys; do not combine them with continuationToken. If serviceType is also supplied, every key must belong to that type.
tripContext.items is a dictionary of provider-specific values. Country codes in these examples use ISO 3166-1 alpha-3 codes, and dates use YYYY-MM-DD.
Visa
Visa search uses the route, travel dates, and (optionally) the traveler's document type and qualifying exemptions. If system.tripDocumentTypeKey is omitted, the endpoint defaults it to passport.
{
"serviceType": "Visa",
"tripContext": {
"items": {
"system.tripOrigination": "JOR",
"system.tripDestination": "USA",
"system.tripFrom": "2027-02-01",
"system.tripTo": "2027-02-14",
"system.tripDocumentTypeKey": "passport",
"system.exemptions": [101],
"system.exemptionDocumentExpiryDates": {
"101": "2027-12-31"
}
},
"travelerContexts": []
}
}
Use exemption IDs returned by the exemptions API for the same traveler and origination. Include an expiration date when an exemption has a minimum document-validity requirement. The expiry-date object maps exemption IDs to dates. system.tripFrom is used to check that validity; the trip dates are also used when checking whether a visa's stay duration and processing time fit the trip. A visa search can return a continuationToken when another page is available. Send that opaque token with the same search context to retrieve the next page.
Insurance
Tamkeen uses the trip's origination, destination, and dates. It returns results only when origination is PSE or JOR; destination selects the plan when supplied. The trip must be no longer than 90 days. If destination is omitted, the provider may return both plans.
{
"serviceType": "Insurance",
"tripContext": {
"items": {
"system.tripOrigination": "JOR",
"system.tripDestination": "USA",
"system.tripFrom": "2026-11-01",
"system.tripTo": "2026-11-10"
},
"travelerContexts": []
}
}
Airport Lounge
Search by city by passing city in tripContext.items:
{
"serviceType": "AirportLounge",
"tripContext": {
"items": {
"city": "Dubai"
},
"travelerContexts": []
},
"inputRestrictionMode": "FailOnMissing"
}
The city value can be a partial name, but it must contain at least three characters after trimming whitespace.
If city is missing, the default ByPassOnMissing mode returns no lounge intents; FailOnMissing instead returns a validation error. To resolve known lounge intents, pass their exact keys in serviceIntentKeysFilter rather than searching by city.
Fast Track
Fast Track uses the same city context key, but searches fast-track services:
{
"serviceType": "FastTrack",
"tripContext": {
"items": {
"city": "Abu Dhabi"
},
"travelerContexts": []
},
"inputRestrictionMode": "FailOnMissing"
}
The city value can be a partial name, but it must contain at least three characters after trimming whitespace.
With no city, ByPassOnMissing returns no fast-track intents and FailOnMissing returns a validation error. To resolve known fast-track intents, provide their exact keys in serviceIntentKeysFilter.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 500
- 501
OK
Bad Request
Unauthorized
Forbidden
Not Found
Internal Server Error
Not Implemented