Account
Create account via email, WIP
NOTE
This endpoint hasn't been researched yet
NOTE
URL is dynamic and currently unknown.
Body type: CreateAccountEmailRequest (undocumented).
Response type: FirstPartyCreateAccountResponse (undocumented).
POST /v?/users/registration/emailValidate password complexity, WIP
NOTE
This endpoint hasn't been researched yet
Body type: ValidatePasswordComplexityRequest (undocumented).
POST /v3/users/password-validationRegister push token
Requires Authorization.
Binds an FCM registration token to the signed-in profile so the server can deliver push notifications. Re-registering the same token is idempotent.
Repeated requests are completed without errors.
POST /v3/gcm-push-tokensBody:
vendorProvidedIdentifier— string, The Firebase installation ID, which is the part oftokenbefore the first:.token— string, FCM registration token, shaped<installationId>:APA91b….
Response:
Empty
Unregister push token
Requires Authorization.
Stops delivery to one registration token. Note the path is push-tokens, not the gcm-push-tokens used to register.
Repeated requests are completed without errors.
DELETE /v3/push-tokens/{token}Response:
Empty
Get push settings
Requires Authorization.
GET /v5/push-settingsResponse:
favoritePushNotification— boolean, Notify when a favorite comes online. ornulltapPushNotification— boolean, Notify on received taps. ornulltappedPushNotification— boolean, Notify when a profile you tapped comes online. ornullmediaRecipientPushNotification— boolean, Notify when a profile you sent photos to comes online. ornullrecommendedPushNotification— boolean, Notify when a recommended profile nearby is online. ornullunreadChatsPushNotification— boolean, Remind about unread chats. ornullviewedProfilePushNotification— boolean, Notify when the profile gets views. ornull
Update push settings
Requires Authorization.
Per-category push toggles. Only the fields present in the request body are updated.
PUT /v5/push-settingsBody:
favoritePushNotification— boolean, Notify when a favorite comes online. ornulltapPushNotification— boolean, Notify on received taps. ornulltappedPushNotification— boolean, Notify when a profile you tapped comes online. ornullmediaRecipientPushNotification— boolean, Notify when a profile you sent photos to comes online. ornullrecommendedPushNotification— boolean, Notify when a recommended profile nearby is online. ornullunreadChatsPushNotification— boolean, Remind about unread chats. ornullviewedProfilePushNotification— boolean, Notify when the profile gets views. ornull
Update password, WIP
NOTE
This endpoint hasn't been researched yet
Body type: ChangePasswordRequest (undocumented).
Response type: ChangePasswordResponse (undocumented).
POST /v3/users/update-passwordUpdate account email, WIP
NOTE
This endpoint hasn't been researched yet
Body type: UpdateEmailRequest (undocumented).
POST /v3/users/emailResponse:
profileId— string with numbers, account's IDsessionId— Session IDauthToken— string, Auth token for session refresh
Update password via phone, WIP
NOTE
This endpoint hasn't been researched yet
Body type: ChangePasswordPhoneRequest (undocumented).
Response type: ChangePasswordResponse (undocumented).
POST /v4/sms/users/update-passwordCreate third party account, WIP
NOTE
This endpoint hasn't been researched yet
Creates a Grindr account for a Facebook or Google identity, used when Login via third party returns registered: false. The URL is chosen from the recaptcha_third_party assignment — not the first-party one that governs Sign in: assignment off → POST /v7/users/thirdparty (this endpoint) with no captchaToken; assignment on → POST /v8/users/thirdparty; assignment on and the captcha token is the literal dummyToken → POST /v8/dev/users/thirdparty. The body is ThirdPartyAccountRequest in all three cases — on this URL the shared schema's captchaToken is simply never populated.
The response carries no session: Login via third party is repeated with the same vendor and provider token to obtain one.
POST /v7/users/thirdpartyBody:
thirdPartyVendor— integer,1— Facebook,2— GooglethirdPartyToken— string, provider access token (Facebook user access token / Googleaccess_token), the same value that was sent to Login via third partythirdPartyUserId— string with the provider user id, taken verbatim fromthirdPartyUserInfo.id, vendor prefix included. Omitted rather than sent asnullwhen absentage— integer, age in whole years, computed on-device from the birthday the user enters during sign-up. The birthday itself is never sentemail— string with email, pre-filled fromthirdPartyUserInfo.email. Omitted rather than sent asnullwhen the client has nonecaptchaToken— string, reCAPTCHA Enterprise token for thesign_upaction, sent only when therecaptcha_third_partyassignment is enabled. With the assignment off the field is omitted rather than sent asnull, and the request goes to/v7/users/thirdpartyinstead
Response:
profileId— string with numbers, the new account's IDthirdPartyUserId— string with the provider user id, may be absent
Forgot password, WIP
NOTE
This endpoint hasn't been researched yet
Body type: ForgotPwdEmailRequest (undocumented).
Response type: ForgotPwdEmailResponse (undocumented).
POST /v3/users/forgot-passwordCreate phone session, WIP
NOTE
This endpoint hasn't been researched yet
Body type: LoginPhoneRequest (undocumented).
POST /v4/sms/sessionsResponse:
profileId— string with numbers, account's IDsessionId— Session IDauthToken— string, Auth token for session refresh
Get preferences
Requires Authorization.
GET /v3/me/prefs/settingsResponse:
profileId— integerlocationSearchOptOut— booleanincognito— booleanhideViewedMe— boolean, Hides the Viewed Me list. While set,GET /v7/views/listreturns nothing and no new views are recorded.approximateDistance— booleanviewRightNowNsfw— booleanmapLocationFuzzRadius— integer, Map-location privacy fuzz radius. Renamed frommapLocationRadiusin app 26.10.0. ornullshowOnMap— boolean, Whether the profile is shown on the map.
Set preferences
Requires Authorization.
PUT /v3/me/prefs/settingsBody:
settings— objectlocationSearchOptOut— booleanincognito— booleanhideViewedMe— booleanapproximateDistance— booleanviewRightNowNsfw— booleanshowOnMap— boolean, Whether the profile is shown on the map.mapLocationFuzzRadius— integer, Map-location privacy fuzz radius. Renamed frommapLocationRadiusin app 26.10.0. ornull
Response:
Empty.
Get visiting settings
Requires Authorization.
GET /v1/visiting/settingsResponse:
setting— string, visiting-status mode:OFF,ON, orAUTO
Set visiting settings
Requires Authorization.
PUT /v1/visiting/settingsBody:
setting— string, visiting-status mode:OFF,ON, orAUTO
Response:
Empty.
Get home location
Requires Authorization.
GET /v1/visiting/homeResponse:
name— string, human-readable name of locationlat— numberlon— number
Set home location
Requires Authorization.
PUT /v1/visiting/homeBody:
lat— numberlon— number
Response:
name— string, human-readable name of locationlat— numberlon— number
Create third party account (reCAPTCHA), WIP
NOTE
This endpoint hasn't been researched yet
reCAPTCHA variant of Create third party account (POST /v7/users/thirdparty), selected when the recaptcha_third_party assignment is enabled. The body then carries a captchaToken minted for the sign_up action; if that token is the literal dummyToken the request goes to POST /v8/dev/users/thirdparty instead. The body is ThirdPartyAccountRequest in all variants.
POST /v8/users/thirdpartyBody:
thirdPartyVendor— integer,1— Facebook,2— GooglethirdPartyToken— string, provider access token (Facebook user access token / Googleaccess_token), the same value that was sent to Login via third partythirdPartyUserId— string with the provider user id, taken verbatim fromthirdPartyUserInfo.id, vendor prefix included. Omitted rather than sent asnullwhen absentage— integer, age in whole years, computed on-device from the birthday the user enters during sign-up. The birthday itself is never sentemail— string with email, pre-filled fromthirdPartyUserInfo.email. Omitted rather than sent asnullwhen the client has nonecaptchaToken— string, reCAPTCHA Enterprise token for thesign_upaction, sent only when therecaptcha_third_partyassignment is enabled. With the assignment off the field is omitted rather than sent asnull, and the request goes to/v7/users/thirdpartyinstead
Response:
profileId— string with numbers, the new account's IDthirdPartyUserId— string with the provider user id, may be absent
Create third party account (dev), WIP
NOTE
This endpoint hasn't been researched yet
Development twin of Create third party account (reCAPTCHA). Used instead of /v8/users/thirdparty when the recaptcha_third_party assignment is enabled and the captcha token obtained is the literal string dummyToken, i.e. on builds wired to a stub reCAPTCHA provider. The body and response are the same as the other two variants.
POST /v8/dev/users/thirdpartyBody:
thirdPartyVendor— integer,1— Facebook,2— GooglethirdPartyToken— string, provider access token (Facebook user access token / Googleaccess_token), the same value that was sent to Login via third partythirdPartyUserId— string with the provider user id, taken verbatim fromthirdPartyUserInfo.id, vendor prefix included. Omitted rather than sent asnullwhen absentage— integer, age in whole years, computed on-device from the birthday the user enters during sign-up. The birthday itself is never sentemail— string with email, pre-filled fromthirdPartyUserInfo.email. Omitted rather than sent asnullwhen the client has nonecaptchaToken— string, reCAPTCHA Enterprise token for thesign_upaction, sent only when therecaptcha_third_partyassignment is enabled. With the assignment off the field is omitted rather than sent asnull, and the request goes to/v7/users/thirdpartyinstead
Response:
profileId— string with numbers, the new account's IDthirdPartyUserId— string with the provider user id, may be absent
PushSettings
Per-category push-notification toggles.
favoritePushNotification— boolean, Notify when a favorite comes online. ornull, optionaltapPushNotification— boolean, Notify on received taps. ornull, optionaltappedPushNotification— boolean, Notify when a profile you tapped comes online. ornull, optionalmediaRecipientPushNotification— boolean, Notify when a profile you sent photos to comes online. ornull, optionalrecommendedPushNotification— boolean, Notify when a recommended profile nearby is online. ornull, optionalunreadChatsPushNotification— boolean, Remind about unread chats. ornull, optionalviewedProfilePushNotification— boolean, Notify when the profile gets views. ornull, optional
ThirdPartyAccountRequest
Request body for Create third party account and both of its reCAPTCHA variants — the shape is identical on all three URLs.
thirdPartyVendor and thirdPartyToken repeat the pair that Login via third party just used; thirdPartyUserId and email are echoed from the thirdPartyUserInfo that call returned. Fields with no value are omitted, not sent as null.
thirdPartyVendor— integer,1— Facebook,2— GooglethirdPartyToken— string, provider access token (Facebook user access token / Googleaccess_token), the same value that was sent to Login via third partythirdPartyUserId— string with the provider user id, taken verbatim fromthirdPartyUserInfo.id, vendor prefix included. Omitted rather than sent asnullwhen absent, optionalage— integer, age in whole years, computed on-device from the birthday the user enters during sign-up. The birthday itself is never sentemail— string with email, pre-filled fromthirdPartyUserInfo.email. Omitted rather than sent asnullwhen the client has none, optionalcaptchaToken— string, reCAPTCHA Enterprise token for thesign_upaction, sent only when therecaptcha_third_partyassignment is enabled. With the assignment off the field is omitted rather than sent asnull, and the request goes to/v7/users/thirdpartyinstead, optional
ThirdPartyAccountResponse
Response from Create third party account. It carries no session: Login via third party is run again with the same vendor and provider token to obtain one.
profileId— string with numbers, the new account's ID, optionalthirdPartyUserId— string with the provider user id, optional
AccountPreferences
profileId— integerlocationSearchOptOut— booleanincognito— booleanhideViewedMe— boolean, Hides the Viewed Me list. While set,GET /v7/views/listreturns nothing and no new views are recorded.approximateDistance— booleanviewRightNowNsfw— booleanmapLocationFuzzRadius— integer, Map-location privacy fuzz radius. Renamed frommapLocationRadiusin app 26.10.0. ornull, optionalshowOnMap— boolean, Whether the profile is shown on the map., optional
AccountPreferencesUpdate
settings— objectlocationSearchOptOut— booleanincognito— booleanhideViewedMe— booleanapproximateDistance— booleanviewRightNowNsfw— booleanshowOnMap— boolean, Whether the profile is shown on the map.mapLocationFuzzRadius— integer, Map-location privacy fuzz radius. Renamed frommapLocationRadiusin app 26.10.0. ornull
VisitingSettings
setting— string, visiting-status mode:OFF,ON, orAUTO
HomeLocation
name— string, human-readable name of locationlat— numberlon— number
HomeLocationMutation
lat— numberlon— number
PushTokenRequest
vendorProvidedIdentifier— string, The Firebase installation ID, which is the part oftokenbefore the first:.token— string, FCM registration token, shaped<installationId>:APA91b….