Ketendo

Reconciliation

Checking what Ketendo actually holds against your own records.

UAT https://uat-ketendo-api.azurewebsites.net  ·  Production https://ketendo-api.azurewebsites.net  ·  Last updated 2026-09-21

Retrieve a saved record by your ExternalId

Every Save… endpoint above stores your ExternalId directly on the saved record's ExternalIdentifier field. If you need to check what Ketendo actually has for a given ExternalId - to verify a sync, debug a mismatch, or fetch the current state - use the GET endpoints below instead of re-sending a Save call. These are plain lookups with no request body, and they live on a separate, shared controller (EntityLookupController) rather than under /v1/integration/.

Only Authorization: Bearer <token> is needed for these calls - X-Source-System is not required here.
These lookups match by ExternalId alone - make sure the value you send is one only your integration would use (see the golden rule).
EntityEndpointStatus
AssetGET /v1/EntityLookup/transportation/asset/external/{externalId}
PartGET /v1/EntityLookup/transportation/part/external/{externalId}
CompartmentGET /v1/EntityLookup/transportation/compartment/external/{externalId}
PassengerGET /v1/EntityLookup/transportation/passenger/external/{externalId}
RouteInfoGET /v1/EntityLookup/transportation/routeInfo/external/{externalId}
TripInfoGET /v1/EntityLookup/transportation/tripInfo/external/{externalId}
TripPassengerGET /v1/EntityLookup/transportation/tripPassenger/external/{externalId}
TripMemberGET /v1/EntityLookup/transportation/tripMember/external/{externalId}
PartCategoryGET /v1/EntityLookup/transportation/partCategory/external/{externalId}
PartTypeGET /v1/EntityLookup/transportation/partType/external/{externalId}
WindowTypeGET /v1/EntityLookup/transportation/windowType/external/{externalId}
ToiletTypeGET /v1/EntityLookup/transportation/toiletType/external/{externalId}
WheelTypeGET /v1/EntityLookup/transportation/wheelType/external/{externalId}
CompartmentTypeGET /v1/EntityLookup/transportation/compartmentType/external/{externalId}
FacilityGET /v1/EntityLookup/transportation/facility/external/{externalId}
TripStatusGET /v1/EntityLookup/transportation/tripStatus/external/{externalId}
PromotionalStatusGET /v1/EntityLookup/transportation/promotionalStatus/external/{externalId}
PackageDepartureStatusGET /v1/EntityLookup/transportation/packageDepartureStatus/external/{externalId}
JourneyCodeGET /v1/EntityLookup/transportation/journeyCode/external/{externalId}
PartOperationStatusGET /v1/EntityLookup/transportation/partOperationStatus/external/{externalId}
PartOperationGET /v1/EntityLookup/transportation/partOperation/external/{externalId}
StoppageGET /v1/EntityLookup/transportation/stoppage/external/{externalId}
ItinerarySupplierGET /v1/EntityLookup/transportation/itinerarySupplier/external/{externalId}
RouteStoppageItineraryItemGET /v1/EntityLookup/transportation/routeStoppageItineraryItem/external/{externalId}
TripStoppageItineraryItemGET /v1/EntityLookup/transportation/tripStoppageItineraryItem/external/{externalId}

Example

GET /v1/EntityLookup/transportation/asset/external/TRAIN-001-2026
Authorization: Bearer <token>

Result

{
  "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "code": "N001-2026",
  "name": "Blue Train N001",
  "description": "Premier long-distance passenger train",
  "usedForTravelPurposes": true
}

Wrapped in the standard response envelope like every other endpoint. If nothing matches that ExternalId, you'll get a 404 instead.