Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: LiteLLM team management API
description: "Enterprise Edition \n\nProxy Server to call 100+ LLMs in the OpenAI format. [**Customize Swagger Docs**](https://docs.litellm.ai/docs/proxy/enterprise#swagger-docs---custom-routes--branding)\n\n\U0001F449 [```LiteLLM Admin Panel on /ui```](/ui). Create, Edit Keys with SSO. Having issues? Try [```Fallback Login```](/fallback/login)\n\n\U0001F4B8 [```LiteLLM Model Cost Map```](https://models.litellm.ai/).\n\n\U0001F50E [```LiteLLM Model Hub```](/ui/model_hub_table). See available models on the proxy. [**Docs**](https://docs.litellm.ai/docs/proxy/ai_hub)"
version: 1.95.0
x-operator: institution
x-provenance:
method: probed
source: https://llmproxy.uva.nl/openapi.json
retrieved: '2026-08-19'
note: Document is generated by the LiteLLM proxy software the University of Amsterdam self-hosts; the deployment, the key issuance and the host (llmproxy.uva.nl, UvA Azure) are the institution's. servers[] added by API Evangelist because the served document omits it; nothing else altered.
servers:
- url: https://llmproxy.uva.nl
description: University of Amsterdam / Amsterdam University of Applied Sciences shared AI gateway
tags:
- name: team management
paths:
/team/new:
post:
tags:
- team management
summary: New Team
description: "Allow users to create a new team. Apply user permissions to their team.\n\n\U0001F449 [Detailed Doc on setting team budgets](https://docs.litellm.ai/docs/proxy/team_budgets)\n\n\nParameters:\n- team_alias: Optional[str] - User defined team alias\n- team_id: Optional[str] - The team id of the user. If none passed, we'll generate it.\n- members_with_roles: List[{\"role\": \"admin\" or \"user\", \"user_id\": \"<user-id>\"}] - A list of users and their roles in the team. Get user_id when making a new user via `/user/new`.\n- team_member_permissions: Optional[List[str]] - A list of routes that non-admin team members can access. example: [\"/key/generate\", \"/key/update\", \"/key/delete\"]\n- metadata: Optional[dict] - Metadata for team, store information for team. Example metadata = {\"extra_info\": \"some info\"}\n- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit for this team - applied across all keys for this team.\n- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit for this team - applied across all keys for this team.\n- mcp_rpm_limit: Optional[Dict[str, int]] - Per-MCP-server RPM limit for this team, keyed by MCP server name (alias if set, else the configured name). Example: {\"github\": 100, \"slack\": 200}. Applied across all keys for this team.\n- tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for this team - all keys with this team_id will have at max this TPM limit\n- rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for this team - all keys associated with this team_id will have at max this RPM limit\n- rpm_limit_type: Optional[Literal[\"guaranteed_throughput\", \"best_effort_throughput\"]] - The type of RPM limit enforcement. Use \"guaranteed_throughput\" to raise an error if overallocating RPM, or \"best_effort_throughput\" for best effort enforcement.\n- tpm_limit_type: Optional[Literal[\"guaranteed_throughput\", \"best_effort_throughput\"]] - The type of TPM limit enforcement. Use \"guaranteed_throughput\" to raise an error if overallocating TPM, or \"best_effort_throughput\" for best effort enforcement.\n- max_budget: Optional[float] - The maximum budget allocated to the team - all keys for this team_id will have at max this max_budget\n- soft_budget: Optional[float] - The soft budget threshold for the team. If max_budget is set, soft_budget must be strictly lower than max_budget. Can be set independently if max_budget is not set.\n- budget_duration: Optional[str] - The duration of the budget for the team. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- models: Optional[list] - A list of models associated with the team - all keys for this team_id will have at most, these models. If empty, assumes all models are allowed.\n- blocked: bool - Flag indicating if the team is blocked or not - will stop all calls from keys with this team_id.\n- members: Optional[List] - Control team members via `/team/member/add` and `/team/member/delete`.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- prompts: Optional[List[str]] - List of prompts that the team is allowed to use.\n- organization_id: Optional[str] - The organization id of the team. Default is None. Create via `/organization/new`.\n- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)\n- guardrails: Optional[List[str]] - Guardrails for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails)\n- policies: Optional[List[str]] - Policies for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails/guardrail_policies)\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - team-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- team_member_budget: Optional[float] - The maximum budget allocated to an individual team member.\n- team_member_budget_duration: Optional[str] - The duration of the budget for the team member. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- team_member_rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for individual team members.\n- team_member_tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for individual team members.\n- team_member_key_duration: Optional[str] - The duration for a team member's key. e.g. \"1d\", \"1w\", \"1mo\"\n- allowed_passthrough_routes: Optional[List[str]] - List of allowed pass through routes for the team.\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- secret_manager_settings: Optional[dict] - Secret manager settings for the team. [Docs](https://docs.litellm.ai/docs/secret_managers/overview)\n- router_settings: Optional[UpdateRouterConfig] - team-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the team. Access groups define which models the team can access. Example - [\"access_group_1\", \"access_group_2\"].\n- enforced_file_expires_after: Optional[dict] - Enforced file expiration policy for the team. Keys created under this team will inherit this policy for file uploads. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- enforced_batch_output_expires_after: Optional[dict] - Enforced batch output file expiration policy for the team. Keys created under this team will inherit this policy for batch output files. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- budget_limits: Optional[list] - List of concurrent budget windows for the team. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n- default_team_member_models: Optional[List[str]] - Default models assigned to new team members when they join this team. Must be a subset of the team's models.\n\nReturns:\n- team_id: (str) Unique team id - used for tracking spend across multiple keys for same team id.\n\n_deprecated_params:\n- admins: list - A list of user_id's for the admin role\n- users: list - A list of user_id's for the user role\n\nExample Request:\n```\ncurl --location 'http://0.0.0.0:4000/team/new' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data '{\n \"team_alias\": \"my-new-team_2\",\n \"members_with_roles\": [{\"role\": \"admin\", \"user_id\": \"user-1234\"},\n {\"role\": \"user\", \"user_id\": \"user-2434\"}]\n}'\n\n```\n\n ```\ncurl --location 'http://0.0.0.0:4000/team/new' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data '{\n \"team_alias\": \"QA Prod Bot\",\n \"max_budget\": 0.000000001,\n \"budget_duration\": \"1d\"\n }'\n```"
operationId: new_team_team_new_post
security:
- APIKeyHeader: []
parameters:
- name: litellm-changed-by
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
title: Litellm-Changed-By
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/NewTeamRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/LiteLLM_TeamTable'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/update:
post:
tags:
- team management
summary: Update Team
description: "Use `/team/member_add` AND `/team/member/delete` to add/remove new team members\n\nYou can now update team budget / rate limits via /team/update\n\nParameters:\n- team_id: str - The team id of the user. Required param.\n- team_alias: Optional[str] - User defined team alias\n- team_member_permissions: Optional[List[str]] - A list of routes that non-admin team members can access. example: [\"/key/generate\", \"/key/update\", \"/key/delete\"]\n- metadata: Optional[dict] - Metadata for team, store information for team. Example metadata = {\"team\": \"core-infra\", \"app\": \"app2\", \"email\": \"ishaan@berri.ai\" }\n- tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for this team - all keys with this team_id will have at max this TPM limit\n- rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for this team - all keys associated with this team_id will have at max this RPM limit\n- max_budget: Optional[float] - The maximum budget allocated to the team - all keys for this team_id will have at max this max_budget\n- soft_budget: Optional[float] - The soft budget threshold for the team. If max_budget is set (either in the request or existing), soft_budget must be strictly lower than max_budget. Can be set independently if max_budget is not set.\n- budget_duration: Optional[str] - The duration of the budget for the team. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- models: Optional[list] - A list of models associated with the team - all keys for this team_id will have at most, these models. If empty, assumes all models are allowed.\n- prompts: Optional[List[str]] - List of prompts that the team is allowed to use.\n- blocked: bool - Flag indicating if the team is blocked or not - will stop all calls from keys with this team_id.\n- tags: Optional[List[str]] - Tags for [tracking spend](https://litellm.vercel.app/docs/proxy/enterprise#tracking-spend-for-custom-tags) and/or doing [tag-based routing](https://litellm.vercel.app/docs/proxy/tag_routing).\n- organization_id: Optional[str] - The organization id of the team. Default is None. Create via `/organization/new`.\n- model_aliases: Optional[dict] - Model aliases for the team. [Docs](https://docs.litellm.ai/docs/proxy/team_based_routing#create-team-with-model-alias)\n- guardrails: Optional[List[str]] - Guardrails for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails)\n- policies: Optional[List[str]] - Policies for the team. [Docs](https://docs.litellm.ai/docs/proxy/guardrails/guardrail_policies)\n- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.\n- object_permission: Optional[LiteLLM_ObjectPermissionBase] - team-specific object permission. Example - {\"vector_stores\": [\"vector_store_1\", \"vector_store_2\"], \"agents\": [\"agent_1\", \"agent_2\"], \"agent_access_groups\": [\"dev_group\"]}. IF null or {} then no object permission.\n- team_member_budget: Optional[float] - The maximum budget allocated to an individual team member.\n- team_member_budget_duration: Optional[str] - The duration of the budget for the team member. Doc [here](https://docs.litellm.ai/docs/proxy/team_budgets)\n- team_member_rpm_limit: Optional[int] - The RPM (Requests Per Minute) limit for individual team members.\n- team_member_tpm_limit: Optional[int] - The TPM (Tokens Per Minute) limit for individual team members.\n- team_member_key_duration: Optional[str] - The duration for a team member's key. e.g. \"1d\", \"1w\", \"1mo\"\n- allowed_passthrough_routes: Optional[List[str]] - List of allowed pass through routes for the team.\n- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit per model for this team. Example: {\"gpt-4\": 100, \"gpt-3.5-turbo\": 200}\n- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit per model for this team. Example: {\"gpt-4\": 10000, \"gpt-3.5-turbo\": 20000}\n- mcp_rpm_limit: Optional[Dict[str, int]] - Per-MCP-server RPM limit for this team, keyed by MCP server name (alias if set, else the configured name). Example: {\"github\": 100, \"slack\": 200}. Applied across all keys for this team.\nExample - update team TPM Limit\n- allowed_vector_store_indexes: Optional[List[dict]] - List of allowed vector store indexes for the key. Example - [{\"index_name\": \"my-index\", \"index_permissions\": [\"write\", \"read\"]}]. If specified, the key will only be able to use these specific vector store indexes. Create index, using `/v1/indexes` endpoint.\n- secret_manager_settings: Optional[dict] - Secret manager settings for the team. [Docs](https://docs.litellm.ai/docs/secret_managers/overview)\n- router_settings: Optional[UpdateRouterConfig] - team-specific router settings. Example - {\"model_group_retry_policy\": {\"gpt-4\": {\"RateLimitErrorRetries\": 5}}}. IF null or {} then no router settings.\n- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the team. Access groups define which models the team can access. Example - [\"access_group_1\", \"access_group_2\"].\n- enforced_file_expires_after: Optional[dict] - Enforced file expiration policy for the team. Keys created under this team will inherit this policy for file uploads. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- enforced_batch_output_expires_after: Optional[dict] - Enforced batch output file expiration policy for the team. Keys created under this team will inherit this policy for batch output files. Example - {\"anchor\": \"created_at\", \"days\": 30}.\n- budget_limits: Optional[list] - List of concurrent budget windows for the team. Each window specifies a budget_limit, time_period, and optional budget_duration. Example - [{\"budget_limit\": 10.0, \"time_period\": \"1d\"}, {\"budget_limit\": 50.0, \"time_period\": \"7d\"}].\n- default_team_member_models: Optional[List[str]] - Default models assigned to new team members when they join this team. Must be a subset of the team's models.\n\n```\ncurl --location 'http://0.0.0.0:4000/team/update' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data-raw '{\n \"team_id\": \"8d916b1c-510d-4894-a334-1c16a93344f5\",\n \"tpm_limit\": 100\n}'\n```\n\nExample - Update Team `max_budget` budget\n```\ncurl --location 'http://0.0.0.0:4000/team/update' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data-raw '{\n \"team_id\": \"8d916b1c-510d-4894-a334-1c16a93344f5\",\n \"max_budget\": 10\n}'\n```"
operationId: update_team_team_update_post
security:
- APIKeyHeader: []
parameters:
- name: litellm-changed-by
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
title: Litellm-Changed-By
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTeamRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/{team_id}:
patch:
tags:
- team management
summary: Patch Team
description: "Partially update a team using RFC 7386 JSON Merge Patch semantics.\n\n`team_id` is taken from the path; a `team_id` in the body is accepted only when it\nmatches. `metadata` is merged with the team's stored metadata rather than replacing\nit: an omitted key is preserved, `key: null` deletes it, and any other value\noverwrites (recursing into nested objects). Every other field behaves exactly like\n`POST /team/update` (omitted preserves, a value overwrites). Returns the full\nupdated team.\n\n```\ncurl --location --request PATCH 'http://0.0.0.0:4000/team/8d916b1c-510d-4894-a334-1c16a93344f5' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data-raw '{\n \"metadata\": {\"cost_center\": \"1234\", \"deprecated_key\": null}\n}'\n```"
operationId: patch_team_team__team_id__patch
security:
- APIKeyHeader: []
parameters:
- name: team_id
in: path
required: true
schema:
type: string
title: Team Id
- name: litellm-changed-by
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
title: Litellm-Changed-By
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchTeamRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/LiteLLM_TeamTable'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/member_add:
post:
tags:
- team management
summary: Team Member Add
description: 'Add new members (either via user_email or user_id) to a team
If user doesn''t exist, new user row will also be added to User Table
Only proxy_admin or admin of team, allowed to access this endpoint.
```
curl -X POST ''http://0.0.0.0:4000/team/member_add'' -H ''Authorization: Bearer sk-1234'' -H ''Content-Type: application/json'' -d ''{"team_id": "45e3e396-ee08-4a61-a88e-16b3ce7e0849", "member": {"role": "user", "user_id": "krrish247652@berri.ai"}}''
```'
operationId: team_member_add_team_member_add_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMemberAddRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TeamAddMemberResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/team/member_delete:
post:
tags:
- team management
summary: Team Member Delete
description: "[BETA]\n\ndelete members (either via user_email or user_id) from a team\n\nIf user doesn't exist, an exception will be raised\n```\ncurl -X POST 'http://0.0.0.0:8000/team/member_delete' \n-H 'Authorization: Bearer sk-1234' \n-H 'Content-Type: application/json' \n-d '{\n \"team_id\": \"45e3e396-ee08-4a61-a88e-16b3ce7e0849\",\n \"user_id\": \"krrish247652@berri.ai\"\n}'\n```"
operationId: team_member_delete_team_member_delete_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMemberDeleteRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/team/member_update:
post:
tags:
- team management
summary: Team Member Update
description: '[BETA]
Update team member budgets and team member role'
operationId: team_member_update_team_member_update_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMemberUpdateRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMemberUpdateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/team/bulk_member_add:
post:
tags:
- team management
summary: Bulk Team Member Add
description: "Bulk add multiple members to a team at once.\n\nThis endpoint reuses the same logic as /team/member_add but provides a bulk-friendly response format.\n\nParameters:\n- team_id: str - The ID of the team to add members to\n- members: List[Member] - List of members to add to the team\n- all_users: Optional[bool] - Flag to add all users on Proxy to the team\n- max_budget_in_team: Optional[float] - Maximum budget allocated to each user within the team\n\nReturns:\n- results: List of individual member addition results\n- total_requested: Total number of members requested for addition\n- successful_additions: Number of successful additions \n- failed_additions: Number of failed additions\n- updated_team: The updated team object\n\nExample request:\n```bash\ncurl --location 'http://0.0.0.0:4000/team/bulk_member_add' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data '{\n \"team_id\": \"team-1234\",\n \"members\": [\n {\n \"user_id\": \"user1\",\n \"role\": \"user\"\n },\n {\n \"user_email\": \"user2@example.com\",\n \"role\": \"admin\"\n }\n ],\n \"max_budget_in_team\": 100.0\n}'\n```"
operationId: bulk_team_member_add_team_bulk_member_add_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkTeamMemberAddRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkTeamMemberAddResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/team/delete:
post:
tags:
- team management
summary: Delete Team
description: "delete team and associated team keys\n\nParameters:\n- team_ids: List[str] - Required. List of team IDs to delete. Example: [\"team-1234\", \"team-5678\"]\n\n```\ncurl --location 'http://0.0.0.0:4000/team/delete' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data-raw '{\n \"team_ids\": [\"8d916b1c-510d-4894-a334-1c16a93344f5\"]\n}'\n```"
operationId: delete_team_team_delete_post
security:
- APIKeyHeader: []
parameters:
- name: litellm-changed-by
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
title: Litellm-Changed-By
description: The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteTeamRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/info:
get:
tags:
- team management
summary: Team Info
description: 'get info on team + related keys
Parameters:
- team_id: str - Required. The unique identifier of the team to get info on.
```
curl --location ''http://localhost:4000/team/info?team_id=your_team_id_here'' --header ''Authorization: Bearer your_api_key_here''
```'
operationId: team_info_team_info_get
security:
- APIKeyHeader: []
parameters:
- name: team_id
in: query
required: false
schema:
type: string
description: Team ID in the request parameters
title: Team Id
description: Team ID in the request parameters
- name: key_limit
in: query
required: false
schema:
anyOf:
- type: integer
exclusiveMinimum: 0
- type: 'null'
description: Limit the number of keys returned
title: Key Limit
description: Limit the number of keys returned
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/{team_id}/members/me:
get:
tags:
- team management
summary: Team Member Me
description: 'Get the caller''s own team-membership row for the given team.
Used by internal users to view their own spend, budget, budget reset
date, rate limits, and role within a team — without exposing other
members'' data. The caller is resolved from their API key; the path
`/members/me` always refers to that caller.
Returns 404 if the caller is not a member of the team.
```
curl --location ''http://localhost:4000/team/your_team_id/members/me'' --header ''Authorization: Bearer your_api_key_here''
```'
operationId: team_member_me_team__team_id__members_me_get
security:
- APIKeyHeader: []
parameters:
- name: team_id
in: path
required: true
schema:
type: string
title: Team Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TeamMemberInfoResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/team/block:
post:
tags:
- team management
summary: Block Team
description: "Blocks all calls from keys with this team id.\n\nParameters:\n- team_id: str - Required. The unique identifier of the team to block.\n\nExample:\n```\ncurl --location 'http://0.0.0.0:4000/team/block' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data '{\n \"team_id\": \"team-1234\"\n}'\n```\n\nReturns:\n- The updated team record with blocked=True"
operationId: block_team_team_block_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BlockTeamRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/team/unblock:
post:
tags:
- team management
summary: Unblock Team
description: "Unblocks a previously blocked team, re-enabling calls from keys with this team id.\n\nParameters:\n- team_id: str - Required. The unique identifier of the team to unblock.\n\nExample:\n```\ncurl --location 'http://0.0.0.0:4000/team/unblock' --header 'Authorization: Bearer sk-1234' --header 'Content-Type: application/json' --data '{\n \"team_id\": \"team-1234\"\n}'\n```"
operationId: unblock_team_team_unblock_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BlockTeamRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- APIKeyHeader: []
/v2/team/list:
get:
tags:
- team management
summary: List Team V2
description: "Get a paginated list of teams with filtering and sorting options.\n\nParameters:\n user_id: Optional[str]\n Only return teams which this user belongs to\n organization_id: Optional[str]\n Only return teams which belong to this organization\n team_id: Optional[str]\n Filter teams by exact team_id match\n team_alias: Optional[str]\n Filter teams by
# --- truncated at 32 KB (125 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-amsterdam/refs/heads/main/openapi/university-of-amsterdam-team-management-api-openapi.yml