Skip to content

Organizations

View as Markdown

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.

Go to Daytona Dashboard ↗ to manage your organizations, or use the API to manage them programmatically.

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.

FeaturePersonal organizationCollaborative organization
CreationAutomatic on signupManually by a user
MembersSingle user onlyMultiple users (invite-based)
Access ControlNo roles or permissionsRoles with granular resource-based assignments
BillingTied to individual userShared across team members
Use CasePersonal testing, small projectsCompany/team development and production
Quota ScopePer userShared across all members
DeletableNoYes (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.

Daytona provides options to create organizations in Daytona Dashboard ↗ or programmatically using the API.

  1. Go to Daytona Dashboard ↗
  2. Expand the dropdown at the top-left corner of the sidebar to view your organizations
  3. Click the Create Organization button
  4. Enter the organization name
  5. Select a region
  6. Click Create
Terminal window
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"
}'

List all organizations the authenticated user belongs to.

Terminal window
curl 'https://app.daytona.io/api/organizations' \
--header 'Authorization: Bearer YOUR_API_KEY'

Get an organization by ID.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID' \
--header 'Authorization: Bearer YOUR_API_KEY'

Leave an organization.

  1. Go to Daytona Dashboard ↗
  2. Expand the dropdown at the top-left corner of the sidebar to view your organizations
  3. Select the organization you want to leave
  4. Click Settings in the sidebar
  5. Click Leave Organization
  6. Confirm by clicking the Leave button
Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/leave' \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY'

Delete an organization.

  1. Go to Daytona Dashboard ↗
  2. Expand the dropdown at the top-left corner of the sidebar to view your organizations
  3. Select the organization you want to delete
  4. Click Settings in the sidebar
  5. Click Delete Organization
  6. Confirm the deletion by typing the organization name and clicking the Delete button
Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID' \
--request DELETE \
--header 'Authorization: Bearer YOUR_API_KEY'

Users within an organization can have one of two different roles:

  1. Owners have full administrative access to the organization and its resources. Organization owners can perform administrative actions.
  2. Members have no administrative access to the organization, while their access to organization resources is based on Assignments.

The list of available role assignments includes:

AssignmentDescription
Viewer (required)Grants read access to all resources in the organization
DeveloperGrants the ability to create sandboxes and keys in the organization
Sandboxes AdminGrants admin access to sandboxes in the organization
Snapshots AdminGrants admin access to snapshots in the organization
Registries AdminGrants admin access to registries in the organization
Volumes AdminGrants admin access to volumes in the organization
Super AdminGrants full access to all resources in the organization
AuditorGrants access to audit logs in the organization
Infrastructure AdminGrants admin access to infrastructure in the organization

Create a new role in an organization.

Terminal window
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"]
}'

List all roles in an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles' \
--header 'Authorization: Bearer YOUR_API_KEY'

Update a role in an organization.

Terminal window
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"]
}'

Delete a role in an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/roles/ROLE_ID' \
--request DELETE \
--header 'Authorization: Bearer YOUR_API_KEY'

Daytona provides methods to manage members in an organization.

List all members in an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/users' \
--header 'Authorization: Bearer YOUR_API_KEY'

Invite a new user to an organization.

  1. Go to Daytona Dashboard ↗
  2. Click the Invite Member button
  3. Enter the email address of the user you want to invite
  4. Select a role for the new user. If you select the Member role, define their assignments
Terminal window
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"]
}'

Remove a user from an organization.

  1. Go to Daytona Dashboard ↗
  2. Click the Remove button next to the user you want to remove
  3. Confirm the removal by clicking the Remove button
Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/users/USER_ID' \
--request DELETE \
--header 'Authorization: Bearer YOUR_API_KEY'

Update the access of a member in an organization.

  1. Go to Daytona Dashboard ↗
  2. Click the three-dot menu on the member row
  3. Click Change Role or Manage Assignments
  4. Update the role or assignments and click Save
Terminal window
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"]
}'

Manage invitations in an organization.

  1. Go to Daytona Dashboard ↗
  2. Expand the dropdown at the bottom of the sidebar to view pending invitations to join other organizations.
Terminal window
curl 'https://app.daytona.io/api/organizations/invitations' \
--header 'Authorization: Bearer YOUR_API_KEY'

Get the number of invitations in an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/invitations/count' \
--header 'Authorization: Bearer YOUR_API_KEY'

Accept a pending organization invitation.

  1. Go to Daytona Dashboard ↗
  2. Click your profile at the bottom-left of the sidebar
  3. Click Invitations
  4. Click the checkmark button on the invitation row
Terminal window
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.

Decline a pending organization invitation.

  1. Go to Daytona Dashboard ↗
  2. Click your profile at the bottom-left of the sidebar
  3. Click Invitations
  4. Click the X button on the invitation row
  5. Confirm by clicking the Decline button
Terminal window
curl 'https://app.daytona.io/api/organizations/invitations/INVITATION_ID/decline' \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY'

List pending invitations for an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations' \
--header 'Authorization: Bearer YOUR_API_KEY'

Update an invitation for an organization.

  1. Go to Daytona Dashboard ↗
  2. Scroll to the Invitations table
  3. Click the three-dot menu on the invitation row
  4. Click Edit
  5. Update the role or assignments and click Update
Terminal window
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"
}'

Cancel an invitation for an organization.

  1. Go to Daytona Dashboard ↗
  2. Scroll to the Invitations table
  3. Click the three-dot menu on the invitation row
  4. Click Cancel
  5. Confirm by clicking the Confirm button
Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/invitations/INVITATION_ID/cancel' \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY'

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 the default region.

Terminal window
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"
}'

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.

Daytona provides methods to perform advanced operations on an organization.

Get the usage overview for an organization.

Terminal window
curl 'https://app.daytona.io/api/organizations/ORGANIZATION_ID/usage' \
--header 'Authorization: Bearer YOUR_API_KEY'

Update sandbox default limited network egress

Section titled “Update sandbox default limited network egress”

Update the sandbox default limited network egress for an organization.

Terminal window
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
}'

Update the experimental configuration for an organization.

Terminal window
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"
}
}
}'