Organizations
Daytona provides organizations as a way to group resources and enable collaboration. Users can work individually in their personal organization or together in a collaborative organization.
Navigate to Daytona Dashboard ↗ to manage your organizations, or use the API to manage them programmatically.
Personal vs Collaborative
Every Daytona user starts with a personal organization, ideal for solo use and experimentation. Collaborative organizations are created manually and designed for company-wide collaboration with shared access and controls.
| Feature | Personal organization | Collaborative organization |
|---|---|---|
| Creation | Automatic on signup | Manually by a user |
| Members | Single user only | Multiple users (invite-based) |
| Access Control | No roles or permissions | Roles with granular resource-based assignments |
| Billing | Tied to individual user | Shared across team members |
| Use Case | Personal testing, small projects | Company/team development and production |
| Quota Scope | Per user | Shared across all members |
| Deletable | No | Yes (by Owner) |
Users can switch between their personal and collaborative organizations by using the dropdown in the Daytona Dashboard ↗ sidebar. Each organization has its own sandboxes, API keys, and resource quotas.
Create organization
Daytona provides options to create organizations in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Expand the dropdown at the top-left corner of the sidebar to view your organizations
- Click the Create Organization button
- Enter the organization name
- Select a region
- Click Create to create the organization
curl 'https://app.daytona.io/api/organizations' \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "name": "My Organization", "defaultRegionId": "us"}'For more information, see the API reference:
List organizations
Daytona provides methods to list all organizations the authenticated user belongs to.
curl 'https://app.daytona.io/api/organizations' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Get by ID
Daytona provides a method to get an organization by ID.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Leave organization
Daytona provides options to leave an organization in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Expand the dropdown at the top-left corner of the sidebar to view your organizations
- Select the organization you want to leave
- Click Settings in the sidebar
- Click Leave Organization
- Confirm by clicking the Leave button
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/leave' \ --request POST \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Delete organization
Daytona provides options to delete an organization in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Expand the dropdown at the top-left corner of the sidebar to view your organizations
- Select the organization you want to delete
- Click Settings in the sidebar
- Click Delete Organization
- Confirm the deletion by typing the organization name and clicking the Delete button
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID' \ --request DELETE \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Roles
Users within an organization can have one of two different roles:
- Owners have full administrative access to the organization and its resources. Organization owners can perform administrative actions.
- Members have no administrative access to the organization, while their access to organization resources is based on Assignments.
Role assignments
The list of available role assignments includes:
| Assignment | Description |
|---|---|
Viewer (required) | Grants read access to all resources in the organization |
Developer | Grants the ability to create sandboxes and keys in the organization |
Sandboxes Admin | Grants admin access to sandboxes in the organization |
Snapshots Admin | Grants admin access to snapshots in the organization |
Registries Admin | Grants admin access to registries in the organization |
Volumes Admin | Grants admin access to volumes in the organization |
Super Admin | Grants full access to all resources in the organization |
Auditor | Grants access to audit logs in the organization |
Infrastructure Admin | Grants admin access to infrastructure in the organization |
Create role
Daytona provides a method to create a new role in an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles' \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "name": "Maintainer", "description": "Can manage all resources", "permissions": ["write:sandboxes", "delete:sandboxes"]}'For more information, see the API reference:
List roles
Daytona provides a method to list all roles in an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Update role
Daytona provides a method to update a role in an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles/ROLE_ID' \ --request PUT \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "name": "Maintainer", "description": "Can manage all resources", "permissions": ["write:sandboxes", "delete:sandboxes"]}'For more information, see the API reference:
Delete role
Daytona provides a method to delete a role in an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles/ROLE_ID' \ --request DELETE \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Members
Daytona provides methods to manage members in an organization.
List members
Daytona provides a method to list all members in an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/users' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Invite members
Daytona provides a method to invite a new user to an organization.
- Navigate to Daytona Dashboard ↗
- Click the Invite Member button
- Enter the email address of the user you want to invite
- Select a role for the new user. If you select the
Memberrole, define their assignments
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations' \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "email": "mail@example.com", "role": "member", "assignedRoleIds": ["00000000-0000-0000-0000-000000000001"]}'For more information, see the API reference:
Remove members
Daytona provides a method to remove a user from an organization.
- Navigate to Daytona Dashboard ↗
- Click the Remove button next to the user you want to remove
- Confirm the removal by clicking the Remove button
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/users/USER_ID' \ --request DELETE \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Update access
Daytona provides options to update the access of a member in an organization in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Click the three-dot menu on the member row
- Click Change Role or Manage Assignments
- Update the role or assignments and click Save
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/users/USER_ID/access' \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "role": "member", "assignedRoleIds": ["00000000-0000-0000-0000-000000000001"]}'For more information, see the API reference:
Invitations
Daytona provides methods to manage invitations in an organization.
- Navigate to Daytona Dashboard ↗
- Expand the dropdown at the bottom of the sidebar to view pending invitations to join other organizations.
curl 'https://app.daytona.io/api/organizations/invitations' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Get invitations count
Daytona provides a method to get the number of invitations in an organization.
curl 'https://app.daytona.io/api/organizations/invitations/count' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Accept invitation
Daytona provides options to accept a pending organization invitation in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Click your profile at the bottom-left of the sidebar
- Click Invitations
- Click the checkmark button on the invitation row
curl 'https://app.daytona.io/api/organizations/invitations/INVITATION_ID/accept' \ --request POST \ --header 'Authorization: Bearer YOUR_API_KEY'Once a user accepts an invitation to join an organization, they get access to resource quotas assigned to that organization and they may proceed by issuing a new API key and creating sandboxes.
For more information, see the API reference:
Decline invitation
Daytona provides options to decline a pending organization invitation in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Click your profile at the bottom-left of the sidebar
- Click Invitations
- Click the X button on the invitation row
- Confirm by clicking the Decline button
curl 'https://app.daytona.io/api/organizations/invitations/INVITATION_ID/decline' \ --request POST \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
List pending
Daytona provides a method to list pending invitations for an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Update invitation
Daytona provides options to update an invitation for an organization in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Scroll to the Invitations table
- Click the three-dot menu on the invitation row
- Click Edit
- Update the role or assignments and click Update
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations/INVITATION_ID' \ --request PUT \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "role": "member", "assignedRoleIds": ["00000000-0000-0000-0000-000000000001"], "expiresAt": "2030-01-01T00:00:00.000Z"}'For more information, see the API reference:
Cancel invitation
Daytona provides options to cancel an invitation for an organization in Daytona Dashboard ↗ or programmatically using the API.
- Navigate to Daytona Dashboard ↗
- Scroll to the Invitations table
- Click the three-dot menu on the invitation row
- Click Cancel
- Confirm by clicking the Confirm button
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations/INVITATION_ID/cancel' \ --request POST \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Regions
Each organization has a default region that determines where sandboxes are created when no specific target is provided. Regions represent geographic or logical groupings of compute infrastructure. Organizations can update their default region, manage per-region resource quotas, and query region quota information for individual sandboxes.
For more information on available region types, see the Regions guide.
Set default region
Daytona provides options to set the default region programmatically using the API.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/default-region' \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "defaultRegionId": "us"}'For more information, see the API reference:
Organization settings
The settings page in the Daytona Dashboard ↗ allows you to view the organization ID and name, and optionally delete the organization if you don’t need it anymore. This action is irreversible, so please proceed with caution. Personal organizations are there by default and cannot be deleted.
Advanced operations
Daytona provides methods to perform advanced operations on an organization.
Usage overview
Daytona provides a method to get the usage overview for an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/usage' \ --header 'Authorization: Bearer YOUR_API_KEY'For more information, see the API reference:
Update sandbox default limited network egress
Daytona provides a method to update the sandbox default limited network egress for an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/sandbox-default-limited-network-egress' \ --request POST \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "sandboxDefaultLimitedNetworkEgress": true}'For more information, see the API reference:
Update experimental configuration
Daytona provides a method to update the experimental configuration for an organization.
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/experimental-config' \ --request PUT \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer YOUR_API_KEY' \ --data '{ "otel": { "endpoint": "http://otel-collector:4317", "headers": { "api-key": "XXX" } }}'For more information, see the API reference: