List, search or filter Accommodations
Fields Note
If the provided fields match any of the keys in the array, paging will be unlimited. The following keys are accepted for unlimited paging:
rid, id, isTourismOrganizationMember, type.rid, category.rid, representationMode, position.type, position.coordinates.0, position.coordinates.1, position.altitude, contacts.*.type, contacts.*.phone, contacts.*.mobile, contacts.*.fax, contacts.*.firstName, contacts.*.lastName, contacts.*.website, contacts.*.email, contacts.*.address.name.de, contacts.*.address.name.en, contacts.*.address.name.it, contacts.*.address.name2.de, contacts.*.address.name2.en, contacts.*.address.name2.it, contacts.*.address.street.de, contacts.*.address.street.en, contacts.*.address.street.it, contacts.*.address.city.de, contacts.*.address.city.en, contacts.*.address.city.it, contacts.*.address.postalCode, contacts.*.address.country, images.*.rid, images.*.url, images.*.applicableStartDate, images.*.applicableEndDate, images.*.widthPixel, images.*.heightPixel, images.*.copyright, images.*.license, tourismOrganization.rid, contacts.*.address.name.fr, contacts.*.address.name2.fr, contacts.*.address.street.fr, contacts.*.address.city.fr, contacts.*.address.name.nl, contacts.*.address.name2.nl, contacts.*.address.street.nl, contacts.*.address.city.nl, contacts.*.address.name2
Request
- Base URL: https://go.lts.it/api
- URL: https://go.lts.it/api/v1/accommodations
- Auth: one of:
- HTTP basic and API key in header X-LTS-ClientID
- HTTP bearer
Query parameters
The preferred language for the API response. Available options include cs, de, en, nl, fr, it, pl, and ru. Note If no language is specified, the API response will include all available languages. Only one language can be passed at a time.
The number of records per page for the API response. Allows you to control the amount of data returned per page. Default value is 10. Maximum value is 100, unless the 'fields' parameter is passed with only 'rid' field, in this case the page size limit is unlimited.
The page number for the API response. Allows you to paginate through large data sets by specifying the desired page number. Default value is 1.
The API's filter parameter enables data filtering. To apply multiple filters, connect them using & e.g filter[a]=1&filter[b]=test. The available filters are: <br>filter[rids] Filter Accommodation by record Rids. Rules:multiple, size:32, string<br>filter[onlyActive] If set to true, it returns only active records. Rules:boolean<br>filter[tourismOrganizationRids] Rules:string, size:32, required_without:marketingGroupRids, multiple<br>filter[marketingGroupRids] Rules:string, size:32, required_without:tourismOrganizationRids, multiple<br>filter[municipalityIstatIds] If set, it returns only accommodation located in the municipalities provided by istatId. Rules:string, max:10, multiple<br>filter[lastUpdate] Date filter for last update. Rules:string, date_format:Y-m-d\TH:i:s.v<br>filter[cinCode] Rules:string, max:20<br>filter[language] Filter by language. Rules:string, in:cs,de,en,nl,fr,it,pl,ru<br>filter[resultSet][rid] Filter by result set record ID. Rules:size:32, string<br>filter[resultSet][filterAndSummaryGroups][0][id] ID filter for result set filters and summary groups. Rules:integer<br>filter[resultSet][filterAndSummaryGroups][0][type] Type filter for result set filters and summary groups. Rules:string, max:30, in:amenity,roomGroupAmenity,category,type<br>filter[resultSet][filterAndSummaryGroups][0][filters][0][id] ID filter for result set filters. Rules:integer<br>filter[resultSet][filterAndSummaryGroups][0][filters][0][isSelected] Selected filter for result set filters. Rules:boolean<br>filter[resultSet][filterAndSummaryGroups][0][filters][0][rids] Filter by result set filter record IDs. Rules:size:32, multiple, string<br>filter[onlySuedtirolInfoActive] If set to true, it returns only suedtirolInfo active records. Rules:boolean<br>filter[districtRids] Rules:multiple, size:32, string<br>filter[minAltitude] Rules:integer<br>filter[maxAltitude] Rules:integer<br>filter[representationMode] Rules:string, in:minimal,full,none<br>filter[mealPlanRids] Rules:multiple, size:32, string<br>filter[amenityRids] Rules:multiple, size:32, string<br>filter[roomGroup][amenityRids] Rules:multiple, size:32, string<br>filter[typeRids] Rules:multiple, size:32, string<br>filter[hasRooms] Rules:boolean<br>filter[hasApartments] Rules:boolean<br>filter[categoryRids] Rules:multiple, size:32, string<br>filter[holidayPackageRids] Rules:multiple, size:32, string<br>filter[addressGroupRids] Rules:multiple, size:32, string<br>filter[addressGroupCodes] Rules:multiple, size:10, string<br>filter[onlyBookable] If set to true, it returns only bookable active records. Rules:boolean<br>filter[onlyActiveGaleries] If set to true, it returns only active records. Rules:boolean<br>filter[contactType] Rules:string, in:main,invoicing,private<br>filter[onlyHgvActive] If set to true, it returns only HGV active records. Rules:boolean<br>filter[onlyAstatActive] If set to true, it returns only astat active records. Rules:boolean<br>filter[suedtirolGuestPassCardTypesRids] SGP rid filter for results. Rules:string, size:32, multiple<br>filter[searchTerm] Search term filter. Rules:string, max:255
{
"rids": "3B3B56FAE86F3FE2F5D4B7281502551C",
"onlyActive": 1,
"tourismOrganizationRids": "7B6EB0D4849376A009B8B5072F13DD0C",
"marketingGroupRids": "D38F0DAE7612734964CD46E4F1AFDC94",
"municipalityIstatIds": "In.",
"lastUpdate": "1925-07-24T09",
"cinCode": "Sed maiores.",
"language": "en",
"resultSet": {
"rid": "0DB4EBF1500FDEA2DE3F09688EACC54C",
"filterAndSummaryGroups": [
{
"id": 44,
"type": "Facere.",
"filters": [
{
"id": 5,
"isSelected": 1,
"rids": "DBF6E0D53333B58C6995C4B69B647095"
}
]
}
]
},
"districtRids": "B8C76D0B4A69B392857370834A11BC61",
"minAltitude": 68,
"maxAltitude": 62,
"representationMode": "minimal",
"mealPlanRids": "714F99FA941ED033952675914119C1AE",
"amenityRids": "05E7FE80DFEE4419DE05438AFC2925FD",
"roomGroup": {
"amenityRids": "04E46D86AEDB010462F64E79C70F8249"
},
"typeRids": "EA85674BE33B35D564544ADD8F0AD273",
"hasRooms": 1,
"hasApartments": 1,
"categoryRids": "A008BB8CF4C3C5F3434B27C7007C3A1B",
"holidayPackageRids": "28B5B4CA21957657E7238BCA32785862",
"addressGroupRids": "3DB5AC996B938FDD6D84D84D9791AAC3",
"addressGroupCodes": "6A682AC90A",
"contactType": "invoicing",
"onlyHgvActive": 1,
"suedtirolGuestPassCardTypesRids": "8056437C35C35626F85BE996395CECB8",
"searchTerm": "Quis."
}Requests for retrieved resources to be sorted by the value some selected field. Sorting requests may be in ascending (e.g., sort=startDate) or descending order (e.g., sort=-length) by prefixing the field name with a MINUS (U+002D) character. If the sort value includes a language, the language parameter is also required. Sorting is available over (name,category,random,lastUpdate) the primitive attributes of an endpoint's resources.
Selects which fields (i.e., attributes or relationships) should be present in returned resource. To exclude a field, add a "-" before its value. Multiple fields can be passed separated by a comma ",". If only "rid" or "id" is passed, pagination size is unlimited by default. (e.g. ratePlans.*.alpineBitsRatePlanId,ratePlans.*.chargeType,ratePlans.*.code,ratePlans.*.descriptions.*.description.cs,ratePlans.*.descriptions.*.description.de,ratePlans.*.descriptions.*.description.en,ratePlans.*.descriptions.*.description.fr,ratePlans.*.descriptions.*.description.it,ratePlans.*.descriptions.*.description.nl,ratePlans.*.descriptions.*.description.pl,ratePlans.*.descriptions.*.description.ru,ratePlans.*.descriptions.*.type,ratePlans.*.isSpecialOffer,ratePlans.*.lastUpdate,ratePlans.*.name.cs,ratePlans.*.name.de,ratePlans.*.name.en,ratePlans.*.name.fr,ratePlans.*.name.it,ratePlans.*.name.nl,ratePlans.*.name.pl,ratePlans.*.name.ru,ratePlans.*.rid,ratePlans.*.visibility,type.rid,rid,marketingGroups.*.rid,addressGroups.*.rid,amenities.*.rid,areaMap.coordinateX,areaMap.coordinateY,areaMap.number,areaMap.routeColor,category.rid,contacts.*.address.city.cs,contacts.*.address.city.de,contacts.*.address.city.en,contacts.*.address.city.fr,contacts.*.address.city.it,contacts.*.address.city.nl,contacts.*.address.city.pl,contacts.*.address.city.ru,contacts.*.address.country,contacts.*.address.name.cs,contacts.*.address.name.de,contacts.*.address.name.en,contacts.*.address.name.fr,contacts.*.address.name.it,contacts.*.address.name.nl,contacts.*.address.name.pl,contacts.*.address.name.ru,contacts.*.address.name2.cs,contacts.*.address.name2.de,contacts.*.address.name2.en,contacts.*.address.name2.fr,contacts.*.address.name2.it,contacts.*.address.name2.nl,contacts.*.address.name2.pl,contacts.*.address.name2.ru,contacts.*.address.postalCode,contacts.*.address.street.cs,contacts.*.address.street.de,contacts.*.address.street.en,contacts.*.address.street.fr,contacts.*.address.street.it,contacts.*.address.street.nl,contacts.*.address.street.pl,contacts.*.address.street.ru,contacts.*.email,contacts.*.fax,contacts.*.phone,contacts.*.type,contacts.*.website,descriptions.*.description.cs,descriptions.*.description.de,descriptions.*.description.en,descriptions.*.description.fr,descriptions.*.description.it,descriptions.*.description.nl,descriptions.*.description.pl,descriptions.*.description.ru,descriptions.*.type,district.rid,galeries.*.images.*.copyright,galeries.*.images.*.name.cs,galeries.*.images.*.name.de,galeries.*.images.*.name.en,galeries.*.images.*.name.fr,galeries.*.images.*.name.it,galeries.*.images.*.name.nl,galeries.*.images.*.name.pl,galeries.*.images.*.name.ru,galeries.*.images.*.heightPixel,galeries.*.images.*.isActive,galeries.*.images.*.license,galeries.*.images.*.order,galeries.*.images.*.rid,galeries.*.images.*.url,galeries.*.images.*.widthPixel,galeries.*.isActive,galeries.*.order,galeries.*.rid,hasApartments,hasDorms,hasPitches,hasRooms,hgvId,id,images.*.applicableEndDate,images.*.applicableStartDate,images.*.copyright,images.*.heightPixel,images.*.license,images.*.rid,images.*.url,images.*.widthPixel,images.*.name.cs,images.*.name.de,images.*.name.en,images.*.name.fr,images.*.name.it,images.*.name.nl,images.*.name.pl,images.*.name.ru,isAccommodation,isActive,isBookable,isCamping,isSuedtirolInfoActive,isTourismOrganizationMember,lastUpdate,lastUpdatePrices,lastUpdateAvailability,cinCode,mealPlans.*.rid,overview.camping.capacityPersons,overview.camping.dishwashingSpaces,overview.camping.laundrySpaces,overview.camping.pitches,overview.camping.showers,overview.camping.toilets,overview.checkInStartTime,overview.checkInEndTime,overview.checkOutStartTime,overview.checkOutEndTime,overview.luggageServiceEndTime,overview.luggageServiceStartTime,overview.parkingSpaces.garage,overview.parkingSpaces.outdoor,overview.receptionEndTime,overview.receptionStartTime,overview.roomServiceEndTime,overview.roomServiceStartTime,position.altitude,position.coordinates.*,position.coordinates,position.type,representationMode,reviews.*.id,reviews.*.isActive,reviews.*.rating,reviews.*.reviewsQuantity,reviews.*.status,reviews.*.type,roomGroups.*.amenities.*.rid,roomGroups.*.baths,roomGroups.*.classification,roomGroups.*.code,roomGroups.*.descriptions.*.description.cs,roomGroups.*.descriptions.*.description.de,roomGroups.*.descriptions.*.description.en,roomGroups.*.descriptions.*.description.fr,roomGroups.*.descriptions.*.description.it,roomGroups.*.descriptions.*.description.nl,roomGroups.*.descriptions.*.description.pl,roomGroups.*.descriptions.*.description.ru,roomGroups.*.descriptions.*.type,roomGroups.*.diningRooms,roomGroups.*.images.*.copyright,roomGroups.*.images.*.heightPixel,roomGroups.*.images.*.license,roomGroups.*.images.*.name.cs,roomGroups.*.images.*.name.de,roomGroups.*.images.*.name.en,roomGroups.*.images.*.name.fr,roomGroups.*.images.*.name.it,roomGroups.*.images.*.name.nl,roomGroups.*.images.*.name.pl,roomGroups.*.images.*.name.ru,roomGroups.*.images.*.order,roomGroups.*.images.*.rid,roomGroups.*.images.*.url,roomGroups.*.images.*.widthPixel,roomGroups.*.isActive,roomGroups.*.lastUpdate,roomGroups.*.livingRooms,roomGroups.*.minAmountPerPersonPerDay,roomGroups.*.minAmountPerUnitPerDay,roomGroups.*.name.cs,roomGroups.*.name.de,roomGroups.*.name.en,roomGroups.*.name.fr,roomGroups.*.name.it,roomGroups.*.name.nl,roomGroups.*.name.pl,roomGroups.*.name.ru,roomGroups.*.occupancy.max,roomGroups.*.occupancy.min,roomGroups.*.occupancy.minAdults,roomGroups.*.occupancy.standard,roomGroups.*.rid,roomGroups.*.roomQuantity,roomGroups.*.rooms.*.availability.isBlocked,roomGroups.*.rooms.*.availability.lastUpdate,roomGroups.*.rooms.*.availability.status,roomGroups.*.rooms.*.availability.statusStartDate,roomGroups.*.rooms.*.code,roomGroups.*.rooms.*.lastUpdate,roomGroups.*.rooms.*.rid,roomGroups.*.sleepingRooms,roomGroups.*.squareMeters,roomGroups.*.toilets,roomGroups.*.type,seasons.*.endDate,seasons.*.startDate,tourismOrganization.rid,trustyouScore,suedtirolGuestPass.isActive,suedtirolGuestPass.cardTypes.*.rid,accessibility.website.cs,accessibility.website.de,accessibility.website.en,accessibility.website.fr,accessibility.website.it,accessibility.website.nl,accessibility.website.pl,accessibility.website.ru,accessibility.description.cs,accessibility.description.de,accessibility.description.en,accessibility.description.fr,accessibility.description.it,accessibility.description.nl,accessibility.description.pl,accessibility.description.ru).
Response
successful operation
Example response
{
"success": true,
"data": [
{
"type": {
"rid": "87F729A5C92B49FE8FE146BBE86CBC78"
},
"ratePlans": [
{
"alpineBitsRatePlanId": "Vitae est.",
"chargeType": "undefined",
"code": "Similique.",
"descriptions": [
{
"description": {
"cs": "Sed quis.",
"de": "Eum.",
"en": "Tempore.",
"fr": "Ut sed.",
"it": "Quos.",
"nl": "Nihil.",
"pl": "Ut.",
"ru": "Ratione."
},
"type": "longDescription"
}
],
"lastUpdate": "1958-12-31T23",
"name": {
"cs": "Praesentium.",
"de": "Et.",
"en": "Corrupti.",
"fr": "Odit nemo a.",
"it": "Ullam.",
"nl": "Reiciendis.",
"pl": "Quas sed.",
"ru": "Aspernatur."
},
"rid": "EE7E54167C5999B1C23883CD4D05F52B",
"visibility": "undefined"
}
],
"rid": "FD036D23BC72D16BFD96AF2B1FF75925",
"marketingGroups": [
{
"rid": "8A5C9F932B7C89467A20590F261A22E9"
}
],
"addressGroups": [
{
"rid": "FA620E02D3EE43C41EF55654B2694EE7"
}
],
"amenities": [
{
"rid": "FFEFB23246832D56AED9BD7D1894B6FB"
}
],
"areaMap": {
"coordinateX": "Vitae.",
"coordinateY": "Qui.",
"number": "Vel ut.",
"routeColor": "Qui at."
},
"category": {
"rid": "C0060BB812DBA816F37D1C0ACFEE6D50"
},
"contacts": [
{
"address": {
"city": {
"cs": "Voluptas sit.",
"de": "Ea.",
"en": "Eaque.",
"fr": "Suscipit.",
"it": "Dolorum.",
"nl": "Iusto.",
"pl": "Non.",
"ru": "Autem."
},
"country": "IT",
"name": {
"cs": "Nulla.",
"de": "Quos quia.",
"en": "Labore.",
"fr": "Quod.",
"it": "A.",
"nl": "Omnis.",
"pl": "Quia.",
"ru": "Id."
},
"name2": {
"cs": "Aut veniam.",
"de": "Nihil.",
"en": "Voluptas.",
"fr": "Ut quae.",
"it": "Voluptatibus.",
"nl": "Et.",
"pl": "Culpa.",
"ru": "Quisquam."
},
"postalCode": "Aperiam.",
"street": {
"cs": "Est quo est.",
"de": "Omnis.",
"en": "Ut dolor.",
"fr": "Sapiente.",
"it": "Ut ea.",
"nl": "Vitae et.",
"pl": "Velit eum.",
"ru": "Eius est."
}
},
"email": "kterry@nicolas.info",
"fax": "Dolor.",
"phone": "Eaque.",
"type": "main",
"website": "Dignissimos."
}
],
"descriptions": [
{
"description": {
"cs": "Omnis.",
"de": "Ad qui.",
"en": "Dicta.",
"fr": "Est ut.",
"it": "Nisi vel.",
"nl": "Eum magni.",
"pl": "Aut.",
"ru": "Corporis."
},
"type": "longDescription"
}
],
"district": {
"rid": "F86D5765163C6A713089AC2C563F3422"
},
"galeries": [
{
"images": [
{
"copyright": "Id quo.",
"name": {
"cs": "Ut rerum.",
"de": "Velit natus.",
"en": "Quod.",
"fr": "Eos et.",
"it": "Sed.",
"nl": "Consequatur.",
"pl": "Velit.",
"ru": "Dolore."
},
"heightPixel": 72,
"isActive": true,
"license": "lts",
"order": 6,
"rid": "A13A80C25FB72802F4BEB1BB4864A0A9",
"url": "http://www.schiller.org/minus-error-molestiae-explicabo-qui-enim-corporis-nesciunt-iure",
"widthPixel": 26
}
],
"order": 64,
"rid": "8E0DF6CAB458A703C6D202B087AB988C"
}
],
"hasApartments": true,
"hasDorms": true,
"hasRooms": true,
"hgvId": 86,
"id": 87,
"images": [
{
"applicableEndDate": "1937-09-26T16",
"applicableStartDate": "2011-06-19T18",
"copyright": "Iste et.",
"heightPixel": 58,
"license": "lts",
"rid": "960EF6D8122D2A9EE2D7D49D2E2C44B0",
"url": "http://www.sauer.com/tempora-sed-doloribus-cumque-alias",
"widthPixel": 81,
"name": {
"cs": "Suscipit.",
"de": "In earum.",
"en": "Quasi.",
"fr": "Eius.",
"it": "Eaque nobis.",
"nl": "Modi.",
"pl": "Minus sunt.",
"ru": "Tempora atque."
}
}
],
"isActive": true,
"lastUpdate": "2002-06-07T00",
"lastUpdatePrices": "1983-11-02T21",
"lastUpdateAvailability": "1952-03-14T04",
"cinCode": "Rerum.",
"mealPlans": [
{
"rid": "164B79D9461833B608B29962FAD6B737"
}
],
"overview": {
"camping": {
"dishwashingSpaces": 9,
"laundrySpaces": 11,
"pitches": 50,
"showers": 38,
"toilets": 34
},
"checkInStartTime": "14",
"checkInEndTime": "08",
"checkOutStartTime": "13",
"checkOutEndTime": "19",
"luggageServiceEndTime": "17",
"luggageServiceStartTime": "01",
"parkingSpaces": {
"garage": 92,
"outdoor": 32
},
"receptionEndTime": "03",
"receptionStartTime": "07",
"roomServiceEndTime": "16",
"roomServiceStartTime": "15"
},
"position": {
"altitude": 40,
"coordinates": [
35586615
],
"type": "point"
},
"representationMode": "minimal",
"reviews": [
{
"id": "Et.",
"rating": 73951590,
"reviewsQuantity": 8,
"status": "notRated",
"type": "independent"
}
],
"roomGroups": [
{
"amenities": [
{
"rid": "E403512AE5CA0C53704E767D71BAEBD7"
}
],
"baths": 39,
"classification": "pitchOrTent",
"code": "Quo.",
"descriptions": [
{
"description": {
"cs": "Sint ad.",
"de": "Facilis.",
"en": "Est sed.",
"fr": "Velit ut.",
"it": "Ut.",
"nl": "Dolorem.",
"pl": "Ut beatae.",
"ru": "Voluptas."
},
"type": "longDescription"
}
],
"diningRooms": 71,
"images": [
{
"copyright": "Tempore.",
"heightPixel": 29,
"license": "cc0",
"name": {
"cs": "Nobis.",
"de": "Commodi.",
"en": "Quo est.",
"fr": "Vero vero.",
"it": "Eius iste.",
"nl": "Soluta.",
"pl": "Accusamus.",
"ru": "Ea non."
},
"order": 71,
"rid": "07E4008C91AA1680F2621942F9341993",
"url": "http://marvin.info/maiores-est-impedit-voluptas-voluptatem-rem-velit-et",
"widthPixel": 57
}
],
"isActive": true,
"lastUpdate": "2006-05-22T04",
"livingRooms": 92,
"minAmountPerPersonPerDay": 283260056,
"minAmountPerUnitPerDay": 34110,
"name": {
"cs": "Nam officia.",
"de": "Fuga.",
"en": "Qui.",
"fr": "Ea velit vel.",
"it": "Vero velit.",
"nl": "Officiis.",
"pl": "Dolorum sed.",
"ru": "Esse cum."
},
"occupancy": {
"max": 44,
"min": 34,
"minAdults": 12,
"standard": 54
},
"rid": "8948D32B1AB68924EB72A5D3ED1B47B1",
"roomQuantity": 80,
"rooms": [
{
"availability": {
"isBlocked": true,
"lastUpdate": "1975-08-12T19",
"status": "Nostrum.",
"statusStartDate": "2021-06-26T22"
},
"code": "Omnis.",
"lastUpdate": "1993-09-23T20",
"rid": "D945944B11C225CFDEAF78CE3710C679"
}
],
"sleepingRooms": 2,
"squareMeters": 13,
"toilets": 2,
"type": "room"
}
],
"seasons": [
{
"endDate": "2023-10-07T07",
"startDate": "2005-05-15T09"
}
],
"tourismOrganization": {
"rid": "498F48DE6762A05CFA9E8426358DC5B5"
},
"trustyouScore": 74,
"suedtirolGuestPass": {
"isActive": true,
"cardTypes": [
{
"rid": "83DEBE53AD5CE79F0521928FE300E527"
}
]
},
"accessibility": {
"website": {
"cs": "http://www.stiedemann.biz/nobis-ducimus-veritatis-animi-voluptate-et-similique-voluptatem-et.html",
"de": "https://www.tillman.com/saepe-ipsam-non-quia-aut",
"en": "http://bartoletti.com/placeat-natus-amet-quam-quia-explicabo-quis-facere-numquam.html",
"fr": "http://www.cronin.net/dolorem-ut-non-ut-atque",
"it": "http://www.stokes.com/alias-velit-et-amet-similique.html",
"nl": "http://www.welch.biz/nesciunt-impedit-et-aut-blanditiis-rerum.html",
"pl": "http://gorczany.org/excepturi-sunt-nesciunt-distinctio-ullam",
"ru": "http://padberg.net/"
},
"description": {
"cs": "Sapiente.",
"de": "Et.",
"en": "Ut.",
"fr": "Enim.",
"it": "Officia.",
"nl": "Pariatur.",
"pl": "Quia ab.",
"ru": "Cumque."
}
}
}
],
"resultSet": {
"rid": "655309E74226F9C964F4FFC6DBC52814",
"filterAndSummaryGroups": [
{
"id": 4,
"type": "amenity",
"filters": [
{
"id": 22,
"count": 2,
"rids": [
"F56A631D32900C74DD3581C19B358608"
]
}
]
}
]
}
}Changes
No recorded changes to this operation across all 1 revision of this API.