Get Current User
Retrieve the authenticated user’s complete profile.
curl -X GET https://tally.genlayer.com/api/v1/users/me/ \
--cookie "sessionid=your_session"
Response
Show Full Response Schema
Ethereum wallet address (lowercase)
Whether user is visible in leaderboards
Email (only shown if verified)
Whether email is user-provided
User bio/description (max 500 chars)
Cloudinary URL for profile image
Cloudinary URL for banner image
Twitter/X username (without @)
Telegram username (without @)
User’s unique 8-character referral code
Information about who referred this user
Detailed referral information with referred users list
Validator profile if user is a validator
Builder profile if user is a builder
Steward profile if user is a steward
Whether user has validator waitlist badge
Whether user has builder welcome badge
List of working groups user belongs to
Account creation timestamp
{
"id": 42,
"name": "Alice Builder",
"address": "0x1234567890abcdef1234567890abcdef12345678",
"visible": true,
"email": "[email protected]",
"is_email_verified": true,
"description": "Smart contract developer building on GenLayer",
"profile_image_url": "https://res.cloudinary.com/.../profile.jpg",
"banner_image_url": "https://res.cloudinary.com/.../banner.jpg",
"website": "https://alice.dev",
"twitter_handle": "alice_dev",
"discord_handle": "alice#1234",
"telegram_handle": "alicedev",
"linkedin_handle": "alice-developer",
"github_username": "alicedev",
"referral_code": "ABC12345",
"referred_by_info": {
"id": 10,
"name": "Bob",
"address": "0xabcdef...",
"referral_code": "XYZ67890"
},
"total_referrals": 5,
"referral_details": {
"total_referrals": 5,
"builder_points": 250,
"validator_points": 150,
"referrals": [
{
"id": 100,
"name": "User 1",
"address": "0x...",
"total_points": 500,
"is_builder": true
}
]
},
"validator": {
"node_version": "v1.0.4",
"matches_target": true,
"total_points": 1500,
"rank": 25
},
"builder": {
"total_points": 800,
"rank": 12,
"created_at": "2024-01-15T10:30:00Z"
},
"has_validator_waitlist": true,
"has_builder_welcome": true,
"working_groups": [],
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-03-01T15:20:00Z"
}
Update Current User
Update the authenticated user’s profile information.
curl -X PATCH https://tally.genlayer.com/api/v1/users/me/ \
-H "Content-Type: application/json" \
--cookie "sessionid=your_session" \
-d '{
"name": "Alice Builder",
"email": "[email protected]",
"description": "Smart contract developer",
"website": "https://alice.dev",
"twitter_handle": "alice_dev"
}'
Request Body
Email address (validated, disposable emails blocked)
Bio/description (max 500 characters)
Website URL (http:// or https://)
Twitter/X username (without @, max 15 chars)
Telegram username (without @)
Validator node version (for validators)
Response
Returns the updated user object with full profile data.
Get User by Address
Retrieve a user’s public profile by their Ethereum address.
curl https://tally.genlayer.com/api/v1/users/by-address/0x1234.../
Ethereum wallet address (case-insensitive)
Response
Returns the same schema as /users/me/ but only includes public information.
Upload Profile Image
Upload or update user’s profile image.
curl -X POST https://tally.genlayer.com/api/v1/users/upload_profile_image/ \
--cookie "sessionid=your_session" \
-F "[email protected]"
Request
Image file (JPEG, PNG, WebP)
- Max size: 10MB
- Recommended: 400x400px
Response
{
"message": "Profile image uploaded successfully",
"profile_image_url": "https://res.cloudinary.com/.../profile.jpg",
"user": { /* full user object */ }
}
Errors
{
"error": "File size must be less than 10MB"
}
Upload Banner Image
Upload or update user’s banner image.
curl -X POST https://tally.genlayer.com/api/v1/users/upload_banner_image/ \
--cookie "sessionid=your_session" \
-F "[email protected]"
Request
Image file (JPEG, PNG, WebP)
- Max size: 10MB
- Recommended: 1500x500px
Response
{
"message": "Banner image uploaded successfully",
"banner_image_url": "https://res.cloudinary.com/.../banner.jpg",
"user": { /* full user object */ }
}
Get User Highlights
Get highlighted contributions for a specific user.
curl "https://tally.genlayer.com/api/v1/users/by-address/0x1234.../highlights/?limit=5&category=builder"
Query Parameters
Number of highlights to return
Filter by category: builder, validator, steward, or global
Response
[
{
"id": 1,
"title": "First Smart Contract",
"description": "Deployed first intelligent contract",
"contribution_type_name": "Smart Contract Deploy",
"contribution_points": 100,
"contribution_date": "2024-01-20T10:00:00Z"
}
]
Start Builder Journey
Award the builder welcome contribution to start the builder journey.
curl -X POST https://tally.genlayer.com/api/v1/users/start_builder_journey/ \
--cookie "sessionid=your_session"
Response
{
"message": "Builder journey started successfully!",
"user": { /* updated user object */ }
}
Complete Builder Journey
Complete the builder journey and become a builder.
Requirements:
- At least one contribution
- Testnet balance > 0
curl -X POST https://tally.genlayer.com/api/v1/users/complete_builder_journey/ \
--cookie "sessionid=your_session"
Response
{
"message": "Builder journey completed successfully!",
"user": { /* updated user object with builder status */ }
}
Errors
{
"error": "You need at least one contribution to complete the builder journey"
}
Start Validator Journey
Join the validator waitlist.
curl -X POST https://tally.genlayer.com/api/v1/users/start_validator_journey/ \
--cookie "sessionid=your_session"
Response
{
"message": "Validator journey started successfully!",
"user": { /* updated user object */ }
}
Check Deployments
Check if user has deployed any smart contracts on GenLayer Studio.
curl https://tally.genlayer.com/api/v1/users/check_deployments/ \
--cookie "sessionid=your_session"
Response
{
"has_deployments": true,
"deployment_count": 3,
"deployments": [
{
"contract_address": "0xabcdef...",
"deployed_at": "2024-01-20T10:00:00Z"
}
]
}
Get Referrals
Get detailed referral information for the authenticated user.
curl https://tally.genlayer.com/api/v1/users/referrals/ \
--cookie "sessionid=your_session"
Response
{
"total_referrals": 5,
"builder_points": 250,
"validator_points": 150,
"referrals": [
{
"id": 100,
"name": "User 1",
"address": "0x...",
"profile_image_url": "https://...",
"total_points": 500,
"builder_contribution_points": 300,
"validator_contribution_points": 200,
"total_contributions": 15,
"is_validator": true,
"is_builder": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Get Referral Points
Quick endpoint for referral points only.
curl https://tally.genlayer.com/api/v1/users/referral_points/ \
--cookie "sessionid=your_session"
Response
{
"builder_points": 250,
"validator_points": 150
}
Search Users
Search for users by name, address, email, or social handles.
curl "https://tally.genlayer.com/api/v1/users/search/?q=alice"
Search query (minimum 2 characters)
Response
Returns up to 10 matching users.
[
{
"id": 42,
"name": "Alice Builder",
"address": "0x1234...",
"profile_image_url": "https://..."
}
]
Get Active Validators
Get list of active validators from the blockchain contract.
curl https://tally.genlayer.com/api/v1/users/validators/
Response
[
"0x1234567890abcdef1234567890abcdef12345678",
"0xabcdef1234567890abcdef1234567890abcdef12"
]
This endpoint queries the GenLayer smart contract directly for real-time validator status.
Error Responses
Validation Errors
{
"email": [
"This email domain does not exist. Please check for typos."
],
"description": [
"Description must be 500 characters or less."
]
}
Authentication Required
{
"detail": "Authentication credentials were not provided."
}