Emend
API Reference

Profile Management

Methods for searching, retrieving, and deleting user profiles, plus profile changelog.

Deprecated alias
search_profiles is a deprecated compatibility alias for search_user_profiles. New integrations should use search_user_profiles; the alias emits DeprecationWarning and will be removed in a future release.
search_user_profilesmethod

Search for user profiles using semantic queries.

response = client.search_user_profiles(    user_id="user_123",    query="laptop preferences",    tags=["hardware"],    threshold=0.7,    top_k=5)
PropType
user_idrequiredstring
generated_from_request_idstring
querystring
start_timedatetime
end_timedatetime
top_kinteger
sourcestring
custom_featurestring
extractor_namestring
tagsstring[]
thresholdfloat
enable_reformulationboolean
search_modeSearchMode

Returns SearchUserProfileResponse — see Profile Models.

rerank_user_profilesmethod

Rerank a list of candidate profile IDs by query relevance using a cross-encoder. Use after search_user_profiles (or any other source of candidate IDs) when initial results are noisy. The server fetches each candidate's full content (scoped to user_id), scores (query, content) pairs, and returns the top_k profiles sorted by descending score. IDs that don't resolve for the user are silently dropped.

response = client.rerank_user_profiles(    user_id="user_123",    query="laptop preferences",    profile_ids=["prof_1", "prof_2", "prof_3"],    top_k=5,)
PropType
user_idrequiredstring
queryrequiredstring
profile_idsrequiredlist[string]
top_kinteger

Returns: SearchProfilesViewResponse with success, user_profiles (sorted by descending cross-encoder score, capped at top_k), and msg.

storage_statsmethod

Get a lightweight count of how many profiles and playbooks a user has, plus the modified-time range across every status. Useful for sizing top_k before retrieval.

stats = client.storage_stats(user_id="user_123")print(stats.profile_count, stats.playbook_count)
PropType
user_idrequiredstring

Returns StorageStatsResponse.

get_profilesmethod

Retrieve user profiles.

response = client.get_profiles(    user_id="user_123",    tags=["hardware"],    top_k=10)
PropType
user_idrequiredstring
profile_idstring
querystring
start_timedatetime
end_timedatetime
top_kinteger
sourcestring
profile_time_to_livestring
status_filterlist[Status | string]
tagsstring[]
force_refreshboolean

Returns GetUserProfilesResponse — see Profile Models. Cached for 10 minutes; pass force_refresh=True to bypass.

get_all_profilesmethod

Get profiles across all users (admin operation).

response = client.get_all_profiles(limit=100)
PropType
limitinteger
status_filterstring
user_idstring
profile_idstring
querystring
sourcestring
profile_time_to_livestring
start_timeinteger
end_timeinteger

Returns: GetUserProfilesResponse with profiles from all users.

Example

group-by-user.py
# Get profiles from all usersall_profiles = client.get_all_profiles(limit=50) # Group by userfrom collections import defaultdictby_user = defaultdict(list) for profile in all_profiles.user_profiles:    by_user[profile.user_id].append(profile) for user_id, profiles in by_user.items():    print(f"User {user_id}: {len(profiles)} profiles")    for p in profiles[:3]:  # Show first 3        print(f"  - {p.content[:50]}...")
add_user_profilemethod

Add user profiles directly to storage, bypassing the inference pipeline. Useful for seeding known facts (testing, migration, manual injection). The server populates the embedding automatically.

response = client.add_user_profile(    user_profiles=[        {"user_id": "user_123", "content": "Prefers concise responses"},    ])
PropType
user_profilesrequiredlist[UserProfile | dict]

Returns AddUserProfileResponse — see Profile Models.

delete_profilemethod

Delete user profiles by ID or search query.

response = client.delete_profile(    user_id,    profile_id="",    search_query="",    wait_for_response=False)
PropType
user_idrequiredstring
profile_idstring
search_querystring
wait_for_responseboolean

Returns DeleteUserProfileResponse — see Profile Models.

get_profile_change_logmethod

Retrieve the history of profile changes.

logs = client.get_profile_change_log()

Returns ProfileChangeLogResponse containing ProfileChangeLog entries — see Profile Models.

Bulk Delete Operations

delete_profiles_by_idsmethod

Delete multiple profiles by their IDs.

response = client.delete_profiles_by_ids(profile_ids=["prof_1", "prof_2"])
PropType
profile_idsrequiredlist[string]

Returns: BulkDeleteResponse with success, deleted_count, and message.

delete_all_profilesmethod

Delete all profiles.

response = client.delete_all_profiles()

Returns: BulkDeleteResponse with success, deleted_count, and message.