Teams
Teams are the organizational boundary in Catalyzed. All resources (datasets, tables, files, pipelines) belong to a team, and team membership determines access.
Key Concepts
Section titled “Key Concepts”- All resources are team-scoped - When creating any resource, you specify a
teamId - API tokens are team-scoped - Each token can only access resources within its team
- Users can belong to multiple teams - Switch between teams in the app
- Billing is per-team - Credits and usage are tracked at the team level
Team Roles
Section titled “Team Roles”Teams have two roles:
| Role | Permissions |
|---|---|
| Admin | Full access: manage members, API tokens, billing, and all resources |
| Member | Create and manage datasets, tables, files, and pipelines |
Role Capabilities
Section titled “Role Capabilities”| Capability | Admin | Member |
|---|---|---|
| Create/edit/delete datasets | Yes | Yes |
| Create/edit/delete tables | Yes | Yes |
| Upload/process files | Yes | Yes |
| Create/run pipelines | Yes | Yes |
| Invite members (as member role) | Yes | Yes |
| Invite members (as admin role) | Yes | No |
| Remove other team members | Yes | No |
| Remove self from team | Yes | Yes |
| Manage API tokens | Yes | No |
| View/manage billing | Yes | No |
| Change team settings | Yes | No |
Working with Teams in the API
Section titled “Working with Teams in the API”Get Your Teams
Section titled “Get Your Teams”List all teams you belong to:
List your teams
curl https://api.catalyzed.ai/teams \ -H "Authorization: Bearer $API_TOKEN"const response = await fetch("https://api.catalyzed.ai/teams", { headers: { Authorization: `Bearer ${apiToken}` },});const { teams } = await response.json();response = requests.get( "https://api.catalyzed.ai/teams", headers={"Authorization": f"Bearer {api_token}"})teams = response.json()["teams"]Get Team Details
Section titled “Get Team Details”Get a specific team
curl https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk \ -H "Authorization: Bearer $API_TOKEN"const response = await fetch("https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk", { headers: { Authorization: `Bearer ${apiToken}` },});const team = await response.json();response = requests.get( "https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk", headers={"Authorization": f"Bearer {api_token}"})team = response.json()Response:
{ "teamId": "ZkoDMyjZZsXo4VAO_nJLk", "name": "Acme Corp", "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-06-20T14:45:00Z"}Update Team Name
Section titled “Update Team Name”Update team name
curl -X PUT https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name": "Acme Corporation"}'const response = await fetch("https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk", { method: "PUT", headers: { Authorization: `Bearer ${apiToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ name: "Acme Corporation" }),});response = requests.put( "https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk", headers={"Authorization": f"Bearer {api_token}"}, json={"name": "Acme Corporation"})Team Members
Section titled “Team Members”List Members
Section titled “List Members”List team members
curl "https://api.catalyzed.ai/team-users?teamIds=ZkoDMyjZZsXo4VAO_nJLk" \ -H "Authorization: Bearer $API_TOKEN"const response = await fetch( "https://api.catalyzed.ai/team-users?teamIds=ZkoDMyjZZsXo4VAO_nJLk", { headers: { Authorization: `Bearer ${apiToken}` } });const { teamUsers } = await response.json();response = requests.get( "https://api.catalyzed.ai/team-users", params={"teamIds": "ZkoDMyjZZsXo4VAO_nJLk"}, headers={"Authorization": f"Bearer {api_token}"})team_users = response.json()["teamUsers"]Response:
{ "teamUsers": [ { "teamUserId": "_XCbBISoxk-YQsdUuga_J", "teamId": "ZkoDMyjZZsXo4VAO_nJLk", "userId": "jN7sm6VXUbKa3Sy_07-Fz", "role": "admin", "isDefault": true, "createdAt": "2024-01-15T10:30:00Z", "updatedAt": "2024-01-15T10:30:00Z" } ], "total": 1, "page": 1, "pageSize": 20}Update Member Role
Section titled “Update Member Role”Change a member’s role (Admin only):
Update member role
curl -X PUT https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J \ -H "Authorization: Bearer $API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"role": "admin"}'await fetch("https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J", { method: "PUT", headers: { Authorization: `Bearer ${apiToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ role: "admin" }),});requests.put( "https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J", headers={"Authorization": f"Bearer {api_token}"}, json={"role": "admin"})Remove a Member
Section titled “Remove a Member”Remove team member
curl -X DELETE https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J \ -H "Authorization: Bearer $API_TOKEN"await fetch("https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J", { method: "DELETE", headers: { Authorization: `Bearer ${apiToken}` },});requests.delete( "https://api.catalyzed.ai/team-users/_XCbBISoxk-YQsdUuga_J", headers={"Authorization": f"Bearer {api_token}"})Team Settings in the App
Section titled “Team Settings in the App”The Catalyzed app provides a Team Settings page with four sections:
General
Section titled “General”- View and edit team name
- View team ID (for API use)
- View creation and last update timestamps
Members
Section titled “Members”- View all team members
- Filter by role
- Change member roles (Admin only)
- Remove members (Admin only)
- View resource usage over time
- Filter by operation type
- See which users performed which operations
Billing
Section titled “Billing”- View credit balance
- See total usage
- View credit history (purchases, usage deductions)
Billing and Credits
Section titled “Billing and Credits”Teams operate on a credit-based system. Credits are consumed by:
- Query execution
- Data storage
- Pipeline runs
- File processing
Check Credit Balance
Section titled “Check Credit Balance”Get credit balance
curl "https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk/credits/balance" \ -H "Authorization: Bearer $API_TOKEN"const response = await fetch( "https://api.catalyzed.ai/teams/ZkoDMyjZZsXo4VAO_nJLk/credits/balance", { headers: { Authorization: `Bearer ${apiToken}` } });const credits = await response.json();response = requests.get( f"https://api.catalyzed.ai/teams/{team_id}/credits/balance", headers={"Authorization": f"Bearer {api_token}"})credits = response.json()Response:
{ "teamId": "ZkoDMyjZZsXo4VAO_nJLk", "balanceNanodollars": 5000000000, "balanceUsd": 5.00, "totalCreditsNanodollars": 10000000000, "totalCreditsUsd": 10.00, "totalUsageCostNanodollars": 5000000000, "totalUsageCostUsd": 5.00, "hasSufficientFunds": true}See the Billing & Credits guide for more details.