Skip to main content

Overview

The OtherUserResource provides methods for looking up other users on the Speckle server. Access it via client.other_user after authenticating your SpeckleClient. Use this resource to search for users by name or email, or retrieve public profile information for specific users.
from specklepy.api.client import SpeckleClient

client = SpeckleClient(host="https://app.speckle.systems")
client.authenticate_with_token(token)

# Access other user operations
user = client.other_user.get("user_id")

Methods

get()

Get public profile information for another user by their ID.
client.other_user.get(id: str) -> Optional[LimitedUser]
Parameters:
id
str
required
The ID of the user to retrieve
Returns:
user
LimitedUser | None
The user’s public profile, or None if not found
Example:
user = client.other_user.get("other_user_id_here")

if user:
    print(f"Name: {user.name}")
    print(f"Bio: {user.bio}")
    print(f"Company: {user.company}")
    print(f"Avatar: {user.avatar}")
    print(f"Verified: {user.verified}")
    print(f"Role: {user.role}")
else:
    print("User not found")
See LimitedUser for property details.
This method returns limited public profile information. Email addresses and other private information are not included. Use client.active_user.get() to access your own full profile.
Search for users by name or email.
client.other_user.user_search(
    query: str,
    *,
    limit: int = 25,
    cursor: Optional[str] = None,
    archived: bool = False,
    emailOnly: bool = False
) -> UserSearchResultCollection
Parameters:
query
str
required
Search query (minimum 3 characters)
limit
int
default:"25"
Maximum number of results to return
cursor
str
default:"None"
Cursor for pagination
archived
bool
default:"False"
Include archived users
emailOnly
bool
default:"False"
Search email addresses only
Returns:
results
UserSearchResultCollection
Search results with pagination cursor
Example:
# Search for users by name
results = client.other_user.user_search("john", limit=10)

print(f"Found {len(results.items)} users:")
for user in results.items:
    print(f"  - {user.name} ({user.company})")
    if user.verified:
        print(f"    ✓ Verified")

# Paginate through more results
if results.cursor:
    next_page = client.other_user.user_search(
        "john",
        cursor=results.cursor
    )
Search by Email:
# Search email addresses only
results = client.other_user.user_search(
    "[email protected]",
    emailOnly=True
)

if results.items:
    user = results.items[0]
    print(f"Found: {user.name} ({user.email if hasattr(user, 'email') else 'email hidden'})")
See UserSearchResultCollection for property details.
The search query must be at least 3 characters long. Shorter queries will result in an error.

Types

LimitedUser

Represents another user’s public profile information.
id
str
User ID
name
str
Display name
bio
str
User biography
company
str
Company name
avatar
str
Avatar image URL
verified
bool
Whether user is verified
role
str
Server role (e.g., “server:user”, “server:admin”)

UserSearchResultCollection

Collection of user search results with pagination.
items
List[LimitedUser]
List of matching users
cursor
str
Pagination cursor for next page