Code sample
curl -X GET 'https://hotels.automationcloud.net/Pull/SmartFeed' \
-H 'Authorization: Basic QVBJX0tFWTo=' \
-G \
-d 'hotelIds=1ab2CD&hotelIds=44B85' \
-d 'checkIn=2022-02-15' \
-d 'nights=1' \
-d 'guests=2'
Success Responses
Response Schema
Status 200
{
"type": "array",
"minItems": 0,
"items": {
"type": "object",
"properties": {
"hotelId": {
"type": "string",
"maxLength": 200
},
"checkIn": {
"type": "string",
"format": "date"
},
"nights": {
"type": "integer",
"minimum": 1
},
"guests": {
"type": "number",
"default": 2
},
"rooms": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "The name of the room, as presented to users."
},
"id": {
"type": "string",
"description": "A room identifier, unique per hotel"
},
"description": {
"type": "string"
},
"capacity": {
"type": "integer",
"description": "The maximum number of guests that a room can physically accommodate."
},
"occupancy": {
"type": "integer",
"description": "The maximum number of guests that a room is intended for."
},
"images": {
"type": "array",
"minItems": 0,
"items": {
"type": "object",
"description": "A document accessible on the target website.",
"properties": {
"type": {
"enum": [
"Link"
]
},
"name": {
"type": "string",
"description": "The name or title of the document."
},
"url": {
"type": "string",
"format": "url",
"description": "Location of the resource."
}
},
"required": [
"type",
"name",
"url"
],
"additionalProperties": false
}
},
"canBeShared": {
"type": "boolean"
},
"rates": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"description": "The name of the rate, as presented to users."
},
"id": {
"type": "string",
"description": "A rate identifier, unique per hotel"
},
"rule": {
"type": "string",
"description": "A rate rule ID, currently only 'member' or 'default'"
},
"description": {
"type": "string"
},
"occupancy": {
"type": "integer",
"description": "The number of guests that the rate is intended for."
},
"breakfastIncluded": {
"type": "boolean"
},
"lunchIncluded": {
"type": "boolean"
},
"dinnerIncluded": {
"type": "boolean"
},
"allInclusive": {
"type": "boolean"
},
"parkingIncluded": {
"type": "boolean"
},
"internetIncluded": {
"type": "boolean"
},
"refundable": {
"type": "object",
"description": "Hotel refund policy",
"properties": {
"available": {
"type": "boolean"
},
"untilDate": {
"type": "string",
"description": "Date until which refund is available. Format yyyy-MM-dd. Not present if available is false."
},
"untilTime": {
"type": "string",
"description": "Time until which refund is available. Format HH:mm. Not present if available is false."
}
},
"required": [
"available"
]
},
"baseRate": {
"type": "object",
"description": "Basic price information.",
"properties": {
"currencyCode": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"title": "ISO 4217 Currency Code",
"description": "ISO 4217 3-letter code representing the currency. Lowercase.",
"example": "usd",
"enum": [
"aed",
"afn",
"all",
"amd",
"ang",
"aoa",
"ars",
"aud",
"awg",
"azn",
"bam",
"bdt",
"bbd",
"bgn",
"bhd",
"bmd",
"bnd",
"bob",
"brl",
"bsd",
"bwp",
"byn",
"bzd",
"cad",
"chf",
"clp",
"cny",
"cop",
"crc",
"cup",
"cve",
"czk",
"djf",
"dkk",
"dop",
"dzd",
"egp",
"etb",
"eur",
"fjd",
"fkp",
"gbp",
"gel",
"ggp",
"ghs",
"gip",
"gtq",
"gyd",
"hkd",
"hnl",
"hrk",
"huf",
"idr",
"ils",
"imp",
"inr",
"iqd",
"irr",
"isk",
"jep",
"jmd",
"jod",
"jpy",
"kes",
"kgs",
"khr",
"kpw",
"krw",
"kwd",
"kyd",
"kzt",
"lak",
"lbp",
"lkr",
"lrd",
"mad",
"mkd",
"mmk",
"mnt",
"mop",
"mur",
"mvr",
"mxn",
"myr",
"mzn",
"nad",
"ngn",
"nio",
"nok",
"npr",
"nzd",
"omr",
"pab",
"pen",
"pgk",
"php",
"pkr",
"pln",
"pyg",
"qar",
"ron",
"rsd",
"rub",
"rwf",
"sar",
"sbd",
"scr",
"sek",
"sgd",
"shp",
"sos",
"srd",
"svc",
"syp",
"thb",
"tjs",
"tnd",
"try",
"ttd",
"tvd",
"twd",
"tzs",
"uah",
"ugx",
"usd",
"uyu",
"uzs",
"vef",
"ves",
"vnd",
"xaf",
"xcd",
"xof",
"yer",
"zar",
"zmw",
"zwd"
]
},
"value": {
"type": "integer",
"description": "An integer in the smallest currency unit (100 for £1.00).",
"example": "12300"
}
},
"required": [
"currencyCode",
"value"
],
"additionalProperties": false
},
"taxes": {
"type": "array",
"minItems": 0,
"items": {
"type": "object",
"properties": {
"type": {
"enum": [
"NamedPrice"
]
},
"name": {
"type": "string",
"description": "The name or title of the price."
},
"code": {
"type": {
"enum": [
"city-tax",
"vat",
"other-taxes"
]
},
"description": "The tax code inferred based on the tax name."
},
"price": {
"type": "object",
"description": "Basic price information.",
"properties": {
"currencyCode": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"title": "ISO 4217 Currency Code",
"description": "ISO 4217 3-letter code representing the currency. Lowercase.",
"example": "usd",
"enum": [
"aed",
"afn",
"all",
"amd",
"ang",
"aoa",
"ars",
"aud",
"awg",
"azn",
"bam",
"bdt",
"bbd",
"bgn",
"bhd",
"bmd",
"bnd",
"bob",
"brl",
"bsd",
"bwp",
"byn",
"bzd",
"cad",
"chf",
"clp",
"cny",
"cop",
"crc",
"cup",
"cve",
"czk",
"djf",
"dkk",
"dop",
"dzd",
"egp",
"etb",
"eur",
"fjd",
"fkp",
"gbp",
"gel",
"ggp",
"ghs",
"gip",
"gtq",
"gyd",
"hkd",
"hnl",
"hrk",
"huf",
"idr",
"ils",
"imp",
"inr",
"iqd",
"irr",
"isk",
"jep",
"jmd",
"jod",
"jpy",
"kes",
"kgs",
"khr",
"kpw",
"krw",
"kwd",
"kyd",
"kzt",
"lak",
"lbp",
"lkr",
"lrd",
"mad",
"mkd",
"mmk",
"mnt",
"mop",
"mur",
"mvr",
"mxn",
"myr",
"mzn",
"nad",
"ngn",
"nio",
"nok",
"npr",
"nzd",
"omr",
"pab",
"pen",
"pgk",
"php",
"pkr",
"pln",
"pyg",
"qar",
"ron",
"rsd",
"rub",
"rwf",
"sar",
"sbd",
"scr",
"sek",
"sgd",
"shp",
"sos",
"srd",
"svc",
"syp",
"thb",
"tjs",
"tnd",
"try",
"ttd",
"tvd",
"twd",
"tzs",
"uah",
"ugx",
"usd",
"uyu",
"uzs",
"vef",
"ves",
"vnd",
"xaf",
"xcd",
"xof",
"yer",
"zar",
"zmw",
"zwd"
]
},
"value": {
"type": "integer",
"description": "An integer in the smallest currency unit (100 for £1.00).",
"example": "12300"
}
},
"required": [
"currencyCode",
"value"
],
"additionalProperties": false
}
},
"required": [
"type",
"name",
"price"
],
"additionalProperties": false
}
},
"fees": {
"type": "array",
"minItems": 0,
"items": {
"type": "object",
"properties": {
"type": {
"enum": [
"NamedPrice"
]
},
"name": {
"type": "string",
"description": "The name or title of the price."
},
"code": {
"type": {
"enum": [
"hotel-fee",
"resort-fee",
"service-fee",
"booking-fee",
"other-fees"
]
},
"description": "The fee code inferred based on the fee name."
},
"price": {
"type": "object",
"description": "Basic price information.",
"properties": {
"currencyCode": {
"type": "string",
"minLength": 3,
"maxLength": 3,
"title": "ISO 4217 Currency Code",
"description": "ISO 4217 3-letter code representing the currency. Lowercase.",
"example": "usd",
"enum": [
"aed",
"afn",
"all",
"amd",
"ang",
"aoa",
"ars",
"aud",
"awg",
"azn",
"bam",
"bdt",
"bbd",
"bgn",
"bhd",
"bmd",
"bnd",
"bob",
"brl",
"bsd",
"bwp",
"byn",
"bzd",
"cad",
"chf",
"clp",
"cny",
"cop",
"crc",
"cup",
"cve",
"czk",
"djf",
"dkk",
"dop",
"dzd",
"egp",
"etb",
"eur",
"fjd",
"fkp",
"gbp",
"gel",
"ggp",
"ghs",
"gip",
"gtq",
"gyd",
"hkd",
"hnl",
"hrk",
"huf",
"idr",
"ils",
"imp",
"inr",
"iqd",
"irr",
"isk",
"jep",
"jmd",
"jod",
"jpy",
"kes",
"kgs",
"khr",
"kpw",
"krw",
"kwd",
"kyd",
"kzt",
"lak",
"lbp",
"lkr",
"lrd",
"mad",
"mkd",
"mmk",
"mnt",
"mop",
"mur",
"mvr",
"mxn",
"myr",
"mzn",
"nad",
"ngn",
"nio",
"nok",
"npr",
"nzd",
"omr",
"pab",
"pen",
"pgk",
"php",
"pkr",
"pln",
"pyg",
"qar",
"ron",
"rsd",
"rub",
"rwf",
"sar",
"sbd",
"scr",
"sek",
"sgd",
"shp",
"sos",
"srd",
"svc",
"syp",
"thb",
"tjs",
"tnd",
"try",
"ttd",
"tvd",
"twd",
"tzs",
"uah",
"ugx",
"usd",
"uyu",
"uzs",
"vef",
"ves",
"vnd",
"xaf",
"xcd",
"xof",
"yer",
"zar",
"zmw",
"zwd"
]
},
"value": {
"type": "integer",
"description": "An integer in the smallest currency unit (100 for £1.00).",
"example": "12300"
}
},
"required": [
"currencyCode",
"value"
],
"additionalProperties": false
}
},
"required": [
"type",
"name",
"price"
],
"additionalProperties": false
}
},
"isShared": {
"type": "boolean"
}
},
"required": [
"id",
"name",
"baseRate",
"taxes"
],
"additionalProperties": false
}
}
},
"required": [
"id",
"name",
"rates"
],
"additionalProperties": false
}
}
}
}
}
Response Examples
Status 200
[
{
"hotelId": "1ab2CD",
"checkIn": "2022-02-15",
"nights": 2,
"guests": 2,
"rooms": []
}
]
An empty rooms array on a populated array of hotel objects indicates no availability for that hotel due to no online bookable rooms/rates.
[]
An empty array of hotel objects indicates no coverage for the hotels in your query (either the date is too far ahead, or there is an issue).
[
{
"hotelId": "14885",
"checkIn": "2022-02-15",
"nights": 1,
"guests": 2,
"rooms": [
{
"name": "Standard Double/Twin",
"id": "C-DBL-2",
"description": "Room description, potentially long poorly formatted plain text",
"images": [
{
"type": "Link",
"name": "Imgname",
"url": "http://example.com/room/image1.jpg"
}
],
"capacity": 2,
"rates": [
{
"name": "BAR - 5% discount",
"id": "5PCTBAR",
"baseRate": {
"value": 16485,
"currencyCode": "chf"
},
"taxes": [
{
"type": "NamedPrice",
"name": "City Tax",
"code": "city-tax",
"price": {
"value": 16485,
"currencyCode": "chf"
}
}
],
"fees": [
{
"type": "NamedPrice",
"name": "Hotel Fee",
"code": "hotel-fee",
"price": {
"value": 1234,
"currencyCode": "chf"
}
}
]
}
]
},
{
"name": "Superior Double/Twin",
"id": "D-DBLS-2",
"capacity": 2,
"rates": [
{
"name": "BAR - 5% discount",
"id": "5PCTBAR",
"baseRate": {
"value": 16485,
"currencyCode": "chf"
},
"taxes": []
}
]
}
]
},
{
"hotelId": "1ab2CD",
"checkIn": "2022-02-15",
"nights": 1,
"guests": 2,
"rooms": []
}
]
This is normal successful response with regular room rates.
[
{
"hotelId": "14885",
"checkIn": "2022-02-15",
"nights": 1,
"guests": 2,
"rooms": [
{
"name": "Superior Double/Twin",
"id": "D-DBLS-2",
"capacity": 2,
"rates": [
{
"name": "BAR - 5% discount",
"id": "5PCTBAR",
"rule": "member",
"baseRate": {
"value": 16485,
"currencyCode": "chf"
},
"taxes": []
}
]
}
]
}
]
Member rates, also known as reward rates, conditional rates or private rates has additional `rule` field which indicates type of rate.
[
{
"hotelId": "14885",
"checkIn": "2022-02-15",
"nights": 1,
"guests": 2,
"rooms": [
{
"name": "Superior Double/Twin",
"id": "D-DBLS-2",
"capacity": 2,
"rates": [
{
"name": "BAR - 5% discount",
"id": "5PCTBAR",
"rule": "member",
"baseRate": {
"value": 16485,
"currencyCode": "chf"
},
"taxes": [],
"breakfastIncluded": true,
"lunchIncluded": false,
"allInclusive": false
},
{
"name": "BAR - ALL INCLUSIVE",
"id": "5PCTBAR",
"baseRate": {
"value": 16485,
"currencyCode": "chf"
},
"taxes": [],
"allInclusive": true
}
]
}
]
}
]
There's an example with several new board options included
Error Responses
Status 400
{
"object": "error",
"name": "RequestParametersValidationError",
"message": "Invalid request parameters:\n - must have required property 'nights'\n - must have required property 'checkIn'",
"details": {
"messages": [
"must have required property 'nights'",
"must have required property 'checkIn'"
]
}
}
When something goes wrong, the Smart Feed returns an error object. Most common reason for an error is a wrong request parameter. Here's an error with HTTP status "400".
Status 401
{
"object": "error",
"name": "EndpointAccessAuthorizationError",
"message": "Access to the endpoint is not authorised",
"details": {}
}
Authenticated user doesn’t have access to this endpoint.