Meteor AI
Organization

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 Tokens

Key Entities

EntityDescriptionPurpose
OrganizationOrganization entityTop-level isolation unit containing projects, members, and financial info
ProjectProjectResource isolation unit linked to members, quotas, and API Keys
ProjectMemberProject memberProject-level member role and permissions
ProjectQuotaProject quotaDefines request limits, token limits, and other constraints
ProjectQuotaUsageQuota usageTracks actual quota consumption
OrganizationWalletWalletOrganization-level account balance and financial management
OrganizationWalletRecordWallet recordComplete financial audit log
ProjectTemplateProject templatePre-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 permissions

Project-Level Roles

Owner
├── Modify project settings
├── Manage project members
├── Configure quotas
└── Delete project

Member
├── View project
├── Use project API Keys
└── View project quota usage

Fine-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.csv

CSV Format Example (users.csv):

email,name,role
alice@example.com,Alice Johnson,member
bob@example.com,Bob Smith,member
carol@example.com,Carol Davis,member

Limits:

  • 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 template

Configuring 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:

TemplateDescriptionUse Case
StarterEntry-level configurationIndividual developers, testing
ProfessionalProfessional configurationSMEs, production environments
EnterpriseEnterprise configurationLarge enterprises, high-concurrency scenarios
CustomCustom configurationCustom 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 adjust

2. 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 departure

3. 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 limits

4. 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 costs

FAQ

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.

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.

Learn More