Organization Management
Complete organization management system guide including projects, members, quotas, and financial management
Organization Management
Meteor AI provides a comprehensive enterprise-grade organization management system with multi-level structure, fine-grained permission control, flexible quota management, and complete financial tracking.
An organization is the top-level isolation unit in Meteor AI, used to manage users, projects, API Keys, and resource quotas.
Core Concepts
Organization Structure
Meteor AI employs a multi-level organization structure:
Organization
├── Projects
│ ├── Members
│ ├── Quotas
│ └── API Keys
├── Members
├── Wallet
└── Invite TokensKey Entities
| Entity | Description | Purpose |
|---|---|---|
| Organization | Organization entity | Top-level isolation unit containing projects, members, and financial info |
| Project | Project | Resource isolation unit linked to members, quotas, and API Keys |
| ProjectMember | Project member | Project-level member role and permissions |
| ProjectQuota | Project quota | Defines request limits, token limits, and other constraints |
| ProjectQuotaUsage | Quota usage | Tracks actual quota consumption |
| OrganizationWallet | Wallet | Organization-level account balance and financial management |
| OrganizationWalletRecord | Wallet record | Complete financial audit log |
| ProjectTemplate | Project template | Pre-configured project template for rapid creation |
Permission System
Organization-Level Roles
Admin
├── Create/delete projects
├── Manage members
├── Configure invite tokens
├── Manage organization wallet
└── Modify organization settings
Member
├── View projects
├── Use API Keys
└── View member information
None
└── No permissionsProject-Level Roles
Owner
├── Modify project settings
├── Manage project members
├── Configure quotas
└── Delete project
Member
├── View project
├── Use project API Keys
└── View project quota usageFine-Grained Permissions
In addition to basic roles, fine-grained permissions are supported:
- Project Management: Create, modify, delete projects
- Member Management: Add, remove, modify member roles
- Financial: View balance, recharge, view transaction records
- Configuration: Modify project quotas, invite token settings
Project Quota Management
Quota Dimensions
Project quotas support multi-dimensional limits to ensure rational resource usage:
1. Daily Limit (resets daily)
{
"dailyRequestLimit": 10000, // Daily request limit
"dailyTokenLimit": 1000000 // Daily token limit
}2. Monthly Limit (resets monthly)
{
"monthlyRequestLimit": 100000, // Monthly request limit
"monthlyTokenLimit": 10000000 // Monthly token limit
}3. Rate Limit (real-time)
{
"requestsPerMinuteLimit": 100 // Requests per minute limit
}Quota Check Flow
API Request
↓
[Check Daily Limit]
├─ Check request count
└─ Check token count
↓
[Check Monthly Limit]
├─ Check request count
└─ Check token count
↓
[Check RPM Limit]
└─ Check requests per minute
↓
[Allow/Reject Request]
↓
[Update Usage Statistics]Quota Reset Rules
- Daily Limit: Resets at 00:00 UTC daily
- Monthly Limit: Resets at 00:00 UTC on the 1st of each month (customizable to 1-28)
- RPM Limit: Rolls over every minute
Financial Management
Organization Wallet System
Each organization has an independent wallet system for managing account balance and consumption:
{
"organizationId": "uuid",
"balance": 1000.00, // Available balance
"frozenAmount": 50.00, // Frozen amount
"currency": "USD",
"isActive": true
}Transaction Record Types
{
"type": "Recharge",
"amount": 100.00,
"previousBalance": 900.00,
"currentBalance": 1000.00,
"description": "User recharge",
"createdAt": "2024-01-15T10:30:00Z"
}{
"type": "Consume",
"amount": 10.50,
"previousBalance": 1000.00,
"currentBalance": 989.50,
"requestLogId": "uuid",
"description": "API call consumption",
"createdAt": "2024-01-15T10:35:00Z"
}{
"type": "Refund",
"amount": 5.00,
"previousBalance": 989.50,
"currentBalance": 994.50,
"description": "Error call refund",
"createdAt": "2024-01-15T10:40:00Z"
}Balance Alert System
Multiple alert methods are supported:
Email Alert
{
"emailAlertEnabled": true,
"maxDailyAlerts": 3, // Max 3 alert emails daily
"lastAlertTime": "2024-01-15T10:00:00Z"
}Webhook Alert
{
"webhookUrl": "https://example.com/alert",
"customHeaders": {
"X-Alert-Token": "token123"
},
"messageTemplate": "Balance is below {threshold} USD",
"thresholds": [10, 5, 3, 1] // Multiple alert thresholds
}Alerts trigger when:
- Balance below $10
- Balance below $5
- Balance below $3
- Balance below $1
Member Management
Inviting Members to Organization
Method 1: Using Invite Token
# Generate invite link
POST /api/organization/invite-tokens
{
"description": "New employee invitation",
"expiresAt": "2024-02-15T23:59:59Z",
"maxUsageCount": 10
}
# Response
{
"id": "token_123",
"token": "invite_abcdef123456...",
"inviteUrl": "https://app.meteor.ai/join?token=invite_abcdef123456...",
"maxUsageCount": 10,
"usageCount": 0,
"expiresAt": "2024-02-15T23:59:59Z"
}Users automatically join the organization when registering via the invite link.
Method 2: Bulk CSV Invitation
Upload CSV file for bulk invitations:
POST /api/organization/bulk-invite
Content-Type: multipart/form-data
file: users.csvCSV Format Example (users.csv):
email,name,role
alice@example.com,Alice Johnson,member
bob@example.com,Bob Smith,member
carol@example.com,Carol Davis,memberLimits:
- Max 500 rows per file
- Supported fields:
email,name,role - Automatic email format validation and deduplication
- Success/failure report after sending invitations
Response Format:
{
"id": "bulk_import_123",
"status": "Completed",
"totalCount": 3,
"successCount": 3,
"failureCount": 0,
"records": [
{
"email": "alice@example.com",
"name": "Alice Johnson",
"status": "Success",
"inviteUrl": "https://app.meteor.ai/join?token=..."
}
]
}Managing Members
GET /api/organization/members?page=1&size=20
# Response
{
"data": [
{
"userId": "uuid",
"email": "user@example.com",
"name": "User Name",
"role": "Admin",
"joinedAt": "2024-01-01T00:00:00Z",
"status": "Active"
}
],
"total": 50,
"page": 1,
"size": 20
}PUT /api/organization/members/{userId}/role
{
"role": "Member" # Change role from Admin to Member
}
# Response
{
"data": {
"userId": "uuid",
"role": "Member"
},
"code": 200,
"error": null
}DELETE /api/organization/members/{userId}
# Response
{
"data": {
"message": "Member removed"
},
"code": 200,
"error": null
}Project Management
Creating a Project
POST /api/projects
{
"name": "My Project",
"description": "A sample project",
"organizationId": "org_123"
}
# Response
{
"data": {
"id": "proj_123",
"name": "My Project",
"description": "A sample project",
"organizationId": "org_123",
"status": "Active",
"createdAt": "2024-01-15T10:00:00Z"
},
"code": 200,
"error": null
}POST /api/projects/from-template
{
"templateId": "template_123",
"name": "Project from Template",
"organizationId": "org_123"
}
# The project will automatically include:
# - Quota configuration from template
# - Pre-configured API Keys
# - Rate limit configuration from templateConfiguring Project Quota
POST /api/projects/{projectId}/quota
{
"dailyRequestLimit": 10000,
"dailyTokenLimit": 1000000,
"monthlyRequestLimit": 100000,
"monthlyTokenLimit": 10000000,
"requestsPerMinuteLimit": 100,
"enforceQuota": true,
"customResetDay": 1 # Monthly reset day (1-28)
}
# Response
{
"data": {
"projectId": "proj_123",
"dailyRequestLimit": 10000,
"dailyTokenLimit": 1000000,
"monthlyRequestLimit": 100000,
"monthlyTokenLimit": 10000000,
"requestsPerMinuteLimit": 100,
"enforceQuota": true,
"customResetDay": 1,
"createdAt": "2024-01-15T10:00:00Z"
},
"code": 200,
"error": null
}Querying Quota Usage
GET /api/projects/{projectId}/quota-usage?period=month
# Response
{
"data": {
"projectId": "proj_123",
"period": "month",
"dailyUsage": {
"requestCount": 5000,
"tokenCount": 500000,
"date": "2024-01-15"
},
"monthlyUsage": {
"requestCount": 50000,
"tokenCount": 5000000,
"resetDay": 1
},
"quotaLimitRemaining": {
"dailyRequests": 5000,
"dailyTokens": 500000,
"monthlyRequests": 50000,
"monthlyTokens": 5000000
}
},
"code": 200,
"error": null
}Project Templates
Built-in Templates
Meteor AI provides several pre-built project templates to quickly create projects with common configurations:
| Template | Description | Use Case |
|---|---|---|
| Starter | Entry-level configuration | Individual developers, testing |
| Professional | Professional configuration | SMEs, production environments |
| Enterprise | Enterprise configuration | Large enterprises, high-concurrency scenarios |
| Custom | Custom configuration | Custom configurations |
Viewing Available Templates
GET /api/project-templates?isPublic=true
# Response
{
"data": [
{
"id": "template_starter",
"name": "Starter",
"description": "Entry-level project configuration",
"category": "Starter",
"isSystem": true,
"isPublic": true,
"usageCount": 1250,
"config": {
"quota": {
"dailyRequestLimit": 10000,
"monthlyRequestLimit": 100000,
"dailyTokenLimit": 1000000,
"monthlyTokenLimit": 10000000
},
"rateLimit": {
"requestsPerMinuteLimit": 100
}
}
}
],
"total": 4
}Creating Custom Template
POST /api/project-templates
{
"name": "My Company Template",
"description": "Company standard configuration",
"category": "Custom",
"tags": ["company", "standard"],
"isPublic": false,
"icon": "template_icon_url",
"config": {
"quota": {
"dailyRequestLimit": 50000,
"monthlyRequestLimit": 500000,
"dailyTokenLimit": 5000000,
"monthlyTokenLimit": 50000000
},
"rateLimit": {
"requestsPerMinuteLimit": 500
}
}
}Best Practices
1. Quota Planning
Plan quotas based on:
- Daily usage: Estimate based on historical data
- Peak usage: Set monthly quota to accommodate peaks
- Growth headroom: Reserve 20-30% for growth
- Monitoring: Regularly check usage and adjust2. Member Permission Management
Principle of least privilege:
- Assign minimum necessary permissions by default
- Limit Admin permissions to essential personnel
- Regularly audit member permissions
- Remove permissions immediately upon employee departure3. Financial Management
Recommended measures:
- Regularly check wallet balance
- Enable balance alerts for timely recharge
- Use separate projects to isolate costs
- Regularly audit transaction records
- Set monthly budget limits4. Project Isolation
Data isolation strategy:
- Use different projects for different departments
- Separate testing and production environments
- Dedicated project for production
- Use project quotas to control costsFAQ
Q: How do I switch organizations?
A: Use the organization selector in the left sidebar. All operations will be in the context of the new organization.
Q: What if my invite link expires?
A: Organization administrators can regenerate the invite link or manually add members.
Q: What happens when quota is exceeded?
A: New API requests will be rejected with a 429 Too Many Requests error.
Q: How can I export transaction records?
A: On the wallet page, click "Export" to download transaction records in CSV format.
Q: Can projects be transferred to other organizations?
A: Currently, cross-organization project transfers are not supported. Contact support for migration assistance.