Profiles
RectF
Array of 4 floats or nulls:
- Bottom edge ("y2"), in pixels
- Left edge ("x1"), in pixels
- Right edge ("x2"), in pixels
- Top edge ("y1"), in pixels
When used in query, stringified as follows: y2,x1,x2,y1.
ProfileMaskedMin
distance— number ornullprofileImageMediaHash— string ornull, see MediaisFavorite— boolean
ProfileMasked
- everything from ProfileMaskedMin
lastViewed— number ornullseen— unix timestamp in milliseconds ornullsexualPosition— integer ornull, see Sexual position IDfoundVia— ViewSourceEnum ornullrightNow— RightNowStatus
ProfileMin
profileId— string with numeric iddisplayName— string ornullonlineUntil— long number ornull
ProfileShort
- everything from ProfileMasked
- everything from ProfileMin
age— number, may be0ornullshowAge— booleanshowDistance— booleanapproximateDistance— booleanlastChatTimestamp— number, may be0isNew— booleanlastUpdatedTime— unix timestamp in milliseconds, may be0medias— array of profile photos objectsmediaHash— string, see Mediatype— integerstate— integerreason— string ornulltakenOnGrindr— boolean ornullcreatedAt— long number ornull
ProfileFields
meetAt— array of integers, see Meet atvaccines— array of integers, see Vaccinesgenders— array of integers, see Genderspronouns— array of integers, see Pronouns
Profile
- everything from ProfileShort
- everything from ProfileFields
aboutMe— string ornullethnicity— integer ornull, see EthnicityrelationshipStatus— integer ornull, see Relationship statusgrindrTribes— array of integers, see TribeslookingFor— array of integers, see Looking forbodyType— number ornull, see Body typehivStatus— number ornull, see HIV statuslastTestedDate— unix timestamp in milliseconds ornullheight— number ornullweight— number ornullsocialNetworks— objecttwitter— object, may be absentuserId— string ornull
facebook— object, may be absentuserId— string ornull
instagram— object, may be absentuserId— string ornull
identity— identity (unknown, wip) ornullnsfw— integer ornull, see Accept NSFW picshashtags— unknown arrayprofileTags— array of strings, see Profile tagstapped— booleantapType— booleanlastReceivedTapTimestamp— number ornullisTeleporting— booleanisRoaming— booleanarrivalDays— number ornullunreadCount— number, may be absentrightNowText— string ornullrightNowPosted— long number ornullrightNowDistance— long number ornullrightNowThumbnailUrl— string ornullrightNowFullImageUrl— string ornullrightNowShareLocation—nullrightNowMedias— array of objectsmediaId— long number ornullthumbnailUrl— stringfullImageUrl— stringcontentType— stringisNsfw— boolean ornull
verifiedInstagramId— string ornulllastThrobTimestamp— unknownisBlockable— booleansexualHealth— array of integers, see Sexual healthisVisiting— booleantravelPlans— array of objectsendDateUtc— long ornullgeohash— Geohashid— long number ornulllocationName— stringshowOnProfile— boolean ornullstartDateUtc— long number ornull
isInAList— booleanshowTribes— booleanshowPosition— booleantribesImInto— nullshowVipBadge— boolean
Profile tags
Requires Authorization.
GET /v1/tagsResponse:
Array of objects:
language— stringcategoryCollection— array of objectstext— stringpossessiveTextstring ornulltags— array of objectstagId— integertext— stringkey— string
Sexual position ID
- 1 — "Top"
- 2 — "Bottom"
- 3 — "Versatile"
- 4 — "Vers Bottom"
- 5 — "Vers Top"
- 6 — "Side"
Ethnicity
- 1 — Asian
- 2 — Black
- 3 — Latino
- 4 — Middle Eastern
- 5 — Mixed
- 6 — Native American
- 7 — White
- 8 — Other
- 9 — South Asian
Relationship status
- 1 — Single
- 2 — Dating
- 3 — Exclusive
- 4 — Committed
- 5 — Partnered
- 6 — Engaged
- 7 — Married
- 8 — Open Relationship
Body type
- 1 — "Toned"
- 2 — "Average"
- 3 — "Large"
- 4 — "Muscular"
- 5 — "Slim"
- 6 — "Stocky"
HIV status
Not to be confused with Sexual health.
- 1 — "Negative"
- 2 — "Negative, on PrEP"
- 3 — "Positive"
- 4 — "Positive, undetectable"
Accept NSFW pics
- 1 — "Never"
- 2 — "Not At First"
- 3 — "Yes Please"
Meet at
- 1 — "My Place"
- 2 — "Your Place"
- 3 — "Bar"
- 4 — "Coffee Shop"
- 5 — "Restaurant"
Sexual health
Not to be confused with HIV status.
- 1 — "Condoms"
- 2 — "I'm on doxyPEP"
- 3 — "I'm on PrEP"
- 4 — "I'm HIV undetectable"
- 5 — "Prefer to discuss"
Looking for
- 2 — Chat
- 3 — Dates
- 4 — Friends
- 5 — Networking
- 6 — Relationship
- 7 — Hookups
Tribes
- 1 — "Bear"
- 2 — "Clean-Cut"
- 3 — "Daddy"
- 4 — "Discreet"
- 5 — "Geek"
- 6 — "Jock"
- 7 — "Leather"
- 8 — "Otter"
- 9 — "Poz"
- 10 — "Rugged"
- 11 — "Sober"
- 12 — "Trans"
- 13 — "Twink"
Vaccines
- 1 - COVID-19
- 2 — Monkeypox
- 3 — Meningitis
SocialNetwork
site— string, e.g."twitter"|"facebook"|"instagram"userId— string, username
Managed fields
Managed fields, such as gender and pronouns are profile fields that aren't hardcoded but pulled dynamically from server.
Get a profile by ID
Requires Authorization.
GET /v7/profiles/{id}Query:
id— profile ID
Response:
profiles- array of Profile, always with exactly one element
Get multiple profiles by ID
Requires Authorization.
POST /v3/profilesBody:
targetProfileIds— array of strings with numeric ids
Response:
profiles— array of Profile
Update own profile (full)
WIP
Requires Authorization.
PUT /v3.1/me/profileBody:
Profile object, fully replaces current version.
Update own profile (partial)
WIP
Requires Authorization.
PATCH /v4/me/profileBody:
Profile object, only updates specified keys.
Profile tags suggestions
See Hardcoded fields -> Profile tags.
- PUT /v4/profile-tags/suggestions ProfileTagsSuggestionRequest
- GET /v5/profile-tags/translations (header: L-Locale) . TranslationsResponse
Upload media
POST /v5/chat/media/uploadQuery:
length— longlooping— booleantakenOnGrindr— boolean
Body:
File
Correct request's Content-Type header is required.
Response:
mediaId— long integermediaHash— string, see Media -> Signed CDN filesurl— string, URL
Upload media (legacy)
Requires Authorization.
POST /v4/media/uploadAlso there is a legacy POST /v3/me/profile/images.
Query:
thumbCoords— RectF, see note belowtakenOnGrindr— boolean, only for v4 endpoint
You must ensure thumbCoords's width and height dimensions are equal, i.e. y2-y1 must equal to x2-x1. Submitting non-suqare thumbnail won't trigger any errors and it will be uploaded to CDN, however attempting to use such illegal thumbnail dimensions image in Edit profile photos will result in it being silently dropped/skipped.
Body:
Binary media file
Response:
hash— stringimageSizes— array of objectssize— integer ornullfullUrl— stringthumbnail— boolean ornullstate— string, MediaStatemediaHash— string, see Media -> Public CDN filesrejectionReason— string ornull
mediaId— integer
Get my profile photos
Requires Authorization.
GET /v3.1/me/profile/imagesResponse:
medias— array of objectsmediaHash— string, see Media -> Public CDN filestype— unknown integerstate— integer, MediaState, WIP
Edit profile photos
Requires Authorization.
PUT /v3/me/profile/imagesBody:
primaryImageHash— string ornull, see Media -> Public CDN filesecondaryImageHashes— array (max. length: 5) of strings ornull(note: see below), see Media -> Public CDN file
Setting both primaryImageHash and secondaryImageHashes to null works. But setting primaryImageHash to a hash value while setting secondaryImageHashes to null causes HTTP status 400 Bad Request error. It's recommended to just use [] for secondaryImageHashes rather than null.
Supplied images must have square thumbnails, otherwise they will be silently skipped. See Upload media.
Repeating primaryImageHash value in secondaryImageHashes array will result in secondaryImageHashes's entry being silently dropped from supplied request array. Repeating secondaryImageHashes values will result in successfully saving the array as-is to the server, however official mobile client seems to drop repeating media when processing secondaryImageHashes response.
Response:
Empty.
Delete profile photos
Requires Authorization.
This endpoint removes photo from your profile as well as deletes the media from CDN.
DELETE /v3/me/profile/imagesBody (yes, body, not query):
media_hashes— array of strings
Response:
Empty.
Check if profiles are reachable
WIP
Requires Authorization.
POST /v4/profiles/reachableBody:
profileIds— array of strings with numeric ids
Response:
profileIds— array of strings with numeric ids
Get profile insights
GET /v1/profile-insights/{profileId}Response: ProfileInsightsResponse, WIP
GET /v2/profile-insights/{profileId}Response: ProfileInsightsV2Response, WIP
Get pronouns
Requires Authorization.
GET /v1/pronounsResponse:
Array of objects:
pronounId— integerpronoun— string, e.g."-"or"They/Them/Theirs"
Get genders
GET /public/v2/gendersAlso aliased to GET /public/v1/genders
Response:
Array of objects:
genderId— integergender— stringdisplayGroup— integersortProfile— integer ornullsortFilter— integer ornullgenderPlural— string ornullexcludeOnProfileSelection— array of integers ornullexcludeOnFilterSelection— array of integers ornullalsoClassifiedAs— array of integers
Suggest gender or pronoun
Requires Authorization.
PUT /v4/genderpronoun/suggestionsBody:
category— string, eithergenderorpronounsuggestedValue— string
Response:
Empty