Skip to main content

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

{
  "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

name
string
Display name
email
string
Email address (validated, disposable emails blocked)
description
string
Bio/description (max 500 characters)
website
string
Website URL (http:// or https://)
twitter_handle
string
Twitter/X username (without @, max 15 chars)
discord_handle
string
Discord username
telegram_handle
string
Telegram username (without @)
linkedin_handle
string
LinkedIn profile slug
github_username
string
GitHub username
node_version
string
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
curl https://tally.genlayer.com/api/v1/users/by-address/0x1234.../
address
string
required
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
curl -X POST https://tally.genlayer.com/api/v1/users/upload_profile_image/ \
  --cookie "sessionid=your_session" \
  -F "[email protected]"

Request

image
file
required
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
string
Error message
{
  "error": "File size must be less than 10MB"
}

Upload Banner Image

Upload or update user’s banner image.
cURL
curl -X POST https://tally.genlayer.com/api/v1/users/upload_banner_image/ \
  --cookie "sessionid=your_session" \
  -F "[email protected]"

Request

image
file
required
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
curl "https://tally.genlayer.com/api/v1/users/by-address/0x1234.../highlights/?limit=5&category=builder"

Query Parameters

limit
integer
default:"5"
Number of highlights to return
category
string
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
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
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
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
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
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
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
curl "https://tally.genlayer.com/api/v1/users/search/?q=alice"
q
string
required
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
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."
}

Build docs developers (and LLMs) love