litellm/terraform/provider/docs/resources/user.md
Marcus Greer 4e44b382fd
fix(terraform): stop sending blocked on litellm_user updates (#45410)
* fix(terraform): stop sending blocked on litellm_user updates

/user/update writes blocked into the user table upsert, but blocked only
exists as a column on keys, so every litellm_user update failed with a 400
from Prisma. Updates no longer send it. Create sends it only when set to
true, since /user/new applies it to the auto-created key

blocked only applies at creation; litellm_key_block covers changes after that

* fix(terraform): always send blocked on litellm_user create

/user/new fills an omitted blocked from default_internal_user_params, so
leaving it out on create let a proxy-side blocked=true default block the
auto-created key. Create sends the configured value again, including
false, while updates still never send it

* chore(terraform): drop comment on litellm_user create blocked

* fix(terraform): keep litellm_user blocked undeprecated

Create sends blocked again, so it still controls the auto-created key.
Whether to deprecate it in favor of litellm_key_block is left to the
provider maintainers; the docs describe it as creation-only instead
2026-10-10 13:32:54 -07:00

2.6 KiB

litellm_user Resource

Manages an internal user on the LiteLLM proxy. Internal users can log into the Admin UI, own API keys, and belong to teams

Example Usage

resource "litellm_user" "alice" {
  user_email      = "alice@example.com"
  user_alias      = "Alice"
  user_role       = "internal_user"
  max_budget      = 100.0
  budget_duration = "30d"
  tpm_limit       = 100000
  rpm_limit       = 1000
  teams           = [litellm_team.engineering.id]
  models          = ["gpt-4o", "claude-sonnet-4-5"]

  metadata = {
    department = "engineering"
  }

  model_max_budget = jsonencode({
    "gpt-4o" = {
      max_budget = 25.0
    }
  })
}

Argument Reference

  • user_id (Optional, Forces new resource) - Unique ID for the user. Generated by the server if not provided
  • user_email (Optional) - Email address of the user
  • user_alias (Optional) - Descriptive name for the user
  • user_role (Optional) - Role of the user. One of proxy_admin, proxy_admin_viewer, internal_user, internal_user_viewer
  • teams (Optional) - List of team IDs the user belongs to
  • models (Optional) - Models the user is allowed to call
  • max_budget (Optional) - Maximum budget in USD for the user
  • budget_duration (Optional) - Budget reset period, e.g. 30s, 30m, 30d
  • tpm_limit (Optional) - Tokens per minute limit
  • rpm_limit (Optional) - Requests per minute limit
  • max_parallel_requests (Optional) - Maximum number of parallel requests
  • metadata (Optional) - Map of metadata for the user
  • auto_create_key (Optional, Default true, Forces new resource) - Whether to auto-create an API key on creation
  • send_invite_email (Optional, Default false, Forces new resource) - Whether to send an invite email on creation
  • key_alias (Optional) - Alias for the auto-created API key
  • aliases (Optional) - Map of model aliases for the user
  • config (Optional) - Map of config values for the user
  • permissions (Optional) - Map of permission values for the user
  • model_max_budget (Optional) - JSON string of per-model budget config, e.g. jsonencode({"gpt-4o" = {max_budget = 10.0}})
  • guardrails (Optional) - List of guardrails applied to the user's requests
  • blocked (Optional, Default false) - Whether to block the key auto-created with the user. Only sent on creation, so changing it afterwards has no effect. The proxy has no user-level block; use litellm_key_block to block keys

Attribute Reference

  • id - The user ID
  • key (Sensitive) - The auto-created API key for the user, populated when auto_create_key is true

Import

Users can be imported using the user ID:

terraform import litellm_user.alice <user-id>