Profile and account

Reading your own profile 🟒

GET /v2/profile?locale=en&include=user,account,likes,boost,super_likes

The include parameter decides which sections the response contains. Without it the response is very thin. Known scopes:

ScopeContents
userName, bio, photos, birth date, gender, discovery preferences
accountPhone, email, account status
likesRemaining likes and when they reset
super_likesRemaining Super Likes
boostBoost allowance and any active boost
travelPassport (location change) status πŸ’³
plus_controlPaid privacy settings (hide age and distance) πŸ’³
readreceiptsRead receipt allowance πŸ’³
spotify, instagramConnected accounts
notifications, email_settingsNotification preferences
available_descriptorsDescriptors you can add to a profile (star sign, education, …)
profile_meterProfile completeness meter
feature_access, paywalls, offerings, purchase, misc_merchandisingSubscription and sales screens
onboarding, tutorialsFirst-run steps
tinder_uTinder U (university) status
contact_cards, bouncerbypass, all_in_genderUndocumented internal scopes

Tip: Only request the scopes you need. The response is smaller and you avoid processing data you don't use. user,likes,boost covers most cases.

Updating your profile and discovery settings 🟒

Updates are split across two endpoints with two different body shapes:

EndpointBodyWhat it updates
POST /v2/profile{"user": {…}}Your profile and basic discovery settings: age range, distance, gender filter, bio, visibility, auto-expansion, Global mode
POST /v2/profile/user{"preference_filters": {…}}Advanced filters that narrow recommendations: interests, descriptors (star sign, education…), "has a bio", number of photos πŸ’³

Example: basic discovery settings

{
  "user": {
    "age_filter_min": 25,
    "age_filter_max": 35,
    "distance_filter": 30,
    "gender_filter": 1,
    "bio": "Coffee, code and long walks.",
    "discoverable": true
  }
}
FieldValues
age_filter_min, age_filter_maxAges 18 and up
distance_filterIn miles. The API stores miles even when the app shows kilometres (36 mi β‰ˆ 58 km). Divide km by 1.609344 and round. The upper limit is roughly 100 miles (β‰ˆ160 km).
gender_filter0 men, 1 women, -1 everyone
bioProfile text
discoverableIf false, you don't appear in anyone's deck
Auto-expansionWiden age and distance when recommendations run low
Global modeRecommendations from around the world, plus the languages you want to match in

πŸ’³ Premium limit: Preference updates (especially preference_filters) return 403 on a free account. Treat that 403 as "not allowed" and don't retry.

Legacy /profile options πŸ”΄

In 2018-era material, POST /profile could also do the following:

BodyEffect
{"hide_age": true}Hide your age πŸ’³
{"hide_distance": true}Hide your distance πŸ’³
{"hide_ads": true}Hide ads πŸ’³
{"blend": "recency"} / {"blend": "optimal"}Recommendation ordering mode πŸ’³
{"discoverable_party": "liked"}Only show yourself to people you liked πŸ’³

These are probably managed today under the plus_control scope via /v2/profile. This has not been confirmed in any current client.

Other profile endpoints

RequestPurposeStatus
PUT /profile/job Β· DELETE /profile/jobAdd or remove your jobπŸ”΄
PUT /profile/school Β· DELETE /profile/schoolAdd or remove your schoolπŸ”΄
POST /v2/profile/job · POST /v2/profile/schoolv2 equivalents🟑
GET /v2/profile/spotify Β· PUT /v2/profile/spotify/themeSpotify settings and profile anthemπŸ”΄
PUT /profile/username Β· DELETE /profile/usernameWeb profile usernameπŸ”΄
GET /profile/photos · DELETE /mediaList photos, delete a photo🟑
POST /v2/profile/email_settingsEmail notification settings🟑
POST /v2/account/account-email/confirmConfirm your email🟑
POST /v2/account/recovery/sendAccount recovery email🟑
DELETE /v2/profilePermanently deletes the account🟑 ⚠️

⚠️ DELETE /v2/profile: This request deletes the account. Don't define this route in your client at all, or put it behind an explicit confirmation step. Deleting and re-creating an account repeatedly is reported to get the phone number permanently banned.

Another user's profile 🟑

GET /user/{user_id}?locale=en

The response is a results object similar to a recommendation card: name, age, photos, bio, distance. This data belongs to someone else. Only use it to display what you could already see in the app. Don't store or collect it (see chapter 13).