Right Now, WIP
NOTE
This page is a work in progress. Endpoints below haven't been fully researched.
Get active right now post, WIP
Get the current Right Now post, including a hidden post before expiration. Returns {"post":null} when there is no current post or it has expired.
GET /v3/rightnow/active-postResponse:
post— RightNowPostDetails ornull
Get other user right now post, WIP
Get a profile’s Right Now post. Uses activeText for live text and a flat media array rather than the feed’s type/data wrappers. Returns {"post":null} when the profile has no post, including for a nonexistent profile ID. Behavior for hidden or expired posts is undocumented.
GET /v3/rightnow/profiles/{profileId}Response:
post— RightNowPostDetails ornull
Update Right Now post, WIP
Partially edit an existing Right Now post. Send only the fields being changed. Edits preserve the post identity and expiration.
PATCH /{version}/rightnow/posts/{postId}Body:
hosting— booleantext— string, Submitted for moderation; read moderatedText before assuming activeText has changed.media— Replaces the attached media array.type— string, Media kind, e.g.image_v1.data— objectid— The integer mediaId returned by POST /v1/media/upload or /v2/media/upload. The request uses data.id; own-post readback uses mediaId.
hidden— boolean, Whether the post is hidden.shareLocation— RightNowShareLocationlocationRadius— integer, Location precision value. On this edit route, locationRadius = 100 − slider value. This is not a distance in meters.isDiscreet— unknown, Discreet-post setting. The request value type is undocumented.sharedFields— array of strings
Errors:
400—urn:gr:err:resource_not_foundwhen no post has this ID.
Create right now post v4, WIP
Body type: CreatePostRequest (undocumented).
Response type: RightNowCreatePostResponse (undocumented).
POST /v4/rightnow/postsCreate right now post v3, WIP
Body type: CreatePostRequest (undocumented).
Response type: RightNowCreatePostResponse (undocumented).
POST /v3/rightnow/postsUpdate Right Now post settings, WIP
Update hosting, location sharing, or visibility. Send hidden: true to deactivate the post and hidden: false to reactivate it before expiration; this preserves its identity and expiration.
PATCH /v1/rightnow/posts/{postId}/settingsBody:
shareLocation— RightNowShareLocationhosting— booleanhidden— boolean, true hides the post; false makes it active again.
Errors:
400—urn:gr:err:client_actionwhen the body has no recognized settings key (hosting,shareLocationorhidden), checked before the post ID.urn:gr:err:resource_not_foundwhen no post has this ID.
Get Right Now feed (v5)
Requires Authorization.
Get the Right Now feed (v5), with the same response shape and query parameters as v4. DISTANCE orders posts by ascending distance; NEWEST orders posts by descending posted time. Multiple sexualPositions select their union; position and hosting filters combine as an intersection. An active own post can remain included despite age and position filters. Card representation may change with filters, so filtered standard-post sets need not be subsets of unfiltered standard-post sets.
GET /v5/rightnow/feedQuery (optional):
sort— string, sort order, optionalhosting— boolean, true selects hosting posts; false selects non-hosting posts. Omit to include both., optionalsexualPositions— array of integers concatenated with a,,-1means "Not Specified", see Sexual position, optionalageMin— integer, optionalageMax— integer, optional
Response:
items— array of RightNowFeedResponseItemviewerCount— number of profiles currently viewing the feed area
Upload Right Now media, WIP
Upload raw image bytes as application/octet-stream. Attach the returned mediaId using an image_v1/data.id post edit.
POST /v1/media/uploadQuery (optional):
img_1_bottom— integer, optionalimg_1_left— integer, optionalimg_1_right— integer, optionalimg_1_top— integer, optional
Body:
Binary file.
Response:
mediaId— long integerurl— URLthumbnailUrl— URL
Get right now google play sku, WIP
Response type: RightNowSkuResponse (undocumented).
GET /v1/rightnow/googleplay/skuCreate right now request, WIP
Body type: RightNowCreateRequestData (undocumented).
POST /v1/rightnow/requestsUpload Right Now media (v2), WIP
Upload raw, uncropped image bytes as application/octet-stream with a separate crop rectangle (crop_*), a thumbnail crop (img_1_*), plus rotate and flip_vertical. Attach the returned mediaId using an image_v1/data.id post edit.
POST /v2/media/uploadQuery:
crop_top— integercrop_bottom— integercrop_left— integercrop_right— integerimg_1_top— integerimg_1_bottom— integerimg_1_left— integerimg_1_right— integerrotate— integer, 0, 90, 180 or 270flip_vertical— boolean
Body:
Binary file.
Response:
mediaId— long integerurl— URLthumbnailUrl— URL
Get received Right Now requests, WIP
Requires Authorization.
GET /v1/rightnow/requests/inboxResponse:
requests— array, Item structure is undocumented.
Get sent Right Now requests, WIP
Requires Authorization.
GET /v1/rightnow/requests/outboxResponse:
requests— array, Item structure is undocumented.
Update Right Now request, WIP
Requires Authorization.
Body type: UpdateRightNowRequestData (undocumented).
PUT /v1/rightnow/requests/{requestId}Get Right Now feed
Requires Authorization.
Get the Right Now feed. DISTANCE orders posts by ascending distance; NEWEST orders posts by descending posted time. Multiple sexualPositions select their union; position and hosting filters combine as an intersection. An active own post can remain included despite age and position filters. Card representation may change with filters, so filtered standard-post sets need not be subsets of unfiltered standard-post sets.
GET /v4/rightnow/feedQuery (optional):
sort— string, sort order, optionalhosting— boolean, true selects hosting posts; false selects non-hosting posts. Omit to include both., optionalsexualPositions— array of integers concatenated with a,,-1means "Not Specified", see Sexual position, optionalageMin— integer, optionalageMax— integer, optional
Response:
items— array of RightNowFeedResponseItemviewerCount— number of profiles currently viewing the feed area
Get Right Now feed (v6)
Requires Authorization.
Get the Right Now feed (v6), with the same response shape and query parameters as v4. DISTANCE orders posts by ascending distance; NEWEST orders posts by descending posted time. Multiple sexualPositions select their union; position and hosting filters combine as an intersection. An active own post can remain included despite age and position filters. Card representation may change with filters, so filtered standard-post sets need not be subsets of unfiltered standard-post sets.
GET /v6/rightnow/feedQuery (optional):
sort— string, sort order, optionalhosting— boolean, true selects hosting posts; false selects non-hosting posts. Omit to include both., optionalsexualPositions— array of integers concatenated with a,,-1means "Not Specified", see Sexual position, optionalageMin— integer, optionalageMax— integer, optional
Response:
items— array of RightNowFeedResponseItemviewerCount— number of profiles currently viewing the feed area
Get hookup intent post
Requires Authorization.
Returns your hookup intent post. Answers 204 with an empty body when you have none.
GET /v1/hookup-intent/postResponse:
post— HookupIntentPost ornullstatus— string,"ACTIVE","INACTIVE"(see Renew hookup intent post) ornullrenewsIn— long integer, appears to be the number of seconds until the post has to be renewed, ornull
Create hookup intent post
Requires Authorization.
Turns hookup intent on by creating your post.
POST /v1/hookup-intent/postBody:
text— string, optionalshareLocation— RightNowShareLocationlocationRadius— integer, optionalmedia— array of objects, may be emptytype— string,"image_v1"or"album_v1"data— objectid— long integer, media ID; for"image_v1"themediaIdreturned by a Right Now media upload, see Upload right now media and Upload Right Now media (v2)
hosting— boolean
Response:
post— HookupIntentPoststatus— string,"ACTIVE","INACTIVE"(see Renew hookup intent post) ornullrenewsIn— long integer, appears to be the number of seconds until the post has to be renewed, ornull
Errors:
409— Conflicts with the current post state.
Update hookup intent post
Requires Authorization.
Only the fields present in the request body are updated.
PUT /v1/hookup-intent/post/{postId}Body:
text— stringhosting— booleanmedia— array of objects, optional; an empty array appears to remove the phototype— string,"image_v1"or"album_v1"data— objectid— long integer, media ID; for"image_v1"themediaIdreturned by a Right Now media upload, see Upload right now media and Upload Right Now media (v2)
shareLocation— RightNowShareLocationlocationRadius— integer
Response:
post— HookupIntentPoststatus— string,"ACTIVE","INACTIVE"(see Renew hookup intent post) ornullrenewsIn— long integer, appears to be the number of seconds until the post has to be renewed, ornull
Delete hookup intent post
Requires Authorization.
Turns hookup intent off.
DELETE /v1/hookup-intent/post/{postId}Renew hookup intent post
Requires Authorization.
Renews your hookup intent post, see status and renewsIn in Get hookup intent post.
POST /v1/hookup-intent/post/{postId}/renewResponse:
post— HookupIntentPoststatus— string,"ACTIVE","INACTIVE"(see Renew hookup intent post) ornullrenewsIn— long integer, appears to be the number of seconds until the post has to be renewed, ornull
Errors:
404— No such post.409— Conflicts with the current post state.
HookupIntentPost
Your hookup intent post.
id— long integerprofileId— long integerposted— unix timestamp in milliseconds ornull, optionalexpiration— unix timestamp in milliseconds ornull, optionalhosting— boolean, optionalactiveText— string ornull, the post's live text;moderatedTextholds the latest submitted text, optionalmoderatedText— object, the latest submitted text and its moderation state, ornull, optionalid— long integerpostId— long integertext— stringtextStatus— string ornull, known values:"AWAITING_MODERATION","MODERATION_FAILED","ERROR"rejectReasons— array of strings ornullcreatedAt— long integerupdatedAt— long integer
media— array of objects ornull, optionalmediaId— long integerthumbnailUrl— URLfullImageUrl— URLcontentType— string, e.g.image/jpegstate— string,"PENDING","APPROVED","REJECTED","DELETED"ornullreason— string ornullisRejectAutomated— boolean ornullshouldBlur— boolean, may be absentisNsfw— boolean, may be absent
lat— number ornull, optionallon— number ornull, optionalpostStatus— string,"ACTIVE","INACTIVE"ornull, optionalshareLocation— RightNowShareLocation ornull, optionallocationRadius— integer ornull, optionalisDiscreet— string,"TRUE","FALSE"ornull, optionalsharedFields— array of strings ornull, optional
RightNowStatus
"NOT_ACTIVE""HOSTING""NOT_HOSTING"
RightNowAttributionStatus
Right Now attribution status. Sent as a plain string under key rightNowStatus; unrecognized/absent values are treated as NONE by the official client.
"ACTIVE""HIDDEN""ACTIVE_WITH_BOOST""NONE"
RightNowShareLocation
"DISTANCE_AND_MAP""DISTANCE_ONLY""NONE"
RightNowFeedResponse
items— array of RightNowFeedResponseItem, optionalviewerCount— number of profiles currently viewing the feed area, optional
RightNowFeedResponseItem
A feed item, discriminated by type. Unrecognized type values are tolerated by the client (mapped to an unknown/ignored item), so new post kinds may appear.
type— string, optionaldata— object, optional
CuratedPost
type— string, optionaldata— CuratedPostData, optional
RightNowPost
type— string, optionaldata— PostData, optional
LockedPost
type— string, optionaldata— PostData, optional
PostData
@type— string, server post-data label, e.g.RightNowFeedItemData$RightNowPostV3or$LockedPostV1, optionalid— long integer, optionalprofileId— long integer, optionalmediaHash— string, optionaldisplayName— string, optionalmedia— array of RightNowPostMediaItem, optionalonlineUntil— unix timestamp in milliseconds; present onright_now_post_v3, absent onlocked_post_v1; may be absent, optionaltext— string, optionaldistance— integer, distance in meters; may be absent, optionalmpuScore— float, optionaltype— string, locked-post kind; present only onlocked_post_v1; may be absent, optionalhosting— boolean, optionalposted— unix timestamp in milliseconds, optionalexpiration— unix timestamp in milliseconds, optionalrecentlyChatted— boolean, optionalfavorite— boolean, optionallat— number, Latitude; may be absent., optionallon— Longitude; may be absent., optionalisOnPrep— boolean, Whether the profile is on PrEP., optional
RightNowPostMediaItem
type— string, optionaldata— object, optionalmediaId— long integerthumbnailUrl— URLfullImageUrl— URLcontentType— string, e.g.image/jpegstate— string, moderation state, e.g.APPROVEDreason— string, moderation reason ornullisRejectAutomated— boolean ornullshouldBlur— booleanisNsfw— booleansource— string, e.g.RIGHT_NOW
CuratedPostData
@type— string, e.g.RightNowFeedItemData$CuratedPostV1, optionaltype— string, optional
UpsellInsertData
@type— string, e.g.RightNowFeedItemData$UpsellInsertV1, optionaltype— string, optional
DiscreetPostData
Discreet posts were not present in available captures; shape derived from the app model (RightNowDiscreetPostResponse).
@type— string, server post-data label, optionalid— long integer, optionalmedia— array of RightNowPostMediaItem, optionalonlineUntil— unix timestamp in milliseconds; may be absent, optionaltext— string, optionaldistance— integer, distance in meters; may be absent, optionalhosting— boolean, optionalposted— unix timestamp in milliseconds, optionalexpiration— unix timestamp in milliseconds, optionalprofileFields— object, discreet profile fields; may be absent, optional
DiscreetPost
type— string, optionaldata— DiscreetPostData, optional
DiscreetLockedPost
type— string, optionaldata— DiscreetPostData, optional
UpsellInsert
type— string, optionaldata— UpsellInsertData, optional
RightNowMediaUploadResponse
Response from either Right Now media upload version. Attach mediaId using the image_v1/data.id edit payload.
mediaId— long integer, optionalurl— URL, optionalthumbnailUrl— URL, optional
RightNowPostDetails
Right Now post returned by the own-post and profile-post endpoints. Text edits may leave activeText unchanged while moderatedText holds the submitted text and moderation state.
id— long integer, optionalprofileId— long integer, optionalposted— unix timestamp in milliseconds ornull, optionalexpiration— unix timestamp in milliseconds ornull, optionalhosting— boolean, optionalactiveText— string ornull, the post's live text;moderatedTextholds the latest submitted text, optionalmoderatedText— object, the latest submitted text and its moderation state, ornull, optionalid— long integerpostId— long integertext— stringtextStatus— string ornull, known values:"AWAITING_MODERATION","MODERATION_FAILED","ERROR"rejectReasons— array of strings ornullcreatedAt— long integerupdatedAt— long integerdeleted— boolean
media— array of objects ornull, optionalmediaId— long integerthumbnailUrl— URLfullImageUrl— URLcontentType— string, e.g.image/jpegstate— string, moderation state, e.g.APPROVEDreason— string, moderation reason ornullisRejectAutomated— boolean, Whether a rejection is automated; true alone does not indicate rejection. ornullshouldBlur— booleanisNsfw— booleansource— string, e.g.RIGHT_NOW
lat— number ornull, optionallon— number ornull, optionalpostStatus— string, Post visibility status, including ACTIVE and HIDDEN. Hiding a post retains its data., optionalshareLocation— RightNowShareLocation ornull, optionallocationRadius— integer, Location precision value from 0 to 100, or null. Not a distance in meters; null does not mean zero., optionalisDiscreet— string,"TRUE","FALSE"ornull, optionalsharedFields— array of strings ornull, optionalboostUpsellOfferAvailableUntil— unix timestamp in milliseconds ornull, optional
RightNowPostResponse
post— RightNowPostDetails ornull, optional