diff --git a/docs/my-website/docs/tutorials/default_team_self_serve.md b/docs/my-website/docs/tutorials/default_team_self_serve.md
new file mode 100644
index 00000000000..601f20fc720
--- /dev/null
+++ b/docs/my-website/docs/tutorials/default_team_self_serve.md
@@ -0,0 +1,77 @@
+import Image from '@theme/IdealImage';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
+
+# Onboard Users for AI Exploration
+
+v1.73.0 introduces the ability to assign new users to Default Teams. This makes it much easier to enable experimentation with LLMs within your company, by allowing users to sign in and create $10 keys for AI exploration.
+
+
+### 1. Create a team
+
+Create a team called `internal exploration` with:
+- `models`: access to specific models (e.g. `gpt-4o`, `claude-3-5-sonnet`)
+- `max budget`: The team max budget will ensure spend for the entire team never exceeds a certain amount.
+- `reset budget`: Set this to monthly. LiteLLM will reset the budget at the start of each month.
+- `team member max budget`: The team member max budget will ensure spend for an individual team member never exceeds a certain amount.
+
+
+
+### 2. Update team member permissions
+
+Click on the team you just created, and update the team member permissions under `Member Permissions`.
+
+This will allow all team members, to create keys.
+
+
+
+
+### 3. Set team as default team
+
+Go to `Internal Users` -> `Default User Settings` and set the default team to the team you just created.
+
+Let's also set the default models to `no-default-models`. This means a user can only create keys within a team.
+
+
+
+### 4. Test it!
+
+Let's create a new user and test it out.
+
+#### a. Create a new user
+
+Create a new user with email `test_default_team_user@xyz.com`.
+
+
+
+Once you click `Create User`, you will get an invitation link, save it for later.
+
+#### b. Verify user is added to the team
+
+Click on the created user, and verify they are added to the team.
+
+We can see the user is added to the team, and has no default models.
+
+
+
+#### c. Login as user
+
+Now use the invitation link from 4a. to login as the user.
+
+
+
+#### d. Verify you can't create keys without specifying a team
+
+You should see a message saying you need to select a team.
+
+
+
+#### e. Verify you can create a key when specifying a team
+
+
+
+Success!
+
+You should now see the created key
+
+
\ No newline at end of file
diff --git a/docs/my-website/img/create_default_team.png b/docs/my-website/img/create_default_team.png
new file mode 100644
index 00000000000..0b3354c9f34
Binary files /dev/null and b/docs/my-website/img/create_default_team.png differ
diff --git a/docs/my-website/img/create_key_no_team.png b/docs/my-website/img/create_key_no_team.png
new file mode 100644
index 00000000000..63df5867455
Binary files /dev/null and b/docs/my-website/img/create_key_no_team.png differ
diff --git a/docs/my-website/img/create_key_with_default_team.png b/docs/my-website/img/create_key_with_default_team.png
new file mode 100644
index 00000000000..d83605f5638
Binary files /dev/null and b/docs/my-website/img/create_key_with_default_team.png differ
diff --git a/docs/my-website/img/create_key_with_default_team_success.png b/docs/my-website/img/create_key_with_default_team_success.png
new file mode 100644
index 00000000000..39cc30cc0c9
Binary files /dev/null and b/docs/my-website/img/create_key_with_default_team_success.png differ
diff --git a/docs/my-website/img/create_user.png b/docs/my-website/img/create_user.png
new file mode 100644
index 00000000000..abb2ff6a9ff
Binary files /dev/null and b/docs/my-website/img/create_user.png differ
diff --git a/docs/my-website/img/default_user_settings_with_default_team.png b/docs/my-website/img/default_user_settings_with_default_team.png
new file mode 100644
index 00000000000..3e19c557322
Binary files /dev/null and b/docs/my-website/img/default_user_settings_with_default_team.png differ
diff --git a/docs/my-website/img/new_user_login.png b/docs/my-website/img/new_user_login.png
new file mode 100644
index 00000000000..497cb47c25d
Binary files /dev/null and b/docs/my-website/img/new_user_login.png differ
diff --git a/docs/my-website/img/team_member_permissions.png b/docs/my-website/img/team_member_permissions.png
new file mode 100644
index 00000000000..3719e14f484
Binary files /dev/null and b/docs/my-website/img/team_member_permissions.png differ
diff --git a/docs/my-website/img/user_info_with_default_team.png b/docs/my-website/img/user_info_with_default_team.png
new file mode 100644
index 00000000000..b442bc9006b
Binary files /dev/null and b/docs/my-website/img/user_info_with_default_team.png differ
diff --git a/docs/my-website/sidebars.js b/docs/my-website/sidebars.js
index cca9d2a7fa1..ece07984d34 100644
--- a/docs/my-website/sidebars.js
+++ b/docs/my-website/sidebars.js
@@ -519,6 +519,7 @@ const sidebars = {
"tutorials/openweb_ui",
"tutorials/openai_codex",
"tutorials/anthropic_file_usage",
+ "tutorials/default_team_self_serve",
"tutorials/msft_sso",
"tutorials/prompt_caching",
"tutorials/tag_management",
diff --git a/ui/litellm-dashboard/src/components/SSOSettings.tsx b/ui/litellm-dashboard/src/components/SSOSettings.tsx
index bbcb9598de8..fe1519c70c0 100644
--- a/ui/litellm-dashboard/src/components/SSOSettings.tsx
+++ b/ui/litellm-dashboard/src/components/SSOSettings.tsx
@@ -69,7 +69,13 @@ const SSOSettings: React.FC = ({ accessToken, possibleUIRoles,
setSaving(true);
try {
- const updatedSettings = await updateInternalUserSettings(accessToken, editedValues);
+ // Convert empty strings to null
+ const processedValues = Object.entries(editedValues).reduce((acc, [key, value]) => {
+ acc[key] = value === "" ? null : value;
+ return acc;
+ }, {} as Record);
+
+ const updatedSettings = await updateInternalUserSettings(accessToken, processedValues);
setSettings({...settings, values: updatedSettings.settings});
setIsEditing(false);
} catch (error) {
@@ -273,6 +279,7 @@ const SSOSettings: React.FC = ({ accessToken, possibleUIRoles,
onChange={(value) => handleTextInputChange(key, value)}
className="mt-2"
>
+
{availableModels.map((model: string) => (