Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/amex-gbt-dutyofcare-data-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Duty Of Care DutyOfCare Data API
version: v1.0
servers:
- url: https://apis.egencia.com/dutyofcare/api
description: Generated server url
tags:
- name: DutyOfCare Data
paths:
/v1/bookings:
post:
description: 'In general, the DoC API uses HTTPs POST requests with JSON arguments and JSON responses. This API call allows the client to submit a request for retrieving paginated booking data for a specified search criterion.
Request Parameters:
Field
Type
Required/Optional
Description
partner_id
Integer
Required
Unique identifier provided to partner by Egencia.
company_id
Integer
Optional
The company ID list. Company ID is a Unique Identifier for the company.
start_date_time
String
Optional
The date-time range to fetch the booking data. Timestamp in ISO 8601
format: YYYY-MM-
DDTHH:MM:SSZ Example: 2020-01-21T10:07:41.208Z.
The date range should come as a pair.
Future date is not allowed as start date.
If the only start date-time is given, the range will be automatically set to next 24 hours from the start date-time.
If the only end date-time is given, the range will be automatically set to last 24 hours from the end date-time.
Missing both start and end date-time will be considered as the latest 24 hours.
*Default timezone is GMT.
end_date_time
String
Optional
The date-time range to fetch the booking data. Timestamp in ISO 8601
format: YYYY-MM-
DDTHH:MM:SSZ Example: 2020-01-21T10:07:41.208Z.
The date range should come as a pair.
Future date is not allowed as start date.
If the only start date-time is given, the range will be automatically set to next 24 hours from the start date-time.
If the only end date-time is given, the range will be automatically set to last 24 hours from the end date-time.
Missing both start and end date-time will be considered as the latest 24 hours.
*Default timezone is GMT.
Request Parameters:
Success Response - 200 OK
The request has succeeded. This endpoint will return metadata of the resource for the given request. If there is no content available or no more records available, it will return the below success messages.
Response Code
Description
200
200 OK; BOOKINGS_NOT_AVAILABLE("No bookings available for this particular request")
200 OK; NO MORE BOOKING(“ All records have been fetched. No more bookings available for this request.”)
Pagination Response
This API will return the metadata (hyperlinks) of the resource from where you can fetch all the qualified booking records in a paginated manner. You can page through the resource by making a GET request to the NextPage URL provided in the paginated response. If there are no more pages, NextPage will be set to ‘null’.
Response Parameter
Attribute
Type
Description
total_pages
Integer
Total Pages in the response.
page_limit
Integer
The maximum number of records allowed in a single page.
total_records
Integer
Total number of records in the response.
Current_page
Integer
Page number of the displayed record..
Examples:
Consider a trip from Los Angeles to Dublin. The trip contains two flight booking from Los Angeles to Paris and Paris to Dublin. Also the trip contains a hotel booking in Dublin for 2 days.
Trip Details
company_id": "35067",
Booking 1: Hotel booking
Booking 2: Car booking
In this booking there are 2 records. The hotel and car booking will be considered as two separate records.
Note:
The sample response is for reference purpose only.
Sample Request
curl ''https://apis.egencia.com/ dutyofcare/api/v1/bookings'' -X POST
-H ''Content-Type: application/json;charset=UTF-8'' \
-H ''Accept: application/json'' \
-d ''{
"partner_id" :"92",
"company_id" :[35067],
"start_date_time": "2020-06-21T00:00:11Z",
"end_date_time": "2020-06-31T23:59:59Z"
}''
Sample Response
{
"metadata": {
"total_pages": 5,
"total_records" : 10,
"page_limit" : 2,
"current_page": 0
},
"_links": {
"next": {
"href": "https:// apis.egencia.com/dutyofcare/api /v1/bookings/89ef5828-6d9f-4429-ab73-5ee40cf7b4e7"
}
}
}
Fetching Duty of care data:
This API will return all booking data for all the lob''s like FLIGHT, TRAIN, CAR and HOTEL'
operationId: getDutyOfCareData
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_of_Care_Request_Bean'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>OK</b> : booking data pulled successfully'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Bad Request</b> : request body is malformed, or contains invalid values'
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Unauthorized</b> : <i>authentication token</i> empty, invalid or expired'
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Forbidden</b> : user do not have the permission to access data'
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Not found</b> : data which satisfying provided input details does not exist'
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Internal error</b> : no data, or other unexpected error'
security:
- OAuth2: []
summary: Create Metadata based on the Search Request
tags:
- DutyOfCare Data
/v1/bookings/{resourceId}:
get:
description: 'Sample Request
GET
https://apis.egencia.com/dutyofcare/api/v1/bookings/89ef5828-6d9f-4429-ab73-5ee40cf7b4e7
Sample Response
{
"record_list": [
{
"record_locator": "5f19782e74b12400018f9e7d-169294509",
"company_id": 35067,
"trip_id": "0600-2564-655",
"booking_status": "CONFIRMED",
"line_of_business": "HOTEL",
"booking_reference": "51820505181",
"traveler_details": [
{
"first_name": "Bruce",
"last_name": "Wayne",
"email": "Brucebat@egencia.com",
"phone": "NA",
"custom_data_fields": [
{
"name": "Main cost centre",
"value": "CC1-2"
}
]
}
],
"hotel_segment_details": [
{
"hotel_checkin_datetime": "2020-07-30T00:00:00+0200",
"hotel_checkout_datetime": "2020-07-31T00:00:00+0200",
"hotel_name": "Novum Hotel Savoy Hamburg Mitte",
"hotel_address": "Steindamm 54, Hamburg, HH, 20099, DEU",
"hotel_phone": "49 40 18881160",
"hotel_longitude": "10.014033",
"hotel_latitude": "53.554398"
}
]
},
{
"record_locator": "5f197a4d74b12400018f9e88-169294510",
"company_id": 35067,
"trip_id": "0600-2564-655",
"booking_status": "CONFIRMED",
"line_of_business": "CAR",
"booking_reference": "R3935B",
"traveler_details": [
{
"first_name": "Bruce",
"last_name": "Wayne",
"email": " Brucebat@egencia.com",
"phone": "NA",
"custom_data_fields": [
{
"name": "Main cost centre",
"value": "CC1-2"
}
]
}
],
"car_segment_details": [
{
"car_pickup_iata_code": "DEU",
"car_pickup_datetime": "2020-07-30T12:00:00+0200",
"car_dropoff_iata_code": "DEU",
"car_dropoff_datetime": "2020-07-31T12:00:00+0200",
"car_vendor_name": "Enterprise",
"car_vendor_code": "ET"
}
]
}
],
"metadata": {
"total_pages": 5,
"total_records": 10,
"page_limit": 2,
"current_page": 2
},
"_links": {
"next": {
"href": "https:// apis.egencia.com/dutyofcare/api /v1/bookings/89ef5828-6d9f-4429-ab73-5ee40cf7b4e7"
}
}
}
Each record will have multiple fields associated with it.'
operationId: getBookings
parameters:
- description: Unique resource identifier returned from the POST /bookings response
in: path
name: resourceId
required: true
schema:
type: string
- description: page
example: 1
in: query
name: page
required: false
schema:
type: integer
format: int32
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>OK</b> : duty of care booking data returned successfully'
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Bad Request</b> : request contains invalid values, e.g. non-numeric page parameter'
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Unauthorized</b> : <i>authentication token</i> empty, invalid or expired'
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Forbidden</b> : user do not have the permission to access data'
'500':
content:
application/json:
schema:
$ref: '#/components/schemas/Duty_Of_Care_Response_Bean'
description: '<b>Internal error</b> : no data, or other unexpected error'
security:
- OAuth2: []
summary: Get the duty of care data as per the Request
tags:
- DutyOfCare Data
components:
schemas:
Rail_Segment_Details:
properties:
carrierCode:
type: string
description: Unique carrier code of the traveler’s carrier
trainArrivalCityRailCode:
type: string
description: Arrival city rail code of the of traveler's train journey
trainArrivalDatetime:
type: string
description: 'Arrival date-time of the traveler’s train journey in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
trainArrivalLatitude:
type: string
description: Latitude of the train arrival location
trainArrivalLongitude:
type: string
description: Longitude of the train arrival location
trainArrivalStationName:
type: string
description: Arrival station name of the traveler's train journey
trainDepartureCityRailCode:
type: string
description: Departure city rail code of the traveler's train journey
trainDepartureDatetime:
type: string
description: 'Departure date-time of the traveler’s train journey in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
trainDepartureLatitude:
type: string
description: Latitude of the train departure location
trainDepartureLongitude:
type: string
description: Longitude of the train departure location
trainDepartureStationName:
type: string
description: Departure station name of the traveler's train journey
trainNumber:
type: string
description: The number associated with a train for a segment
Metadata_corresponding_to_a_request:
description: Represents the Metadata information
properties:
currentPage:
type: integer
format: int32
description: Indicates the current page
pageLimit:
type: integer
format: int32
description: Indicates the Page Size for the request
totalPages:
type: integer
format: int32
description: Indicates the total number of expected pages
totalRecords:
type: integer
format: int32
description: Indicates the toal number of records for the request
Traveler_Details:
properties:
customDataFields:
type: array
description: Custom data fields
items:
$ref: '#/components/schemas/Custom_Data_Fields'
email:
type: string
description: Email address of the person for whom the travel booking was made
firstName:
type: string
description: First Name of the person for whom the travel booking was made
lastName:
type: string
description: Last Name of the person for whom the travel booking was made
phone:
type: string
description: Phone number of the person for whom the travel booking was made
Custom_Data_Fields:
description: Custom data fields
properties:
name:
type: string
description: Name of the Custom Data Fields as configured for the company
value:
type: string
description: The values provided will be retrieved for the corresponding fields, if they are available
Duty_Of_Care_Response_Bean:
description: Represents the API model for Doc service Public response
properties:
links:
type: array
items:
$ref: '#/components/schemas/Link'
metadata:
$ref: '#/components/schemas/Metadata_corresponding_to_a_request'
recordList:
type: array
description: List of records
items:
$ref: '#/components/schemas/Doc_Records_List'
Doc_Records_List:
description: Contains the records in duty of care
properties:
airSegmentDetails:
type: array
items:
$ref: '#/components/schemas/Air_Segment_Details'
bookingReference:
type: string
description: Unique identifier of a booking
bookingStatus:
type: string
description: 'Represents the status of the booking Example: Confirmed or Cancelled'
carSegmentDetails:
type: array
items:
$ref: '#/components/schemas/Car_Segment_Details'
companyId:
type: integer
format: int32
description: Unique Identifier for the company
gdsReference:
type: string
description: GDS Identifier of a booking
hotelSegmentDetails:
type: array
items:
$ref: '#/components/schemas/Hotel_Segment_Details'
lineOfBusiness:
type: string
description: 'The line of business for which the booking is associated with. Example: Air, Car, Train, Hotel'
recordLocator:
type: string
description: Unique identifier for a record
trainSegmentDetails:
type: array
items:
$ref: '#/components/schemas/Rail_Segment_Details'
travelerDetails:
type: array
items:
$ref: '#/components/schemas/Traveler_Details'
tripId:
type: string
description: A trip_id is a unique identifier generated by the system
Hotel_Segment_Details:
properties:
hotelAddress:
type: string
description: Address of the hotel
hotelCheckinDatetime:
type: string
description: Check in date-time in the local timezone of the hotel in ISO 8601 format:YYYY-MM-DDTHH:MM:SS
hotelCheckoutDatetime:
type: string
description: 'Check out date-time in the local timezone of the hotel in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
hotelLatitude:
type: string
description: Latitude of the hotel location
hotelLongitude:
type: string
description: Longitude of the hotel location
hotelName:
type: string
description: The name of the hotel
hotelPhone:
type: string
description: Telephone number of the hotel
Duty_of_Care_Request_Bean:
description: DutyOfCareDataRequestBean Request
properties:
companyId:
type: array
description: Company ID is a Unique Identifier for the company
items:
type: integer
format: int32
description: Company ID is a Unique Identifier for the company
endDateTime:
type: string
description: 'The end date-time to fetch the booking data in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ'
partnerId:
type: integer
format: int32
description: Unique identifier provided to partner by Egencia
startDateTime:
type: string
description: 'The start date-time to fetch the booking data in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ'
Link:
properties:
deprecation:
type: string
href:
type: string
hreflang:
type: string
media:
type: string
name:
type: string
profile:
type: string
rel:
type: string
title:
type: string
type:
type: string
Air_Segment_Details:
properties:
airlineCode:
type: string
description: Unique airline code to identify the traveler airline
flightArrivalDatetime:
type: string
description: 'Actual flight arrival date-time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
flightArrivalIataCode:
type: string
description: Actual flight arrival IATA Code in standard format
flightDepartureDatetime:
type: string
description: 'Actual flight departure date-time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
flightDepartureIataCode:
type: string
description: Actual flight departure IATA Code in standard format
flightNumber:
type: string
description: Unique airline code for the particular flight
Car_Segment_Details:
properties:
carDropoffDatetime:
type: string
description: 'Car drop-off date-time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
carDropoffIataCode:
type: string
description: IATA code of the Car drop off location
carPickupDatetime:
type: string
description: 'Car pickup date-time in ISO 8601 format: YYYY-MM-DDTHH:MM:SS'
carPickupIataCode:
type: string
description: IATA code of the Car pick up location
carVendorCode:
type: string
description: Unique code of the car vendor
carVendorName:
type: string
description: Name of the car vendor
securitySchemes:
OAuth2:
flows:
clientCredentials:
tokenUrl: https://apis.egencia.com/auth/v1/token
type: oauth2