The Anonymous tier is a restricted subscription tier designed for anonymous users who want to try AgentStack without full registration. This tier provides limited functionality to allow users to explore the platform before committing to a full account.
- No registration required - Users can start using AgentStack immediately
- Automatic account creation - Anonymous users are created automatically when using
/api/projects/anonymous - Conversion to full account - Users can convert to the FREE tier at any time by providing name, email, and password
- Strict limits - Significantly lower limits than the FREE tier to encourage conversion
- 1 project maximum - Only one project can be created via
/api/projects/anonymous - Cannot create additional projects - Creating projects via
/api/projectsis blocked for anonymous users - 1 active project - Only one project can be active at a time
- 10 members per project - Maximum of 10 users per project
- 10 total members - Maximum of 10 total members across all projects
- 1 API key - Only one API key is provided at account creation (with prefix
anon_ask_) - Cannot create additional API keys - Creating additional API keys is blocked for anonymous users
- 1 user API key - Only one user API key is allowed
- 1,000 calls per month - Significantly lower than FREE tier (10,000 calls/month)
- 20 triggers maximum - Limited to 20 triggers per project (vs 50 for FREE tier)
- 3 logic pages - Same as FREE tier
- 20 MB JSON storage - Limited to 20 MB (vs 100 MB for FREE tier)
- 0.02 GB total storage - Limited to 0.02 GB (vs 0.1 GB for FREE tier)
- Payments disabled - Anonymous users cannot process payments or work with real money
- Payment amount: $0.00 - No payment processing allowed
- 7 days retention - Same as FREE tier
- 1 export - Same as FREE tier
- Community support - Same as FREE tier
- 99.0% uptime SLA - Same as FREE tier
Anonymous accounts are created automatically when using the /api/projects/anonymous endpoint:
POST /api/projects/anonymous
{
"name": "My Project",
"description": "Project description"
}Response:
{
"success": true,
"project_id": 1234,
"user_id": 5678,
"user_api_key": "anon_ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"project_api_key": "ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"session_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"project": {
"id": 1234,
"name": "My Project"
}
}When anonymous users exceed their limits or want to upgrade, they can convert to a full FREE tier account:
POST /api/auth/convert-anonymous
{
"user_api_key": "anon_ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"name": "John Doe",
"email": "john@example.com",
"password": "secure_password"
}- User data updated -
is_anonymousflag is set tofalse - Email and password added - User can now log in with email/password
- Subscription upgraded - User is automatically moved to FREE tier
- Limits increased - All limits are increased to FREE tier levels:
- Logic Engine calls: 1,000 → 10,000/month
- JSON storage: 20 MB → 100 MB
- Triggers: 20 → 50
- Storage: 0.02 GB → 0.1 GB
- Payments: Enabled
- Can create additional projects
- Can create additional API keys
- User can log in with email/password
- User can create additional projects via
/api/projects - User can create additional API keys
- User can process payments
- All FREE tier limits apply
When an anonymous user exceeds their limits, the API returns a 429 error with conversion information:
{
"error": "Limit exceeded",
"reason": "Anonymous user limit exceeded",
"limit": 1000,
"current": 1001,
"requires_conversion": true,
"conversion_url": "/api/auth/convert-anonymous",
"conversion_message": "Please convert to full account to increase limits. Anonymous users are limited to 1,000 Logic Engine calls per month."
}When an anonymous user attempts a blocked operation, the API returns a 403 error:
Creating additional projects:
{
"error": "Anonymous users cannot create additional projects",
"reason": "Anonymous users are limited to 1 project. Please convert to full account to create more projects.",
"requires_conversion": true,
"conversion_url": "/api/auth/convert-anonymous",
"conversion_message": "Please convert to full account to create additional projects."
}Creating API keys:
{
"error": "Anonymous users cannot create API keys",
"reason": "Anonymous users are limited to 1 API key (provided at account creation). Please convert to full account to create additional API keys.",
"requires_conversion": true,
"conversion_url": "/api/auth/convert-anonymous",
"conversion_message": "Please convert to full account to create additional API keys."
}Processing payments:
{
"error": "Anonymous users cannot process payments",
"reason": "Payment processing is not available for anonymous users. Please convert to full account to use payment features.",
"requires_conversion": true,
"conversion_url": "/api/auth/convert-anonymous",
"conversion_message": "Please convert to full account to process payments."
}| Feature | Anonymous | FREE |
|---|---|---|
| Projects | 1 | 1 |
| Members per project | 10 | 1,000 |
| Total members | 10 | 1,000 |
| API keys | 1 | 2 |
| User API keys | 1 | 1 |
| Logic Engine calls/month | 1,000 | 10,000 |
| Triggers | 20 | 50 |
| Logic pages | 3 | 3 |
| JSON storage | 20 MB | 100 MB |
| Total storage | 0.02 GB | 0.1 GB |
| Payments | ❌ Disabled | ✅ Enabled |
| Analytics retention | 7 days | 7 days |
| Analytics exports | 1 | 1 |
| Support | Community | Community |
| Uptime SLA | 99.0% | 99.0% |
- Save API keys immediately - API keys are shown only once during account creation
- Monitor usage - Keep track of Logic Engine calls and storage usage
- Convert early - Convert to FREE tier before hitting limits to avoid service interruption
- Use conversion endpoint - Use
/api/auth/convert-anonymouswhen ready to upgrade
The system automatically detects anonymous users by checking the is_anonymous flag in user data:
# In subscription_service.get_user_subscription()
user_data = user.data if isinstance(user.data, dict) else {}
is_anonymous = user_data.get('is_anonymous', False)
if is_anonymous:
return {"plan_type": "anonymous", ...}Limits are enforced at multiple levels:
- Logic Engine execution - Checks limits before executing logic
- Project creation - Blocks additional project creation
- API key creation - Blocks additional API key creation
- Payment processing - Blocks payment operations
- Storage operations - Enforces JSON storage limits
- User provides
user_api_key,name,email, andpassword - System validates the anonymous API key
- System checks if email is already registered
- System updates user data: sets
is_anonymous: False, adds email and password hash - System creates/updates subscription record with
plan_type: "free" - System creates session for converted user
- User can now use all FREE tier features
- Subscription Tiers - Complete list of all subscription tiers
- API topic index — REST topic index
- Authentication — API keys and login