Profiles
Profile tags
Requires Authorization.
GET /v1/tagsResponse:
Array of ProfileTagLanguage.
Get a profile by ID
Requires Authorization.
GET /v7/profiles/{id}Response:
profiles— array of Profile
Get multiple profiles by ID
Requires Authorization.
POST /v3/profilesBody:
targetProfileIds— array of strings with numeric ids, max profiles number per one request is 150
Response:
profiles— array of ProfileSummaryWithRightNow
Update own profile (full)
Requires Authorization.
Profile object, fully replaces the current version. This is the only endpoint that persists the free-text fields displayName and aboutMe; the partial Update own profile (partial) endpoint ignores them.
Because the profile is replaced fully, every editable field must be sent on each request, including fields not exposed in the edit UI such as approximateDistance and profileTags.
displayName and aboutMe (plus custom gender/pronoun display text) are run through banned-terms moderation. A successful update answers with an empty body; rejected fields come back in a BannedTermsResponse, and the offending field is not changed.
PUT /v3.1/me/profileBody:
Response:
display_name— BannedTerms, Present whendisplayNamewas rejected. ornullabout_me— BannedTerms, Present whenaboutMewas rejected. ornull
Update own profile (partial)
Requires Authorization.
ProfilePatch object, only updates the specified keys. Applies structured fields only (e.g. genders, pronouns, grindrTribes, tribesImInto, profileTags, sexualPosition, and the showAge/showDistance/showPosition/showTribes flags).
The free-text fields displayName and aboutMe are silently ignored here even though ProfilePatch includes them — they are only persisted (and moderated) by Update own profile (full).
PATCH /v4/me/profileBody:
Profile tags suggestions, WIP
NOTE
This endpoint hasn't been researched yet
PUT /v4/profile-tags/suggestionsProfile tags translations, WIP
NOTE
This endpoint hasn't been researched yet
GET /v5/profile-tags/translationsHeaders:
L-Locale— string
Upload media
Correct request's Content-Type header is required.
POST /v5/chat/media/uploadQuery:
length— long integerlooping— booleantakenOnGrindr— boolean
Body:
Binary file.
Response:
mediaId— long integermediaHash— string, See Media -> Public CDN files -> Profile Imagesurl— URL
Upload media (legacy)
Requires Authorization.
You must ensure thumbCoords's width and height dimensions are equal, i.e. y2-y1 must equal to x2-x1. Submitting non-square 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.
Also there is a legacy POST /v3/me/profile/images.
POST /v4/media/uploadQuery:
thumbCoords— RectFtakenOnGrindr— boolean
Body:
Binary file.
Response:
hash— stringimageSizes— array of objectssize— integer ornullfullUrl— stringthumbnail— boolean ornullstate— stringmediaHash— string, See Media -> Public CDN files -> Profile ImagesrejectionReason— string ornull
mediaId— integer
Edit profile photos
Requires Authorization.
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.
PUT /v3/me/profile/imagesBody:
primaryImageHash— string ornullsecondaryImageHashes— array of strings, max. length: 5 ornull
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.
Get my profile photos
Requires Authorization.
GET /v3.1/me/profile/imagesResponse:
medias— array of ProfileImageState
Check if profiles are reachable, WIP
NOTE
This endpoint hasn't been researched yet
Requires Authorization.
POST /v4/profiles/reachableBody:
profileIds— array of strings with numeric ids
Response:
profileIds— array of strings with numeric ids
Get profile insights v1, WIP
NOTE
This endpoint hasn't been researched yet
GET /v1/profile-insights/{profileId}Get profile insights v2, WIP
NOTE
This endpoint hasn't been researched yet
GET /v2/profile-insights/{profileId}Get pronouns
Requires Authorization.
Gender and pronouns are managed fields — profile fields that aren't hardcoded but pulled dynamically from the server.
GET /v1/pronounsResponse:
Array of Pronoun.
Get genders
GET /public/v2/gendersResponse:
Array of Gender.
Get genders (v1 alias)
GET /public/v1/gendersResponse:
Array of Gender.
Suggest gender or pronoun
Requires Authorization.
PUT /v4/genderpronoun/suggestionsBody:
category— string, eithergenderorpronounsuggestedValue— string
Response:
Empty
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
Minimal masked profile.
distance— number ornullprofileImageMediaHash— string, See Media -> Public CDN files -> Profile Images ornullisFavorite— boolean
ProfileMasked
Masked profile (extra fields revealed).
- everything from ProfileMaskedMin
lastViewed— number ornullseen— unix timestamp in milliseconds ornullrightNow— RightNowStatussexualPosition— integer ornull, optionalfoundVia— ViewSourceEnum ornull, optional
ProfileMin
Minimal profile fields.
profileId— string with numeric iddisplayName— string ornullonlineUntil— unix timestamp in milliseconds ornull, optional
ProfileMedia
mediaHash— string, See Media -> Public CDN files -> Profile Imagestype— integerstate— integerreason— string ornulltakenOnGrindr— boolean ornullcreatedAt— unix timestamp in milliseconds ornull
ProfileShort
Short profile, combines ProfileMasked and ProfileMin.
- everything from ProfileMasked
- everything from ProfileMin
age— integer, may be0ornullshowAge— booleanshowDistance— booleanapproximateDistance— booleanlastChatTimestamp— number, may be0ornullisNew— booleanlastUpdatedTime— unix timestamp in milliseconds, may be0medias— array of ProfileMedia
ProfileFields
Optional profile fields.
meetAt— array of Meet at, optionalvaccines— array of Vaccines, optionalgenders— array of integers, optionalpronouns— array of integers, optional
ProfileRightNow
Right Now status info on a profile.
rightNowText— string ornullrightNowPosted— unix timestamp in milliseconds ornullrightNowDistance— long integer ornullrightNowThumbnailUrl— string ornullrightNowFullImageUrl— string ornull
ProfileExtraFields
Extra profile fields.
nsfw— Accept NSFW pics ornullverifiedInstagramId— string ornullisBlockable— boolean ornullshowTribes— booleanshowPosition— boolean
TravelPlanEmbedded
endDate— unix timestamp in milliseconds ornullgeohash— GeohashtravelPlanId— long integer ornulllocationName— stringshowOnProfile— boolean ornullstartDate— unix timestamp in milliseconds ornull
RightNowMedia
mediaId— long integer ornullthumbnailUrl— stringfullImageUrl— stringcontentType— stringisNsfw— boolean ornull
Profile
Full profile object.
- everything from ProfileShort
- everything from ProfileFields
- everything from ProfileRightNow
- everything from ProfileExtraFields
aboutMe— string ornullethnicity— Ethnicity ornullrelationshipStatus— Relationship status ornullgrindrTribes— array of TribeslookingFor— array of Looking forbodyType— Body type ornullhivStatus— HIV status ornulllastTestedDate— unix timestamp in milliseconds ornullheight— number in centimeters ornullweight— number in grams ornullsocialNetworks— objecttwitter— SocialNetwork, may be absentfacebook— SocialNetwork, may be absentinstagram— SocialNetwork, may be absent
identity— unknown ornullhashtags— arrayprofileTags— array of Profile tagstapped— booleantapType— Tap ID ornulllastReceivedTapTimestamp— unix timestamp in milliseconds ornullisTeleporting— booleanisRoaming— booleanarrivalDays— number ornullunreadCount— number, optionallastThrobTimestamp— unknownsexualHealth— array of Sexual healthisVisiting— booleantravelPlans— array of TravelPlanEmbeddedisInAList— booleantribesImInto— array of TribesshowVipBadge— booleanrightNowShareLocation— string,"NONE"ornullrightNowMedias— array of RightNowMedia
ProfilePatch
- everything from Profile
BannedTerms
terms— array of strings, The banned terms that were detected in the submitted text.
BannedTermsResponse
Returned by Update own profile (full) when moderated free-text fields contained banned terms. Each present key is a field that was rejected. Empty or absent body means the update was fully accepted.
display_name— BannedTerms, Present whendisplayNamewas rejected. ornull, optionalabout_me— BannedTerms, Present whenaboutMewas rejected. ornull, optional
ProfileSummaryWithRightNow
- everything from ProfileShort
- everything from ProfileRightNow
SocialNetwork
Social network user reference.
userId— string, username ornullsite— unknown, e.g."twitter"|"facebook"|"instagram"
ProfileTagLanguage
language— stringcategoryCollection— array of objectstext— stringpossessiveText— string ornulltags— array of objectstagId— integertext— stringkey— string
ChatMediaUploadResponse
mediaId— long integermediaHash— string, See Media -> Public CDN files -> Profile Imagesurl— URL
LegacyMediaUploadResponse
hash— stringimageSizes— array of objectssize— integer ornullfullUrl— stringthumbnail— boolean ornullstate— stringmediaHash— string, See Media -> Public CDN files -> Profile ImagesrejectionReason— string ornull
mediaId— integer
EditProfilePhotosRequest
primaryImageHash— string ornullsecondaryImageHashes— array of strings, max. length: 5 ornull
DeleteProfilePhotosRequest
media_hashes— array of strings
ProfileImageState
NOTE
This type hasn't been researched yet
Profile media state.
mediaHash— string, See Media -> Public CDN files -> Profile Imagestype— integerstate— integer
Pronoun
pronounId— integerpronoun— string, e.g."-"or"They/Them/Theirs"
Gender
genderId— integergender— stringdisplayGroup— integersortProfile— integer ornullsortFilter— integer ornullgenderPlural— string ornullexcludeOnProfileSelection— array of integers ornullexcludeOnFilterSelection— array of integers ornullalsoClassifiedAs— array of integers
GenderPronounSuggestionRequest
category— string, eithergenderorpronounsuggestedValue— string
Sexual position ID
Sexual position ID.
1— Top2— Bottom3— Versatile4— Vers Bottom5— Vers Top6— Side
Ethnicity
Ethnicity.
1— Asian2— Black3— Latino4— Middle Eastern5— Mixed6— Native American7— White8— Other9— South Asian
Relationship status
Relationship status.
1— Single2— Dating3— Exclusive4— Committed5— Partnered6— Engaged7— Married8— Open Relationship
Body type
Body type.
1— Toned2— Average3— Large4— Muscular5— Slim6— Stocky
HIV status
HIV status. Not to be confused with Sexual health.
1— Negative2— Negative, on PrEP3— Positive4— Positive, undetectable
Accept NSFW pics
Accept NSFW pics.
1— Never2— Not At First3— Yes Please
Meet at
Meet at preferences.
1— My Place2— Your Place3— Bar4— Coffee Shop5— Restaurant
Sexual health
Sexual health (also "Health Practices"). Not to be confused with HIV status.
1— Condoms2— I'm on doxyPEP3— I'm on PrEP4— I'm HIV undetectable5— Prefer to discuss
Looking for
Looking for.
2— Chat3— Dates4— Friends5— Networking6— Relationship7— Hookups
Tribes
Tribe.
1— Bear2— Clean-Cut3— Daddy4— Discreet5— Geek6— Jock7— Leather8— Otter9— Poz10— Rugged11— Trans12— Twink13— Sober
Vaccines
Vaccine.
1— COVID-192— Monkeypox3— Meningitis