Skip to content

Conversations ​

Get conversations ​

Requires Authorization.

Also POST /v3/inbox, seems to be aliased to v4 now

POST /v4/inbox

Query (optional):

  • page — 1-based number, pagination, optional

Body (optional):

  • unreadOnly — boolean
  • chemistryOnly — boolean
  • favoritesOnly — boolean
  • rightNowOnly — boolean
  • onlineNowOnly — boolean
  • distanceMeters — "double" number value or null
  • positions — array of integers, sexual position IDs
  • includeReactionUnreads — boolean, optional. With unreadOnly, a conversation whose only new activity is the other participant's reaction to your message came back with neither true nor false

Response:

  • entries — array of Conversation
  • showsFreeHeaderLabel — boolean
  • totalFullConversations — number, e.g. "5"
  • totalPartialConversations — number, e.g. 0
  • maxDisplayLockCount — number, e.g. 99
  • nextPage — integer, e.g. 2; null or absent on the last page

Get conversations (v3 alias) ​

Requires Authorization.

POST /v3/inbox

Query (optional):

  • page — 1-based number, pagination, optional

Body (optional):

  • unreadOnly — boolean
  • chemistryOnly — boolean
  • favoritesOnly — boolean
  • rightNowOnly — boolean
  • onlineNowOnly — boolean
  • distanceMeters — "double" number value or null
  • positions — array of integers, sexual position IDs
  • includeReactionUnreads — boolean, optional. With unreadOnly, a conversation whose only new activity is the other participant's reaction to your message came back with neither true nor false

Response:

  • entries — array of Conversation
  • showsFreeHeaderLabel — boolean
  • totalFullConversations — number, e.g. "5"
  • totalPartialConversations — number, e.g. 0
  • maxDisplayLockCount — number, e.g. 99
  • nextPage — integer, e.g. 2; null or absent on the last page

Get conversations by IDs ​

Note: in this v1 endpoint, each participants item only includes profileId, primaryMediaHash, lastOnline, and distanceMetres. Fields onlineUntil, position, isInAList, and hasDatingPotential are absent.

POST /v1/inbox/conversation

Body:

Array of Conversation ID.

Response:

Array of ConversationData.

Get conversations by IDs (v2) ​

POST /v2/inbox/conversation

Query (optional):

  • includeReactionUnreads — boolean. Right after the other participant reacted to the previewed message, true and false returned the same conversation, optional

Body:

Array of Conversation ID.

Response:

Array of ConversationData.

Delete a conversation ​

Requires Authorization.

Deletes the conversation on your side. Does not delete the conversation for the other chat participant.

Repeated requests are completed without errors.

DELETE /v4/chat/conversation/{conversationId}

Response:

Empty.

Pin a conversation ​

Requires Authorization.

Affects sorting position in get conversations endpoint response.

Requests on nonexistent conversations seem to be affecting them after they have been created.

Repeated requests are completed without errors.

POST /v4/chat/conversation/{conversationId}/pin

Response:

Empty.

Unpin a conversation ​

Requires Authorization.

Affects sorting position in get conversations endpoint response. Requests on nonexistent conversations seem to be affecting them after they have been created.

Repeated requests are completed without errors.

POST /v4/chat/conversation/{conversationId}/unpin

Response:

Empty.

Mute a conversation ​

Requires Authorization.

Requests on nonexistent conversations seem to be affecting them after they have been created.

Repeated requests are completed without errors.

POST /v1/push/conversation/{conversationId}/mute

Response:

Empty

Unmute a conversation ​

Requires Authorization.

Requests on nonexistent conversations seem to be affecting them after they have been created.

Repeated requests are completed without errors.

POST /v1/push/conversation/{conversationId}/unmute

Response:

Empty

Get shared media in conversation ​

Requires Authorization.

GET /v5/chat/media/shared/images/with-me/{conversationId}

Response:

Refresh messages ​

Requires Authorization.

Returns the messages with the given message IDs, oldest first. IDs of messages that don't exist are left out.

POST /v4/chat/conversation/{conversationId}/message-by-id

Body:

  • messageIds — array of strings

Response:

Mark messages as read ​

Requires Authorization.

Regardless of messageId passed, the whole conversation's unreadCount will be reset to 0. messageId is taken into account to present the "Read" label to the sender.

If you'd like to mark the conversation as read but don't show it to the other participant, you could pass a valid but nonexistent messageId, such as 0:00000000-0000-0000-0000-000000000000.

Invalid messageIds will cause HTTP status 400 Bad Request errors.

POST /v4/chat/conversation/{conversationId}/read/{messageId}

Response:

Empty.

AI chat suggestions ​

Requires Authorization.

GET /v1/chat/suggestions

Query:

Response:

  • suggestions — array of objects
    • id — UUIDv3
    • text — string
    • type — string, SAVED_PHRASE | SMART_PHRASE

Get muted profiles (deprecated) ​

Requires Authorization.

Removed in the official Android client v26.14.0.

GET /v4/me/muted-profiles

Response:

  • profileIds — array of long integers

Conversation ID ​

String with two long integers separated by :, e.g. "12345678:23456789". Long integers are IDs of Profile. The order of these IDs is always from the lower ID to the higher ID, regardless of who started the chat.

ConversationParticipant ​

  • profileId — integer, Profile ID, optional
  • primaryMediaHash — string or null, see Media -> Public CDN files, optional
  • lastOnline — unix timestamp in milliseconds or null, optional
  • onlineUntil — unix timestamp in milliseconds or null; not sent by /v1/inbox/conversation; may be absent, optional
  • distanceMetres — float number or null, optional
  • position — Sexual position ID or null; not sent by /v1/inbox/conversation; may be absent, optional
  • isInAList — boolean, not sent by /v1/inbox/conversation; may be absent, optional
  • hasDatingPotential — boolean, not sent by /v1/inbox/conversation; may be absent, optional
  • isOnPrep — boolean, not sent by /v1/inbox/conversation; may be absent, optional

ConversationPreview ​

  • conversationId — object, optional
  • messageId — see Message for format, optional
  • chat1MessageId — string with UUIDv4, second part of messageId, optional
  • senderId — Profile ID, optional
  • reactorId — long integer, null in every observed response, including right after the other participant reacted to the previewed message; not sent by /v1/inbox/conversation; may be absent, optional
  • reactionType — unknown, null in every observed response, including right after a reaction to the previewed message; not sent by /v1/inbox/conversation; may be absent, optional
  • reactionTimestamp — unknown, null in every observed response, including right after a reaction to the previewed message; not sent by /v1/inbox/conversation; may be absent, optional
  • unsent — boolean; not sent in any observed response. Once the last message is unsent, preview itself is null., optional
  • type — Message type, optional
  • chat1Type — Chat1MessageType, optional
  • text — string or null, optional
  • url — string, for Image, the image's media hash, not a URL; for Giphy, the message's urlPath; for Gaymoji, the message's imageHash, e.g. gaymoji/1_2_Yass.png; null for Text, Location, Audio, Album and AlbumContentReply, optional
  • lat — number, for Location, the shared latitude; otherwise null, optional
  • lon — for Location, the shared longitude; otherwise null, optional
  • albumId — integer, for Album and AlbumContentReply, the album ID; otherwise null, optional
  • albumContentId — integer, for AlbumContentReply, the ID of the album content replied to; otherwise null, optional
  • albumContentReply — string, for AlbumContentReply, the reply text; otherwise null, optional
  • duration — long integer, for Audio, the length the audio was uploaded with, in milliseconds; otherwise null, optional
  • imageHash — string, for ProfilePhotoReply, the media hash of the profile photo replied to; null for Text, Location, Image, Audio, Album, AlbumContentReply, Giphy and Gaymoji, optional
  • photoContentReply — string, for ProfilePhotoReply, the reply text; otherwise null, optional

ConversationData ​

  • conversationId — Conversation ID, optional
  • name — string, profile name, may be an empty string, e.g. "", optional
  • participants — array of ConversationParticipant, optional
  • lastActivityTimestamp — unix timestamp in milliseconds, optional
  • unreadCount — integer, optional
  • preview — Conversation preview or null (e.g. a partial conversation with no message, or once the last message was unsent), optional
  • muted — boolean, optional
  • pinned — boolean, optional
  • favorite — boolean, optional
  • context — unknown, null in every observed response, optional
  • onlineUntil — unknown, null on the conversation; use ConversationParticipant's onlineUntil instead., optional
  • translatable — boolean, optional
  • rightNow — string, e.g. "NOT_ACTIVE", optional
  • rightNowStatus — RightNowAttributionStatus, Right Now attribution status, e.g. "NONE" or null, optional
  • hasUnreadThrob — boolean, optional
  • isTopConnection — boolean, not sent by /v1/inbox/conversation; may be absent, optional
  • smartLabel — unknown, null in every observed response; not sent by /v1/inbox/conversation; may be absent, optional

Conversation ​

An inbox entry, discriminated by type. The onlineNowOnly, distanceMeters and positions filters are paid: only the first totalFullConversations matches come back full, the rest as partial_conversation_v1. The unfiltered inbox returns the same conversations in full.

  • type — string, optional
  • data — object, optional

FullConversation ​

PartialConversation ​

PartialConversationData ​

Conversation data as a partial entry carries it. Fields muted, pinned, favorite, context, onlineUntil, translatable, rightNow and hasUnreadThrob are absent.

InboxFilterRequest ​

  • unreadOnly — boolean
  • chemistryOnly — boolean
  • favoritesOnly — boolean
  • rightNowOnly — boolean
  • onlineNowOnly — boolean
  • distanceMeters — "double" number value or null
  • positions — array of integers, sexual position IDs
  • includeReactionUnreads — boolean, optional. With unreadOnly, a conversation whose only new activity is the other participant's reaction to your message came back with neither true nor false, optional

InboxResponse ​

  • entries — array of Conversation, optional
  • showsFreeHeaderLabel — boolean, optional
  • totalFullConversations — number, e.g. "5", optional
  • totalPartialConversations — number, e.g. 0, optional
  • maxDisplayLockCount — number, e.g. 99, optional
  • nextPage — integer, e.g. 2; null or absent on the last page, optional

ConversationProfileMini ​

  • profileId — long integer
  • name — string
  • mediaHash — string, See Media -> Public CDN files -> Profile Images or null
  • onlineUntil — unix timestamp in milliseconds or null
  • distance — number or null
  • showDistance — boolean

ChatSuggestionsResponse ​

  • suggestions — array of objects
    • id — UUIDv3
    • text — string
    • type — string, SAVED_PHRASE | SMART_PHRASE

Open Grind is not affiliated with Grindr in any way.