Skip to content

Update User Profile

PUT
/api/profile
curl --request PUT \
--url https://api.wink.travel/api/profile \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Wink-Version: 2.0' \
--data '{ "personal": { "address1": "123 Petchburi Road", "address2": "Ratchathewi District", "birthDate": "1985-06-15", "childQuantity": 2, "citizenship": "Thailand", "city": "Bangkok", "contactPerson": [ { "email": "[email protected]", "firstName": "Alexandra", "fullName": "Alexandra Beaumont", "lastName": "Beaumont", "phoneNumber": "+12125551212", "secondaryEmail": "[email protected]", "summary": "John Smith ([email protected] / +12125551212)" } ], "country": "TH", "gender": "FEMALE", "language": "en", "maritalStatus": "MARRIED", "petInfo": [ { "name": "Luna", "type": "Golden Retriever" } ], "postalCode": "10400", "preferredCurrency": "USD", "state": "Bangkok" }, "preferences": { "bedTypePref": "King bed", "cuisinePref": "Thai", "foodSrvcPref": "In-room dining", "guestType": "Business traveler", "hotelChainPref": "Mandarin Oriental", "mealPref": "Continental breakfast", "physChalFeaturePref": "Wheelchair accessible rooms", "propertyLocationPref": "Beachfront", "propertyTypePref": "Luxury Resort", "roomLocationPref": "High floor with city view", "smokingAllowed": false }, "share": true, "user": { "email": "[email protected]", "firstName": "Alexandra", "fullName": "Alexandra Beaumont", "lastName": "Beaumont", "phone": "+66212658866", "profilePictureUrl": "https://res.cloudinary.com/wink/image/upload/v1/user/alexandra-beaumont.jpg" } }'

Updates the authenticated user’s profile with the provided information. Persists personal details, preferences, and sharing settings. Returns the updated profile.

Wink-Version
string
default: 2.0.0
Allowed values: 2.0

User profile data to update

Media typeapplication/json

Request payload for creating or updating the authenticated user’s profile

object
personal

Detailed customer information for this profile

object
address1

Primary address line

string
Example
123 Petchburi Road
address2

Secondary address line

string
Example
Ratchathewi District
birthDate

Date of birth in ISO 8601 format

string format: date
Example
1985-06-15
childQuantity

Number of children

integer format: int32
Example
2
citizenship

Country of citizenship

string
Example
Thailand
city

City name

string
Example
Bangkok
contactPerson
Array<object>

Array of emergency contact information for the customer

object
email

Contact E-mail

string format: email
firstName

Contact first name

string
Example
Alexandra
fullName

First and last name

string
Example
Alexandra Beaumont
lastName

Contact last name

string
Example
Beaumont
phoneNumber

Contact phone number

string
/^\+?[1-9]\d{1,14}$/
Example
+12125551212
secondaryEmail

Contact secondary Email

string format: email
summary

Summary

string
Example
John Smith ([email protected] / +12125551212)
Example
{
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phoneNumber": "+12125551212",
"secondaryEmail": "[email protected]",
"summary": "John Smith ([email protected] / +12125551212)"
}
country

Country code (ISO 3166-1 alpha-2)

string
/^[A-Z]{2}$/
Example
TH
gender

Identifies the gender of the customer.

string
Allowed values: MALE FEMALE OTHER
Example
FEMALE
language

Primary language (ISO 639-1 code)

string
/^[a-z]{2}(-[A-Z]{2})?$/
Example
en
maritalStatus

Marital status of the traveler

string
Allowed values: ANNULLED COHABITATING DIVORCED ENGAGED MARRIED SEPARATED SINGLE WIDOWED UNKNOWN
Example
MARRIED
petInfo
Array<object>

Array of customer’s pets

object
name
required

Pet name

string
>= 1 characters
Example
Luna
type
required

Pet type

string
>= 1 characters
Example
Golden Retriever
Example
{
"name": "Luna",
"type": "Golden Retriever"
}
physChallName
Array<string>
postalCode

Postal code

string
Example
10400
preferredCurrency

Preferred currency for monetary values (ISO 4217 code)

string
/^[A-Z]{3}$/
Example
USD
state

State or province

string
Example
Bangkok
Example
{
"address1": "123 Petchburi Road",
"address2": "Ratchathewi District",
"birthDate": "1985-06-15",
"childQuantity": 2,
"citizenship": "Thailand",
"city": "Bangkok",
"contactPerson": [
{
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phoneNumber": "+12125551212",
"secondaryEmail": "[email protected]",
"summary": "John Smith ([email protected] / +12125551212)"
}
],
"country": "TH",
"gender": "FEMALE",
"language": "en",
"maritalStatus": "MARRIED",
"petInfo": [
{
"name": "Luna",
"type": "Golden Retriever"
}
],
"postalCode": "10400",
"preferredCurrency": "USD",
"state": "Bangkok"
}
preferences

Customer preferences

object
allergies

Known allergies

Array<string>
bedTypePref

Preferred hotel bed type

string
Example
King bed
beveragePref

Beverage preferences

Array<string>
businessSrvcPref

Preferred business services

Array<string>
cuisinePref

Cuisine preference

string
Example
Thai
foodPref

Food preferences

Array<string>
foodSrvcPref

Preferred food service facilities

string
Example
In-room dining
guestType

Guest type classification

string
Example
Business traveler
hotelChainPref

Preferred hotel chain name

string
Example
Mandarin Oriental
interestPref

Interest preferences

Array<string>
mealPref

Meal preference

string
Example
Continental breakfast
petsPref

Pet-friendly preferences

Array<string>
physChalFeaturePref

Preferred accessibility features

Array<string>
Example
Wheelchair accessible rooms
propertyAmenityPref

Preferred hotel property amenities

Array<string>
propertyLocationPref

Preferred hotel property locations

string
Example
Beachfront
propertyTypePref

Preferred hotel property types

string
Example
Luxury Resort
recreationSrvcPref

Preferred recreation services

Array<string>
roomAmenityPref

Preferred hotel room amenities

Array<string>
roomLocationPref

Preferred hotel room locations

string
Example
High floor with city view
securityFeaturePref

Preferred security features

Array<string>
smokingAllowed

Preference for smoking allowed rooms

boolean
Example
false
Example
{
"bedTypePref": "King bed",
"cuisinePref": "Thai",
"foodSrvcPref": "In-room dining",
"guestType": "Business traveler",
"hotelChainPref": "Mandarin Oriental",
"mealPref": "Continental breakfast",
"physChalFeaturePref": "Wheelchair accessible rooms",
"propertyLocationPref": "Beachfront",
"propertyTypePref": "Luxury Resort",
"roomLocationPref": "High floor with city view",
"smokingAllowed": false
}
share
required

Whether the user wants to share this profile with hotels

boolean
Example
true
user
required

User details

object
email

User email address

string format: email
firstName

User first name

string
Example
Alexandra
fullName

Full name

string
Example
Alexandra Beaumont
lastName

User last name

string
Example
Beaumont
phone

User phone number

string
/^\+?[1-9]\d{1,14}$/
Example
+66212658866
profilePictureUrl

Profile picture URL

string format: uri
Example
https://res.cloudinary.com/wink/image/upload/v1/user/alexandra-beaumont.jpg
Example
{
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phone": "+66212658866",
"profilePictureUrl": "https://res.cloudinary.com/wink/image/upload/v1/user/alexandra-beaumont.jpg"
}
Example
{
"personal": {
"address1": "123 Petchburi Road",
"address2": "Ratchathewi District",
"birthDate": "1985-06-15",
"childQuantity": 2,
"citizenship": "Thailand",
"city": "Bangkok",
"contactPerson": [
{
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phoneNumber": "+12125551212",
"secondaryEmail": "[email protected]",
"summary": "John Smith ([email protected] / +12125551212)"
}
],
"country": "TH",
"gender": "FEMALE",
"language": "en",
"maritalStatus": "MARRIED",
"petInfo": [
{
"name": "Luna",
"type": "Golden Retriever"
}
],
"postalCode": "10400",
"preferredCurrency": "USD",
"state": "Bangkok"
},
"preferences": {
"bedTypePref": "King bed",
"cuisinePref": "Thai",
"foodSrvcPref": "In-room dining",
"guestType": "Business traveler",
"hotelChainPref": "Mandarin Oriental",
"mealPref": "Continental breakfast",
"physChalFeaturePref": "Wheelchair accessible rooms",
"propertyLocationPref": "Beachfront",
"propertyTypePref": "Luxury Resort",
"roomLocationPref": "High floor with city view",
"smokingAllowed": false
},
"share": true,
"user": {
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phone": "+66212658866",
"profilePictureUrl": "https://res.cloudinary.com/wink/image/upload/v1/user/alexandra-beaumont.jpg"
}
}

Profile updated successfully

Media typeapplication/json
object
createdDate

Datetime this record was first created

string | null format: date-time
id

Unique identifier for this record.

string format: uuid
lastUpdate

Datetime this record was last updated

string | null format: date-time
personal
required

Detailed customer information for this profile

object
address1

Primary address line

string
address2

Secondary address line

string
birthDate

Date of birth in ISO 8601 format

string format: date
childQuantity

Number of children

integer format: int32
citizenship

Country of citizenship

string
city

City name

string
contactPerson
Array<object>

Array of emergency contact information for the customer

object
email

Contact E-mail

string format: email
firstName

Contact first name

string
fullName

First and last name

string
lastName

Contact last name

string
phoneNumber

Contact phone number

string
/^\+?[1-9]\d{1,14}$/
secondaryEmail

Contact secondary Email

string format: email
summary

Summary

string
country

Country code (ISO 3166-1 alpha-2)

string
/^[A-Z]{2}$/
gender

Identifies the gender of the customer.

string
Allowed values: MALE FEMALE OTHER
language

Primary language (ISO 639-1 code)

string
/^[a-z]{2}(-[A-Z]{2})?$/
maritalStatus

Marital status of the traveler

string
Allowed values: ANNULLED COHABITATING DIVORCED ENGAGED MARRIED SEPARATED SINGLE WIDOWED UNKNOWN
petInfo
Array<object>

Array of customer’s pets

object
name
required

Pet name

string
>= 1 characters
type
required

Pet type

string
>= 1 characters
physChallName
Array<string>
postalCode

Postal code

string
preferredCurrency

Preferred currency for monetary values (ISO 4217 code)

string
/^[A-Z]{3}$/
state

State or province

string
preferences
required

Customer preferences

object
allergies

Known allergies

Array<string>
bedTypePref

Preferred hotel bed type

string
beveragePref

Beverage preferences

Array<string>
businessSrvcPref

Preferred business services

Array<string>
cuisinePref

Cuisine preference

string
foodPref

Food preferences

Array<string>
foodSrvcPref

Preferred food service facilities

string
guestType

Guest type classification

string
hotelChainPref

Preferred hotel chain name

string
interestPref

Interest preferences

Array<string>
mealPref

Meal preference

string
petsPref

Pet-friendly preferences

Array<string>
physChalFeaturePref

Preferred accessibility features

Array<string>
propertyAmenityPref

Preferred hotel property amenities

Array<string>
propertyLocationPref

Preferred hotel property locations

string
propertyTypePref

Preferred hotel property types

string
recreationSrvcPref

Preferred recreation services

Array<string>
roomAmenityPref

Preferred hotel room amenities

Array<string>
roomLocationPref

Preferred hotel room locations

string
securityFeaturePref

Preferred security features

Array<string>
smokingAllowed

Preference for smoking allowed rooms

boolean
profileIdentifier
required

Profile identifier

string format: uuid
>= 1 characters
share
required

Indicates whether the user wants to share this profile of themselves with hotel(s)

boolean
user
required

User details

object
email

User email address

string format: email
firstName

User first name

string
fullName

Full name

string
lastName

User last name

string
phone

User phone number

string
/^\+?[1-9]\d{1,14}$/
profilePictureUrl

Profile picture URL

string format: uri
userIdentifier
required

User identifier

string format: uuid
>= 1 characters
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
{
"createdDate": "2026-01-14T09:30:00",
"id": "b7e4c1a2-3f5d-4e8a-9c21-6f0b5d8e3a47",
"lastUpdate": "2026-02-03T16:45:12",
"personal": {
"address1": "123 Petchburi Road",
"address2": "Ratchathewi District",
"birthDate": "1985-06-15",
"childQuantity": 2,
"citizenship": "Thailand",
"city": "Bangkok",
"contactPerson": [
{
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phoneNumber": "+12125551212",
"secondaryEmail": "[email protected]",
"summary": "John Smith ([email protected] / +12125551212)"
}
],
"country": "TH",
"gender": "FEMALE",
"language": "en",
"maritalStatus": "MARRIED",
"petInfo": [
{
"name": "Luna",
"type": "Golden Retriever"
}
],
"postalCode": "10400",
"preferredCurrency": "USD",
"state": "Bangkok"
},
"preferences": {
"bedTypePref": "King bed",
"cuisinePref": "Thai",
"foodSrvcPref": "In-room dining",
"guestType": "Business traveler",
"hotelChainPref": "Mandarin Oriental",
"mealPref": "Continental breakfast",
"physChalFeaturePref": "Wheelchair accessible rooms",
"propertyLocationPref": "Beachfront",
"propertyTypePref": "Luxury Resort",
"roomLocationPref": "High floor with city view",
"smokingAllowed": false
},
"profileIdentifier": "3c6b1a5d-8e2f-4a0b-9c7d-6e4f0a8b2c51",
"share": true,
"user": {
"email": "[email protected]",
"firstName": "Alexandra",
"fullName": "Alexandra Beaumont",
"lastName": "Beaumont",
"phone": "+66212658866",
"profilePictureUrl": "https://res.cloudinary.com/wink/image/upload/v1/user/alexandra-beaumont.jpg"
},
"userIdentifier": "c3a9f2e1-8b4d-4c7a-a1e2-5f0b6d9e2c84",
"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"
}