Skip to content

Create

POST
/api/managing-entity/{managingEntityIdentifier}/wink-links/syndication/entry
curl --request POST \
--url https://api.wink.travel/api/managing-entity/d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69/wink-links/syndication/entry \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '{ "contentUrl": "https://www.thesiamresidences.com/explore", "descriptions": [ { "creator": "USER", "description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.", "language": "en", "md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82", "name": "Deluxe River View Suite" } ], "disabled": false, "display": "Embedding a tweet", "hashTags": [ "TravelSolo" ], "lockCode": "ABC1234", "multimedias": "For web links, it would be the Open Graph image url. For a file upload, it would be the multipart file.", "publishDate": "2026-01-15T10:30:00Z", "publishStatus": "PUBLISHED", "sort": 0, "tags": [ { "label": "Hotel & Resort", "value": "HOTEL" } ], "title": "Explore Our Luxury Collection", "type": "WEB_LINK", "uniqueId": "siam1", "userTags": [ "maniot" ] }'

Creates a new WinkLinks entry from a fully specified upsert payload.

managingEntityIdentifier
required
string

Create entry for this managing entity identifier.

Example
d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69
Wink-Version
string
default: 2.0.0
Allowed values: 2.0

WinkLinks entry to create

Media typeapplication/json

Request payload for creating or updating a syndicated item on a WinkLinks profile page.

object
contentUrl
required

The URL of this entry

string format: uri
>= 1 characters
Example
https://www.thesiamresidences.com/explore
descriptions
required

Localized descriptions describing inventory.

Array<object>
>= 1 items

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
Example
SYSTEM
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
Example
This is a longer description in the specified language.
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
Example
en
md5ContentHash

The md5 hash of the name, description and language.

string
Example
d41d8cd98f00b204e9800998ecf8427e
name
required

Use as title or short text description

string
Example
An example title
Example
{
"creator": "USER",
"description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.",
"language": "en",
"md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82",
"name": "Deluxe River View Suite"
}
disabled

Whether author wants to disable the post.

boolean
Example
false
display

Whether to treat all links as flat web links or try to embed more advanced data.

string
Allowed values: FROM_SETTINGS FROM_LAYOUT BANNER BANNER_INTELLIGENT
Example
Embedding a tweet
hashTags
Array<string>
lockCode

Optional code the author can require be entered by the user in order to access the post.

string
Example
ABC1234
metadata

Extended metadata

object
key
additional properties
multimedias

The main media for this entry.

Array<object>

Multimedia that contains less information than Multimedia object

object
angle

Media angle

string
Example
-90
attribution

Whether image has attribution properties

Array<object>
object
name
required

Name of contributor

string
>= 1 characters
Example
Samuel Adams
url

URL to contributor

string format: uri
Example
https://maps.google.com/maps/contrib/111628493169070103594
Example
{
"name": "Samuel Adams",
"url": "https://maps.google.com/maps/contrib/111628493169070103594"
}
category

Supported OTA specification PIC code. See OTA geoname data

string
Example
1
descriptions

Localized media captions to give user some context about where this media was taken.

Array<object>

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
Example
SYSTEM
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
Example
This is a longer description in the specified language.
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
Example
en
md5ContentHash

The md5 hash of the name, description and language.

string
Example
d41d8cd98f00b204e9800998ecf8427e
name
required

Use as title or short text description

string
Example
An example title
Example
{
"creator": "USER",
"description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.",
"language": "en",
"md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82",
"name": "Deluxe River View Suite"
}
height
required

Media height in pixels.

integer format: int32
>= 1
Example
1600
identifier
required

Use this identifier to communicate with Cloudinary.

string
>= 1 characters
Example
cloudinary-image-1
isLandscape

True if media width is greater or equal to height

boolean
Example
true
lifestyleType

Associate this media with a specific lifestyle type. A user searching and filtering inventory based on lifestyles can be shown relevant media first.

string
Allowed values: LIFESTYLE_HEALTH_FITNESS LIFESTYLE_RELAX LIFESTYLE_ADULT_ONLY LIFESTYLE_ADVENTURE LIFESTYLE_BUSINESS LIFESTYLE_LGBT LIFESTYLE_SINGLE_PARENT LIFESTYLE_SOLO_FEMALE LIFESTYLE_BEAUTY LIFESTYLE_FOODIE LIFESTYLE_FAMILY LIFESTYLE_ROMANCE LIFESTYLE_COUPLE LIFESTYLE_SOLO LIFESTYLE_BACKPACKER LIFESTYLE_SHOPPING LIFESTYLE_SPORTS LIFESTYLE_MOUNTAIN LIFESTYLE_BEACH LIFESTYLE_CITY LIFESTYLE_COUNTRY LIFESTYLE_CULTURE LIFESTYLE_ECO
Example
LIFESTYLE_HEALTH_FITNESS
multimediaIdentifier
required

Document identifier

string format: uuid
>= 1 characters
Example
3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51
published

Instead of deleting the media, choose to un-publish it instead for later re-use. Could be you keep seasonal images of the property.

boolean
Example
true
sort
required

Sort allows you to control how you want to sort this record in a list of media records.

integer format: int32
default: 999
Example
10
source
required

Currently ONLY using Cloudinary to store all image / video assets.

string
default: CLOUDINARY
Allowed values: YOUTUBE CLOUDINARY
Example
CLOUDINARY
type
required

Whether Cloudinary media is a VIDEO or IMAGE.

string
Allowed values: IMAGE VIDEO AUDIO RAW
Example
IMAGE
width
required

Media width in pixels.

integer format: int32
>= 1
Example
2560
Example
{
"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
}
Example
For web links, it would be the Open Graph image url. For a file upload, it would be the multipart file.
publishDate

An optional date for when this post will be displayed.

string format: date-time
Example
2026-01-15T10:30:00Z
publishStatus

Publish status of post.

string
default: PUBLISHED
Allowed values: PUBLISHED ARCHIVED
Example
PUBLISHED
sort
required

Display slot for this entry (0-based index)

integer format: int32
Example
0
tags

Optional user categories

Array<object>

Immutable key-value pair associating a machine-readable value with a human-readable label.

object
label
required

English readable text of the value.

string
>= 1 characters
Example
Readable text label
value
required

The value that should be persisted.

string
>= 1 characters
Example
id-1
Example
{
"label": "Hotel & Resort",
"value": "HOTEL"
}
title
required

The title of this entry

string
>= 1 characters
Example
Explore Our Luxury Collection
type
required

The syndication entry type

string
Allowed values: WEB_LINK MAP GRID CARD FILE QUOTE POST LOCKED
Example
WEB_LINK
uniqueId

Optional 5-character unique code that can be used to access this record.

string
>= 5 characters <= 5 characters
Example
siam1
userTags
Array<string>
Example
{
"contentUrl": "https://www.thesiamresidences.com/explore",
"descriptions": [
{
"creator": "USER",
"description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.",
"language": "en",
"md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82",
"name": "Deluxe River View Suite"
}
],
"disabled": false,
"display": "Embedding a tweet",
"hashTags": [
"TravelSolo"
],
"lockCode": "ABC1234",
"multimedias": "For web links, it would be the Open Graph image url. For a file upload, it would be the multipart file.",
"publishDate": "2026-01-15T10:30:00Z",
"publishStatus": "PUBLISHED",
"sort": 0,
"tags": [
{
"label": "Hotel & Resort",
"value": "HOTEL"
}
],
"title": "Explore Our Luxury Collection",
"type": "WEB_LINK",
"uniqueId": "siam1",
"userTags": [
"maniot"
]
}

WinkLinks entry created

Media typeapplication/json

Lightweight projection of a WinkLinks syndicated entry, representing a single link, card, map, file, or other content type displayed on an affiliate’s link-in-bio profile page.

object
contentUrl

The url of this entry

string format: uri
createdDate

Datetime this record was first created

string | null format: date-time
descriptions

Localized descriptions describing inventory.

Array<object>

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
md5ContentHash

The md5 hash of the name, description and language.

string
name
required

Use as title or short text description

string
disabled

Whether author wants to disable the post.

boolean
display

Whether to treat all links as flat web links or try to embed more advanced data.

string
Allowed values: FROM_SETTINGS FROM_LAYOUT BANNER BANNER_INTELLIGENT
hashTags
Array<string>
id

Unique identifier for this record.

string format: uuid
lastUpdate

Datetime this record was last updated

string | null format: date-time
lockCode

Optional code the author can require be entered by the user in order to see the post.

string
metadata

Extended metadata

object
key
additional properties
multimedias

The main multimedias for this entry.

Array<object>

Multimedia that contains less information than Multimedia object

object
angle

Media angle

string
attribution

Whether image has attribution properties

Array<object>
object
name
required

Name of contributor

string
>= 1 characters
url

URL to contributor

string format: uri
category

Supported OTA specification PIC code. See OTA geoname data

string
descriptions

Localized media captions to give user some context about where this media was taken.

Array<object>

Foundation class for storing multi-language content (names and descriptions) with content change detection throughout the Wink Platform.

object
creator

Whether it was user or system generated.

string
default: USER
Allowed values: SYSTEM USER
description
required

Longer text description

string
>= 1 characters <= 2147483647 characters
hashMismatch
boolean
language
required

Indicate which language this description is written in.

string
default: en >= 2 characters <= 2 characters /^[a-z]{2}(-[A-Z]{2})?$/
md5ContentHash

The md5 hash of the name, description and language.

string
name
required

Use as title or short text description

string
height
required

Media height in pixels.

integer format: int32
>= 1
identifier
required

Use this identifier to communicate with Cloudinary.

string
>= 1 characters
isLandscape

True if media width is greater or equal to height

boolean
lifestyleType

Associate this media with a specific lifestyle type. A user searching and filtering inventory based on lifestyles can be shown relevant media first.

string
Allowed values: LIFESTYLE_HEALTH_FITNESS LIFESTYLE_RELAX LIFESTYLE_ADULT_ONLY LIFESTYLE_ADVENTURE LIFESTYLE_BUSINESS LIFESTYLE_LGBT LIFESTYLE_SINGLE_PARENT LIFESTYLE_SOLO_FEMALE LIFESTYLE_BEAUTY LIFESTYLE_FOODIE LIFESTYLE_FAMILY LIFESTYLE_ROMANCE LIFESTYLE_COUPLE LIFESTYLE_SOLO LIFESTYLE_BACKPACKER LIFESTYLE_SHOPPING LIFESTYLE_SPORTS LIFESTYLE_MOUNTAIN LIFESTYLE_BEACH LIFESTYLE_CITY LIFESTYLE_COUNTRY LIFESTYLE_CULTURE LIFESTYLE_ECO
multimediaIdentifier
required

Document identifier

string format: uuid
>= 1 characters
published

Instead of deleting the media, choose to un-publish it instead for later re-use. Could be you keep seasonal images of the property.

boolean
sort
required

Sort allows you to control how you want to sort this record in a list of media records.

integer format: int32
default: 999
source
required

Currently ONLY using Cloudinary to store all image / video assets.

string
default: CLOUDINARY
Allowed values: YOUTUBE CLOUDINARY
type
required

Whether Cloudinary media is a VIDEO or IMAGE.

string
Allowed values: IMAGE VIDEO AUDIO RAW
width
required

Media width in pixels.

integer format: int32
>= 1
ownerIdentifier

The user’s owner company this entry associates with

string format: uuid
publishDate

An optional date for when this post will be displayed.

string format: date-time
publishStatus

Publish status of post.

string
default: PUBLISHED
Allowed values: PUBLISHED ARCHIVED
sort

How the author wants this entry to get sorted

integer format: int32
status

This can change if it’s linked to travel inventory that is no longer available.

string
Allowed values: ACTIVE INACTIVE REMOVED
tags

Optional user categories

Array<object>

Immutable key-value pair associating a machine-readable value with a human-readable label.

object
label
required

English readable text of the value.

string
>= 1 characters
value
required

The value that should be persisted.

string
>= 1 characters
title

The site name of this entry

string
type

The syndication entry type

string
Allowed values: WEB_LINK MAP GRID CARD FILE QUOTE POST LOCKED
uniqueId

Optional unique code that can be used to access this record.

string
userIdentifier

Creator of entry

string format: uuid
userTags
Array<string>
version

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.

integer | null format: int64
Example
{
"contentUrl": "https://www.google.com",
"createdDate": "2026-01-14T09:30:00",
"descriptions": [
{
"creator": "USER",
"description": "Spacious suite with floor-to-ceiling windows overlooking the Chao Phraya River, featuring a king-size bed, private balcony, and marble bathroom.",
"language": "en",
"md5ContentHash": "a3f1c8e2d74b60912a5c3e9b1d7f4e82",
"name": "Deluxe River View Suite"
}
],
"disabled": false,
"display": "Embedding a tweet",
"hashTags": [
"#TravelSolo"
],
"id": "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47",
"lastUpdate": "2026-02-03T16:45:12",
"lockCode": "ABC123",
"multimedias": "For web links, it would be the Open Graph image url. For a file upload, it would be the multipart file.",
"ownerIdentifier": "d5b8a3c2-9e6f-4a1b-8d34-7c2e1f0a5b69",
"publishDate": "2026-01-15T10:30:00Z",
"publishStatus": "PUBLISHED",
"sort": 0,
"status": "ACTIVE",
"tags": [
{
"label": "Hotel & Resort",
"value": "HOTEL"
}
],
"title": "Google",
"type": "WEB_LINK",
"uniqueId": "https://trvl.as/Hbgt56",
"userIdentifier": "c3a9f2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84",
"userTags": [
"@maniot"
],
"version": 3
}

Bad Request — missing or invalid request parameter or body

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unauthorized — authentication is required or the session has expired

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Forbidden — authenticated but lacking the required permission or scope

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Not Found — the requested resource does not exist

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Method Not Allowed — the HTTP verb is not supported on this endpoint

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Conflict — the resource was modified by someone else since you read it; re-read it and retry with the new version

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Unsupported Media Type — use application/json

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Internal Server Error — an unexpected failure occurred on the server

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}

Service Unavailable — a downstream dependency is unreachable

Media typeapplication/problem+json
object
detail
string
instance
string format: uri
properties
object
key
additional properties
status
integer format: int32
title
string
type
string format: uri
Examplegenerated
{
"detail": "example",
"instance": "https://example.com",
"properties": {
"additionalProperty": "example"
},
"status": 1,
"title": "example",
"type": "https://example.com"
}