List
const url = 'https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/customization/list';const options = { method: 'GET', headers: {'Wink-Version': '2.0', Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/customization/list \ --header 'Authorization: Bearer <token>' \ --header 'Wink-Version: 2.0'Returns every customization template owned by the given managing entity.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Retrieve customizations owned by this managing entity
Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69Header Parameters
Section titled “Header Parameters”Responses
Section titled “Responses”List of all customization templates owned by the managing entity
Lightweight projection of a customization configuration used in listings and cross-module references
object
Whether to append text to the existing booking customization page title.
Choose the card design to use on our web component cards.
Choose how you large you want our web component cards to be.
GeoNames have been created at https://geonames.org and contain geographical destinations we use as geoname data to associate travel inventory with a location.
object
Ascii name of city
Country
object
Country capital
Continent code
Currency code
Currency name
Country GeoNames identifier
ISO code
Country name
ISO 3166-1 alpha-2 country code for the country this location belongs to
GeoNames specific feature code identifying the place type (e.g. PPL=populated place, PPLC=national capital, ISL=island)
GeoName identifier
Coordinate points of the city
object
Name of city
Country sub division
object
Sub-country ascii name
Sub-country GeoNames identifier
Sub-country name
Country sub sub division
object
ASCII-transliterated name of the county or district, safe for URLs and sorting
GeoNames.org unique identifier for this subdivision
Official name of the county or district in its local script
IANA timezone identifier for the location
GeoNameLightweight type
Url name
Datetime this record was first created
Control which currency your users see prices in initially.
Control which language your users see text in initially.
Control which lifestyle contextx your users see initially.
Set a fixed itinerary end date ONLY populate this field if you want to fix the itinerary date. Also, leave numberOfAdvanceDays and numberOfStayDays empty.
Custom font for the booking engine. Null means use the system default.
Your GA4 Measurement ID (G-XXXXXXX). Configured client-side via gtag; the purchase event fires on the thank-you page, not server-side.
If you want your users to see Google Maps in your hosted booking customization, go to Google Maps and create an API key for your site.
If you want to track analytics and you have a GTM Container ID, enter it here. Treated as a black box and loaded client-side; the container’s own tags decide what fires.
If you are self-hosting our booking customization, let us know where it is hosted. Note: This url needs to be secured with SSL.
Unique identifier for this record.
Datetime this record was last updated
Choose how you want our web component cards laid out.
Customize booking confirmation emails by adding a custom logo to your configuration.
Multimedia that contains less information than Multimedia object
object
Media angle
Whether image has attribution properties
object
Name of contributor
URL to contributor
Supported OTA specification PIC code. See OTA geoname data
Localized media captions to give user some context about where this media was taken.
Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.
object
Whether it was user or system generated.
Longer text description
Indicate which language this description is written in.
The md5 hash of the name, description and language.
Use as title or short text description
Media height in pixels.
Use this identifier to communicate with Cloudinary.
True if media width is greater or equal to height
Associate this media with a specific lifestyle type. A user searching and filtering inventory based on lifestyles can be shown relevant media first.
Document identifier
Instead of deleting the media, choose to un-publish it instead for later re-use. Could be you keep seasonal images of the property.
Sort allows you to control how you want to sort this record in a list of media records.
Currently ONLY using Cloudinary to store all image / video assets.
Whether Cloudinary media is a VIDEO or IMAGE.
Media width in pixels.
Engine configuration name
You can control the initial itinerary date used to retrieve travel inventory prices. You can do it in one of two ways: 1. Dynamically set the date by indicating how long and how many days in advance (this field), of today’s date, you want to display prices for. 2. Set a fixed date to display prices for. Option 1 is the most shared. Option 2 is for when you want to create a new customization and apply it to a specific event that occurs on a specific date. If you don’t use either of these options, the itinerary will default to today’s date with one night stay. ONLY populate this field if you want to control the itinerary date. Also, leave startDate and endDate empty.
You can control the initial itinerary date used to retrieve travel inventory prices. You can do it in one of two ways: 1. Dynamically set the date by indicating how long (this field) and how many days in advance, of today’s date, you want to display prices for. 2. Set a fixed date to display prices for. Option 1 is the most shared. Option 2 is for when you want to create a new customization and apply it to a specific event that occurs on a specific date. If you don’t use either of these options, the itinerary will default to today’s date with one night stay. ONLY populate this field if you want to control the itinerary date. Also, leave startDate and endDate empty.
Engine configuration record creator identifier
Name of company owner.
Indicates whether this configuration is primary. A primary configuration cannot be removed.
If you’ve received special promotional codes from suppliers to give to your audience, you can choose to bake these code directly into the price by entering them here.
Control how many adults / children will be staying and how many of that room to book. Defaults to: One room, two adults.
object
Number of adult guests in this room type
Child guests in this room, with age groups
Child guest with age and quantity in a room configuration
object
Age of each child in this group (years)
Count of children of this age group in the room
Number of identical rooms with this configuration
Flag to indicate you are self-hosting our booking customization and not using our default booking customization url.
An integrator can choose to disable outgoing emails to users because they want to do that themselves.
An integrator can choose to disable notifying the property’s channel manager. Note: This should ONLY be done for testing.
An integrator can choose to disable outgoing emails to properties because they want to do that themselves.
Whether to display rankings (lifestyle, eco score and reviews) on hotel landing page.
This feature flag controls whether to let a user move away from the hotel landing page using search.
Show unavailable inventory card when inventory not currently for sale. Otherwise, it displays a normal card but without the price.
Set a fixed itinerary start date. ONLY populate this field if you want to fix the itinerary date. Also, leave numberOfAdvanceDays and numberOfStayDays empty.
Sales channel sub-type.
Choose how you want our web components to look and more closely match with your own site style.
object
Body color
Danger color
Dark color
Info color
Light color
Muted color
Primary color
Secondary color
Success color
Warning color
White color
Tracking pixels and web beacons for analytics and conversion tracking.
Tracking pixel or web beacon configuration that fires on specified booking events for analytics and conversion tracking
object
Optional access token for providers that require authentication
Consent category for GDPR/CCPA compliance
Custom image URL for IMAGE type pixels. Will be loaded as a 1x1 tracking pixel.
Custom JavaScript code for CUSTOM provider type. Will be injected into the page.
Whether this tracking pixel is currently active
Unique identifier for this tracking pixel
User-friendly name for this tracking pixel
Page types where this pixel should fire. Empty list or containing ALL means fire on all pages.
Provider-specific pixel ID (e.g., Facebook Pixel ID, Google Ads Conversion ID)
Tracking pixel provider
Event triggers that cause this pixel to fire, with optional custom parameters.
Defines a booking funnel event that causes a tracking pixel to fire, together with optional custom key-value parameters sent with the event
object
The event type that triggers this pixel
Custom key-value parameters to include with the event
Key-value parameter passed with a tracking pixel event; values may be static strings or runtime placeholders such as {booking.total}
object
Parameter name (e.g., ‘currency’, ‘value’, ‘content_id’)
Parameter value. Can be a static value or a placeholder like ‘{booking.total}’
Type of tracking pixel delivery mechanism
If true, we use numberOfAdvanceDays / numberOfStayDays properties - false, we use startDate / endDate
Authenticated user identifier
Optimistic-locking version. Echo this value back as an If-Match request header on a conditional update; the server responds 409 if the record changed in the meantime. Null when this projection has no backing versioned document, in which case no conditional update is possible.
Action to complete once a user clicks on the CTA button on inventory.
Example
[ { "appendToPageTitle": "Hotels with Benefits", "cardDesign": "DEFAULT", "cardLayout": "VERTICAL", "city": { "admin1Code": "40", "admin2Code": "2401", "admin3Code": "", "admin4Code": "", "alternateCountryCodes": [], "alternateNames": [ "Krung Thep", "BKK" ], "asciiName": "Bangkok", "country": { "area": 514000, "capital": "Bangkok", "continent": "AS", "currencyCode": "THB", "currencyName": "Baht", "fips": "TH", "geoNameId": "1605651", "iso": "TH", "iso3": "THA", "isoNumeric": 764, "languages": [ "th" ], "name": "Thailand", "neighbors": [ "LA", "MM", "KH", "MY" ], "phone": "66", "population": 69428524, "postalCodeFormat": "#####", "postalCodeRegEx": "^(\\d{5})$", "topLevelDomain": ".th" }, "countryCode": "TH", "digitalElevationModel": "3", "elevation": 5, "featureClass": "P", "featureCode": "PPLC", "geoNameId": "1609350", "location": { "coordinates": [ 100.5581533, 13.7370197 ], "type": "POINT" }, "modificationDate": "2023-06-15", "name": "Bangkok", "population": 10539415, "radiusInMeters": 50000, "subCountry": { "asciiName": "Bangkok", "code": "TH.40", "countryCode": "TH", "geoNameId": "1609350", "name": "Bangkok", "subCountryCode": "40" }, "subSubCountry": { "asciiName": "Bangkok District", "code": "TH.40.2401", "countryCode": "TH", "geoNameId": "1609352", "name": "Bangkok District", "subCountryCode": "40", "subSubCountryCode": "2401" }, "timezone": "Asia/Bangkok", "type": "CITY", "urlName": "bangkok-thailand" }, "createdDate": "2026-01-14T09:30:00", "defaultCurrency": "THB", "defaultLanguage": "en", "defaultLifestyle": "LIFESTYLE_HEALTH_FITNESS", "endDate": "2026-07-22", "googleAnalyticsMeasurementId": "G-ABCDEF1234", "googleMapsAPIKey": "AIzaSyC5H2f7Vf6-6b2dZWfZf6-6b2dZWfZf6-6", "googleTagManagerContainerId": "GTM-XXXXX", "hostedBookingEngineUrl": "https://book.thesiamresidences.com/reservations", "id": "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47", "lastUpdate": "2026-02-03T16:45:12", "layout": "INFORMATIONAL", "logos": [ { "angle": null, "attribution": [], "category": "2", "descriptions": [ { "description": "Elegant lobby of The Siam Residences", "language": "en", "title": "Lobby Entrance" } ], "height": 1600, "identifier": "the-siam-residences/lobby-entrance", "isLandscape": true, "lifestyleType": null, "multimediaIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51", "published": true, "sort": 10, "source": "CLOUDINARY", "type": "IMAGE", "width": 2560 } ], "name": "Luxury Travel Portal", "numberOfAdvanceDays": 7, "numberOfStayDays": 3, "ownerIdentifier": "d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69", "ownerName": "Premium Hotels International", "primary": true, "roomConfiguration": { "adults": 2, "children": [ { "age": 7, "quantity": 2 } ], "quantity": 2 }, "selfHosted": true, "sendBookingNotificationEmailsToBooker": true, "sendBookingNotificationEmailsToChannelManager": true, "sendBookingNotificationEmailsToProperty": true, "showRankings": true, "showSearch": true, "showUnavailableCard": false, "startDate": "2026-07-15", "subType": "APPLICATION", "themeColors": { "body": "#212529", "danger": "#dc3545", "dark": "#343a40", "info": "#17a2b8", "light": "#f8f9fa", "muted": "#6c757d", "primary": "#dc3545", "secondary": "#6c757d", "success": "#28a745", "warning": "#ffc107", "white": "#ffffff" }, "trackingPixels": [ { "accessToken": "EAABsbCS0kB4BAAI...", "consentCategory": "MARKETING", "customImageUrl": "https://res.cloudinary.com/wink/image/upload/v1/pixel/conversion.gif", "customScript": "!function(f,b,e,v,n,t,s){/* custom pixel code */}(window, document);", "enabled": true, "identifier": "f8e4b2c9-3a7d-4c1f-9e5b-2d6f1a8c4e73", "name": "Facebook Conversion Pixel", "pixelId": "1234567890", "provider": "FACEBOOK", "triggers": [ { "eventType": "PURCHASE", "parameters": [ { "key": "currency", "value": "USD" } ] } ], "type": "JAVASCRIPT" } ], "useDays": true, "userIdentifier": "c3a9f2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84", "version": 3, "wcBookClickAction": "IBE_MODAL" }]Bad Request — missing or invalid request parameter or body
object
object
Example
Unauthorized — authentication is required or the session has expired
object
object
Example
Forbidden — authenticated but lacking the required permission or scope
object
object
Example
Not Found — the requested resource does not exist
object
object
Example
Method Not Allowed — the HTTP verb is not supported on this endpoint
object
object
Example
Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version
object
object
Example
Unsupported Media Type — use application/json
object
object
Example
Internal Server Error — an unexpected failure occurred on the server
object
object
Example
Service Unavailable — a downstream dependency is unreachable
