Application API User Status Information
October 15, 2026 at 9:35 AMUser Status Information
Several API endpoints return a “user status information” packet that has the following format (as a JSON structure):
{
The numeric ID of that logged in member. May be used in other API calls that expect a profileid.
"id" : 123456,
A UUID that also identifies the member. Over time, this will start to replace uses of the numeric member ID in API calls (and, later, in all results).
"member_id" : "ebd4f451-afcc-41ec-888c-ac1602c182c4",
about_me is the long form description on a member’s profile and can be arbitrarily long (in practice it will be up to 1,000 characters). For the current authenticated member, you may also get about_me_moderated if there is a pending update to this field that has not yet been approved by our Customer Service team. For backward compatibility, we also return aboutme and may return aboutme_moderated.
"about_me" : "Long description",
"age" : 35,
cansendto indicates whether the currently logged in member can send a new message to (start a new message thread with) this member’s profile.
"cansendto" : "y", // or "n"
Although city is provided, it is recommended to use location (below) as it provides a better description of a member’s location, relative to the member making the API call. For the current authenticated member, you may also get city_moderated if there is a pending update to this field that has not yet been approved by our Customer Service team.
"city" : "San Francisco",
covalence indicates the relationship between the “viewer” (the authorized member making the API call) and the “viewee” (the member whose information has been returned by that API call).
The possible values are:
- liked - The viewer has expressed interest in the viewee,
- declined - The viewer has declined a request from the viewee,
- mutual - The viewer and viewee have both expressed interest in each other,
- likedme - The viewee has expressed interest in the viewer,
- declinedme - The viewee has declined a request from the viewer,
- unliked - The viewer has expressed disinterest in the viewer,
- none - No expression of interest has occurred yet.
"covalence" : "liked",
In search results, we provide additional covalence fields:
isconnectionindicates there is an accepted interest in each other (null,true, orfalse),covalencedatecreatedindicates when the initial like occurred (nullor a date string),covalencedateansweredindicates when that like was responded to (nullor a date string).
"isconnection" : false, // or true or null
"covalencedatecreated" : null, // or a date/time value
"covalencedateanswered" : null, // or a date/time value
In search results, where both fuzzy and exact matches are possible (e.g., POST /searches), we provide the following additional fields:
relevanceindicates how closely the result matches the complete set of search criteria used (both explicitly provided in the API call and implicitly added by the backend, based on the current member’s profile): a value from 0.0 to 1.0,exactmatchindicates whether the result is considered an exact match (trueorfalse): note that an exact match may have a relevance less than 1.0 because some search criteria are treated as “preferences” that do not affect whether the result matches overall (on other criteria), e.g., members who are currently online are “preferred” which may affectrelevancebut will not affectexactmatch.
"relevance" : 0.773, // 0.0 <= relevance <= 1.0
"exactmatch" : true, // or false
blocked indicates whether the viewer or viewee have blocked each other. The possible values are:
- none - Neither member has blocked the other,
- both - These members have blocked each other,
- you - The viewee has blocked the viewer (“they blocked you”),
- them - The viewer has blocked the viewee (“you blocked them”).
"blocked" : "none",
display_name is the way the member wants to be displayed to other members. It is either their username or first_name and the initial of last_name, depending on their display_name_preference:
"display_name" : "Sophia M.",
The from_world_plus field indicates whether a member is from the same group of sites as the logged in (viewing) member or from other sites in the World+ offering. This is provided so that profiles can be highlighted, if desired (e.g., in search results).
"from_world_plus" : false, // or true
We provide both the gender of this member and their gender_preference (which indicates the member’s preferred gender for matches):
"gender" : "Male", // or "Female"
"gender_preference" : "Female", // or "Male"
For backward compatibility, we also return genderpreference.
has_been_messaged is true if the viewer has been sent a message by this member, i.e., you (the viewer) have been messaged by the member whose data you are looking at. Since this field name has caused confusion for users of the API, it is considered legacy at this point, and two new fields have been added (see next paragraph).
"has_been_messaged" : false, // or true
viewer_messaged_by_member is true if this member has sent a message to the viewer (which should be the same as the legacy has_been_messaged field), and member_messaged_by_viewer is true if this member has received a message from the viewer.
"viewer_messaged_by_member" : false, // or true
"member_messaged_by_viewer" : false, // or true
The headline is the short form description on a member’s profile, up to 255 characters (generally less than 100 characters). For the current authenticated member, you may also get headline_moderated if there is a pending update to this field that has not yet been approved by our Customer Service team.
"headline" : "Short description",
location is the recommended text to use when displaying a member’s city / state / country as it is adapted relative to the viewer’s location. In general, when two members are closer together, we provide more detail; when they are further apart, we provide less detail.
"location" : "San Francisco, California",
The marital_status string is localized for the viewer. For backward compatibility, we also return maritalstatus.
"marital_status" : "Never Married",
If this user status information is for the viewer profile, we also return the underlying value:
"marital_status_value" : 10,
The mood (e.g., Happy, Surprised) of the viewee, localized for the viewer.
"mood" : "Happy",
A member is considered online if they are currently logged in and have not changed their status to offline.
"online" : true, // or false
A member is considered online_recently if they have logged in within the last few days (as determined by per-site settings). For backward compatibility, we also return onlinerecently.
"online_recently" : "y", // or "n"
In addition, we provide the number of seconds since the member was last active on the site. This will be -1 if we can’t figure that out.
"since_active" : 2451,
The number of approved photos a member has is returned:
"photo_count" : 2,
Photo Information (Primary)
If the member has a primary photo, we return information about it:
"photo_pending" : false,
"photo_primary" : true,
"photo" : {
"id" : 765432,
"urlstem" : "https://.../filename",
"extension" : ".jpg", // or some other extension
"max1600" : "...",
"max800" : "...",
"square1000" : "...",
"square500" : "...",
"square250" : "..."
},
A primary photo is always an approved (not pending) photo. The fields in
photo have the following meanings:
id- The ID of the photo in our systemurlstem- The portion of the image URL up to and including the image filename (but not the extension); if no photo is available, this will be""extension- The separator and file extension of the image (e.g.,.gif); if no photo is available, this will be""max1600,max800,square1000,square500,square250– If the photo is available, these will be the respective file suffix to use for each available size of the photo; if the specific size is not available, the suffix of an alternative image file will be returned; forsquare250, that alternative will be the legacy 150x150 square image; for the other suffix values will be for the uncropped, 400px width legacy image (and therefore forsquare1000andsquare500, it will need overflow cropping to the appropriate square size when it is displayed)
In all cases, the URL for display will be urlstem + suffix + extension. If no photo is available, and urlstem and extension are empty strings, the client app should render a male or female default avatar image (based on the gender field above).
For backward compatibility, we also return photopending as 1 or 0.
Photo Information (Non-Primary, Self)
Otherwise, if no primary photo exists and this user status information is for the current authenticated member, we return the oldest photo they have uploaded (that has not been deleted or rejected). It may be an approved photo or a pending photo:
"photo_pending" : false, // if approved, or true if pending
"photo_primary" : false,
"photo" : {
"id" : 765432,
"urlstem" : "https://.../filename",
"extension" : ".jpg",
"max1600" : "...",
"max800" : "...",
"square1000" : "...",
"square500" : "...",
"square250" : "..."
},
If the member has no such photo, we return:
"photo_pending" : false, // avatars are considered not pending
"photo_primary" : false,
"photo" : {
"urlstem" : "",
"extension" : ""
},
Photo Information (Non-Primary, Other)
Otherwise, if no primary photo exists and this user status information is for a member being viewed by the current authenticated member, we return minimal information (and the gendered avatar should be displayed in the profile’s primary slot):
"photo_pending" : false, // avatars are considered not pending
"photo_primary" : false,
"photo" : {
"urlstem" : "",
"extension" : ""
},
Shared Photo Consent (Messaging)
A "shared_photos" structure is returned, providing details about
permission and consent as follows, relative to the viewing member:
"shared_photos" : {
"can_share" : true, // or false if globally disallowed from sharing photos
"can_send_to" : false, // or true if you have opted-in for this recipient
"can_receive_from" : false, // or true if you have consented for this sender
"receiving_me" : false // or true if they have consented to your photos
},
Remaining Profile Information
Indicate whether the member is platinum or not:
"platinum" : "y", // or "n"
For the current authenticated member, push_ids is either a list of all the known push_id values that have been recorded against this member via the POST /webpush API (legacy), or a list containing the member’s UUID (if they are subscribed on any device; new API). It will be empty if the member has not opted into any webpush system. push_ids is not provided for other members.
"push_ids" : [ "abc123" ],
Indicate whether the viewing member has ever reported the viewed member. For viewing yourself, this is always false.
"reported" : true, // or false
Since members can hide their profiles from search, making their profiles inaccessible unless they have exchanged messages with the viewer, we return a flag indicating this, so that client apps can indicate that a profile appearing in an interaction list may not be fully visible.
"searchable" : true, // or false
The ID of the site on which this member is registered (which may be different to the site of the viewer).
"site" : 54,
The URL of the site on which this member is registered. On dev, this will have a dv. prefix on the domain. On staging, it will have a st. prefix on the domain.
"site_url" : "https://soulsingles.com",
The raw state or region of the member’s location. As with city above, we recommend not using this but display location instead.
"state" : "California",
The title of the site this member is registered (which will usually be a variant of the site’s URL, but not for all sites).
"title" : "DesiKiss.com",
The raw username for this member. This is provided for backward compatibility – the display_name is what should be shown for all members (username will become a current member only field shortly).
"username" : "happy123",
The userstatus can be "new", "approved", or "rejected". "new" indicates a member whose profile has not yet been completed and reviewed by our Customer Service team.
"rejected" indicates a member whose profile has been reviewed but is not yet acceptable (changes are required to meet our terms of service).
"userstatus" : "approved",
As with city and state above, it is recommended you display location instead. For backward compatibility, we also return zippostalcode.
"zip" : "94103",
If a site is configured to support zodiac signs (not all sites are), then we will return zodiac field which is the capitalized English name of the member’s zodiac sign (e.g., "Cancer").
"zodiac" : "Capricorn",
The following field indicates the membership status, of the current member. A member with platinum : "y" status gets additional benefits over regular members, and such members will also have membership_status : "active". The membership status may also be "none" or "inactive". The latter means that a membership exists, but there is a problem with it.
"membership_status" : "active", // or "none" or, rarely, "inactive"
The following fields are only returned if the member is platinum status (membership_status : "active") and for operations on a single profile (i.e., not in search results etc). This information is generally only useful when this user status information is for the viewer.
"autorenew" : true, // or false
"daysremaining" : 13,
"expirationdate" : "...", // JSON date
The following fields are only returned if this user status information is for the viewer profile.
For other member’s information, the country is part of the location (if members are not in the same country).
"country" : "US",
"dateofbirth" : {
"year" : 1979,
"month" : 7, // January = 1
"day" : 23
},
"email" : "someone@somewhere.com",
"date_registered" : "..."
We return the member’s first_name and last_name as well as first_initial. If display_name_preference is "nickname" then display_name (above) will be the same as username (below); if display_name_preference is "firstname" then display_name will be the same as first_initial (below).
"first_name" : "Sophia",
"last_name" : "Meone",
"username" : "happy123",
"first_initial" : "Sophia M.",
"display_name_preference" : "nickname", // or "firstname"
You may also get username_moderated if there is a pending update to this field that has not yet been approved by our Customer Service team.
"locale" : "fr_FR", // a language_COUNTRY pair
"world_plus" : "opted_in", // or "opted_out" or "undecided"
We return a list of required fields in a member’s profile that are not filled out. For a complete profile, this list will be [] (empty), otherwise it will be the names of fields that members need to complete.
"missing_required_fields" : ["about_me" "hair_color" "smoking"],
We also return a count of the total number of required fields:
"num_required_fields" : 16,
The agefrom and ageto fields refer to the viewer’s default search criteria.
"agefrom" : 30,
"ageto" : 50,
In addition, latitude and longitude may be available and can be used to determine the current member’s location (if not available from the browser or device).
"latitude" : 37.733795,
"longitude" : -122.446747
}