Management API Reference
This document provides complete technical specifications for all 100+ management endpoints provided by the KoboiLLM API Gateway. For every endpoint, we list HTTP methods, paths, parameter schemas, and authorization levels (Global Admin Only vs. Team Admin Allowed). All API keys in request examples use dummy credentials (sk-xxxxxx).
📦 Manajemen Virtual Key
Menampilkan total 14 endpoint untuk modul ini.
01. [GET] /key/aliases
Summary: List Virtual Key Aliases
Authorization: Global Admin Only
List alias key dengan paginasi dan pencarian opsional.
Parameters:
page(query, Optional) — Page numbersize(query, Optional) — Page sizesearch(query, Optional) — Search key aliases (case-insensitive partial match)
02. [POST] /key/block
Summary: Block Virtual Key
Authorization: Team Admin Allowed
Block an Virtual key from making any requests.
Parameters:
- key: str - The key to block. Can be either the unhashed key (sk-xxxxxx) or the hashed key value
Example:
curl --location 'https://api.koboillm.com/key/block' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "key": "sk-xxxxxx"\}'Note: This is an admin-only endpoint. Only proxy admins can block keys.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
03. [POST] /key/bulk_update
Summary: Bulk Update Virtual Keys
Authorization: Global Admin Only
Bulk update multiple keys at once.
This endpoint allows updating multiple keys in a single request. Each key update is processed independently - if some updates fail, others will still succeed.
Parameters:
- keys: List[BulkUpdateKeyRequestItem] - List of key update requests, each containing:
- key: str - The key identifier (token) to update
- budget_id: Optional[str] - Budget ID associated with the key
- max_budget: Optional[float] - Max budget for key
- team_id: Optional[str] - Team ID associated with key
- tags: Optional[List[str]] - Tags for organizing keys
Mengembalikan:
- total_requested: int - Total number of keys requested for update
- successful_updates: List[SuccessfulKeyUpdate] - List of successfully updated keys with their updated info
- failed_updates: List[FailedKeyUpdate] - List of failed updates with key_info and failed_reason
Example request:
curl --location 'https://api.koboillm.com/key/bulk_update' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "keys": [ \{ "key": "sk-xxxxxx", "max_budget": 100.0, "team_id": "team-123", "tags": ["production", "api"] \}, \{ "key": "sk-xxxxxx", "budget_id": "budget-456", "tags": ["staging"] \} ]\}'Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
04. [POST] /key/delete
Summary: Delete Virtual Key
Authorization: Team Admin Allowed
Delete a key from the key management system.
Parameters::
- keys (List[str]): A list of keys or hashed keys to delete. Example {“keys”: [“sk-xxxxxx”, “837e17519f44683334df5291321d97b8bf1098cd490e49e215f6fea935aa28be”]}
- key_aliases (List[str]): A list of key aliases to delete. Can be passed instead of
keys.Example {“key_aliases”: [“alias1”, “alias2”]}
Mengembalikan:
- deleted_keys (List[str]): A list of deleted keys. Example {“deleted_keys”: [“sk-xxxxxx”, “837e17519f44683334df5291321d97b8bf1098cd490e49e215f6fea935aa28be”]}
Example:
curl --location 'https://api.koboillm.com/key/delete' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "keys": ["sk-xxxxxx"]\}'Raises: HTTPException: If an error occurs during key deletion.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
05. [POST] /key/generate
Summary: Create Virtual Key
Authorization: Team Admin Allowed
Create Virtual Key baru untuk tim atau user.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
06. [POST] /key/health
Summary: Memeriksa Kesehatan Key
Authorization: Global Admin Only
Check the health of the key
Checks:
- If key based logging is configured correctly - sends a test log
Usage
Pass the key in the request header
curl -X POST "https://api.koboillm.com/key/health" -H "Authorization: Bearer sk-xxxxxx" -H "Content-Type: application/json"Response when logging callbacks are setup correctly:
\{ "key": "healthy", "logging_callbacks": \{ "callbacks": [ "gcs_bucket" ], "status": "healthy", "details": "No logger exceptions triggered, system is healthy. Manually check if logs were sent to ['gcs_bucket']" \}\}Response when logging callbacks are not setup correctly:
\{ "key": "unhealthy", "logging_callbacks": \{ "callbacks": [ "gcs_bucket" ], "status": "unhealthy", "details": "Logger exceptions triggered, system is unhealthy: Failed to load vertex credentials. Check to see if credentials containing partial/invalid information." \}\}07. [GET] /key/info
Summary: Information Detil Virtual Key
Authorization: Team Admin Allowed
Mengambil rincian informasi, batas budget, dan status pengeluaran Virtual Key.
Parameters:
key(query, Optional) — Key in the request parameters
08. [GET] /key/list
Summary: List Semua Virtual Key
Authorization: Global Admin Only
List seluruh Virtual Key yang terdaftar di server.
Parameters:
page(query, Optional) — Page numbersize(query, Optional) — Page sizeuser_id(query, Optional) — Filter keys by user IDteam_id(query, Optional) — Filter keys by team IDorganization_id(query, Optional) — Filter keys by organization IDkey_hash(query, Optional) — Filter keys by key hashkey_alias(query, Optional) — Filter keys by key aliasreturn_full_object(query, Optional) — Return full key objectinclude_team_keys(query, Optional) — Include all keys for teams that user is an admin of.include_created_by_keys(query, Optional) — Include keys created by the usersort_by(query, Optional) — Column to sort by (e.g. ‘user_id’, ‘created_at’, ‘spend’)sort_order(query, Optional) — Sort order (‘asc’ or ‘desc’)expand(query, Optional) — Expand related objects (e.g. ‘user’)status(query, Optional) — Filter by status (e.g. ‘deleted’)project_id(query, Optional) — Filter keys by project IDaccess_group_id(query, Optional) — Filter keys by access group ID
09. [POST] /key/regenerate
Summary: Rotasi / Regenerasi Virtual Key
Authorization: Global Admin Only
Regenerate an existing API key while optionally updating its parameters.
Parameters:
- key: str (path parameter) - The key to regenerate
- data: Optional[RegenerateKeyRequest] - Request body containing optional parameters to update
- key: Optional[str] - The key to regenerate.
- new_master_key: Optional[str] - The new master key to use, if key is the master key.
- new_key: Optional[str] - The new key to use, if key is not the master key. If both set, new_master_key will be used.
- key_alias: Optional[str] - User-friendly key alias
- user_id: Optional[str] - User ID associated with key
- team_id: Optional[str] - Team ID associated with key
- models: Optional[list] - Model_name’s a user is allowed to call
- tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)
- spend: Optional[float] - Amount spent by key
- max_budget: Optional[float] - Max budget for key
- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {“gpt-4”: {“budget_limit”: 0.0005, “time_period”: “30d”}}
- budget_duration: Optional[str] - Budget reset period (“30d”, “1h”, etc.)
- soft_budget: Optional[float] - Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.
- max_parallel_requests: Optional[int] - Rate limit for parallel requests
- metadata: Optional[dict] - Metadata for key. Example {“team”: “core-infra”, “app”: “app2”}
- tpm_limit: Optional[int] - Tokens per minute limit
- rpm_limit: Optional[int] - Requests per minute limit
- model_rpm_limit: Optional[dict] - Model-specific RPM limits {“gpt-4”: 100, “claude-v1”: 200}
- model_tpm_limit: Optional[dict] - Model-specific TPM limits {“gpt-4”: 100000, “claude-v1”: 200000}
- allowed_cache_controls: Optional[list] - List of allowed cache control values
- duration: Optional[str] - Key validity duration (“30d”, “1h”, etc.)
- permissions: Optional[dict] - Key-specific permissions
- guardrails: Optional[List[str]] - List of active guardrails for the key
- blocked: Optional[bool] - Whether the key is blocked
- grace_period: Optional[str] - Duration to keep old key valid after rotation (e.g. “24h”, “2d”). Omitted = immediate revoke. Env: LITELLM_KEY_ROTATION_GRACE_PERIOD
Mengembalikan:
- GenerateKeyResponse containing the new key and its updated parameters
Example:
curl --location --request POST 'https://api.koboillm.com/key/sk-xxxxxx/regenerate' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data-raw '\{ "max_budget": 100, "metadata": \{"team": "core-infra"\}, "models": ["gpt-4", "gpt-3.5-turbo"]\}'Note: This is an Enterprise feature. It requires a premium license to use.
Parameters:
key(query, Optional) — Tidak ada deskripsi.litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
10. [POST] /key/service-account/generate
Summary: Create Key Service Account GCP
Authorization: Global Admin Only
Create Virtual Key baru untuk tim atau user.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
11. [POST] /key/unblock
Summary: Membuka Blokir Virtual Key
Authorization: Team Admin Allowed
Unblock a Virtual key to allow it to make requests again.
Parameters:
- key: str - The key to unblock. Can be either the unhashed key (sk-xxxxxx) or the hashed key value
Example:
curl --location 'https://api.koboillm.com/key/unblock' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "key": "sk-xxxxxx"\}'Note: This is an admin-only endpoint. Only proxy admins can unblock keys.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
12. [POST] /key/update
Summary: Update Parameter Virtual Key
Authorization: Team Admin Allowed
Update an existing API key’s parameters.
Parameters:
- key: str - The key to update
- key_alias: Optional[str] - User-friendly key alias
- user_id: Optional[str] - User ID associated with key
- team_id: Optional[str] - Team ID associated with key
- agent_id: Optional[str] - The agent id associated with the key.
- budget_id: Optional[str] - The budget id associated with the key. Created by calling
/budget/new. - models: Optional[list] - Model_name’s a user is allowed to call
- tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)
- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.
- enforced_params: Optional[List[str]] - List of enforced params for the key (Enterprise only). Docs
- spend: Optional[float] - Amount spent by key
- max_budget: Optional[float] - Max budget for key
- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {“gpt-4”: {“budget_limit”: 0.0005, “time_period”: “30d”}}
- budget_duration: Optional[str] - Budget reset period (“30d”, “1h”, etc.)
- soft_budget: Optional[float] - [TODO] Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.
- max_parallel_requests: Optional[int] - Rate limit for parallel requests
- metadata: Optional[dict] - Metadata for key. Example {“team”: “core-infra”, “app”: “app2”}
- tpm_limit: Optional[int] - Tokens per minute limit
- rpm_limit: Optional[int] - Requests per minute limit
- model_rpm_limit: Optional[dict] - Model-specific RPM limits {“gpt-4”: 100, “claude-v1”: 200}
- model_tpm_limit: Optional[dict] - Model-specific TPM limits {“gpt-4”: 100000, “claude-v1”: 200000}
- tpm_limit_type: Optional[str] - TPM rate limit type - “best_effort_throughput”, “guaranteed_throughput”, or “dynamic”
- rpm_limit_type: Optional[str] - RPM rate limit type - “best_effort_throughput”, “guaranteed_throughput”, or “dynamic”
- allowed_cache_controls: Optional[list] - List of allowed cache control values
- duration: Optional[str] - Key validity duration (“30d”, “1h”, etc.) or “-1” to never expire
- permissions: Optional[dict] - Key-specific permissions
- send_invite_email: Optional[bool] - Send invite email to user_id
- guardrails: Optional[List[str]] - List of active guardrails for the key
- policies: Optional[List[str]] - List of policy names to apply to the key. Policies define guardrails, conditions, and inheritance rules.
- disable_global_guardrails: Optional[bool] - Whether to disable global guardrails for the key.
- prompts: Optional[List[str]] - List of prompts that the key is allowed to use.
- blocked: Optional[bool] - Whether the key is blocked
- aliases: Optional[dict] - Model aliases for the key - Docs
- config: Optional[dict] - [DEPRECATED PARAM] Key-specific config.
- temp_budget_increase: Optional[float] - Temporary budget increase for the key (Enterprise only).
- temp_budget_expiry: Optional[str] - Expiry time for the temporary budget increase (Enterprise only).
- allowed_routes: Optional[list] - List of allowed routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [“/chat/completions”, “/embeddings”, “/keys/*”]
- allowed_passthrough_routes: Optional[list] - List of allowed pass through routes for the key. Store the actual route or store a wildcard pattern for a set of routes. Example - [“/my-custom-endpoint”]. Use this instead of allowed_routes, if you just want to specify which pass through routes the key can access, without specifying the routes. If allowed_routes is specified, allowed_passthrough_routes is ignored.
- prompts: Optional[List[str]] - List of allowed prompts for the key. If specified, the key will only be able to use these specific prompts.
- object_permission: Optional[LiteLLM_ObjectPermissionBase] - key-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.
- auto_rotate: Optional[bool] - Whether this key should be automatically rotated
- rotation_interval: Optional[str] - How often to rotate this key (e.g., ‘30d’, ‘90d’). Required if auto_rotate=True
- 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/indexesendpoint. - router_settings: Optional[UpdateRouterConfig] - key-specific router settings. Example - {“model_group_retry_policy”: {“max_retries”: 5}}. IF null or {} then no router settings.
- access_group_ids: Optional[List[str]] - List of access group IDs to associate with the key. Access groups define which models a key can access. Example - [“access_group_1”, “access_group_2”].
Example:
curl --location 'https://api.koboillm.com/key/update' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "key": "sk-xxxxxx", "key_alias": "my-key", "user_id": "user-1234", "team_id": "team-1234", "max_budget": 100, "metadata": \{"any_key": "any-val"\},\}'Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
13. [POST] /key/{key}/regenerate
Summary: Rotasi / Regenerasi Virtual Key
Authorization: Global Admin Only
Regenerate an existing API key while optionally updating its parameters.
Parameters:
- key: str (path parameter) - The key to regenerate
- data: Optional[RegenerateKeyRequest] - Request body containing optional parameters to update
- key: Optional[str] - The key to regenerate.
- new_master_key: Optional[str] - The new master key to use, if key is the master key.
- new_key: Optional[str] - The new key to use, if key is not the master key. If both set, new_master_key will be used.
- key_alias: Optional[str] - User-friendly key alias
- user_id: Optional[str] - User ID associated with key
- team_id: Optional[str] - Team ID associated with key
- models: Optional[list] - Model_name’s a user is allowed to call
- tags: Optional[List[str]] - Tags for organizing keys (Enterprise only)
- spend: Optional[float] - Amount spent by key
- max_budget: Optional[float] - Max budget for key
- model_max_budget: Optional[Dict[str, BudgetConfig]] - Model-specific budgets {“gpt-4”: {“budget_limit”: 0.0005, “time_period”: “30d”}}
- budget_duration: Optional[str] - Budget reset period (“30d”, “1h”, etc.)
- soft_budget: Optional[float] - Soft budget limit (warning vs. hard stop). Will trigger a slack alert when this soft budget is reached.
- max_parallel_requests: Optional[int] - Rate limit for parallel requests
- metadata: Optional[dict] - Metadata for key. Example {“team”: “core-infra”, “app”: “app2”}
- tpm_limit: Optional[int] - Tokens per minute limit
- rpm_limit: Optional[int] - Requests per minute limit
- model_rpm_limit: Optional[dict] - Model-specific RPM limits {“gpt-4”: 100, “claude-v1”: 200}
- model_tpm_limit: Optional[dict] - Model-specific TPM limits {“gpt-4”: 100000, “claude-v1”: 200000}
- allowed_cache_controls: Optional[list] - List of allowed cache control values
- duration: Optional[str] - Key validity duration (“30d”, “1h”, etc.)
- permissions: Optional[dict] - Key-specific permissions
- guardrails: Optional[List[str]] - List of active guardrails for the key
- blocked: Optional[bool] - Whether the key is blocked
- grace_period: Optional[str] - Duration to keep old key valid after rotation (e.g. “24h”, “2d”). Omitted = immediate revoke. Env: LITELLM_KEY_ROTATION_GRACE_PERIOD
Mengembalikan:
- GenerateKeyResponse containing the new key and its updated parameters
Example:
curl --location --request POST 'https://api.koboillm.com/key/sk-xxxxxx/regenerate' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data-raw '\{ "max_budget": 100, "metadata": \{"team": "core-infra"\}, "models": ["gpt-4", "gpt-3.5-turbo"]\}'Note: This is an Enterprise feature. It requires a premium license to use.
Parameters:
key(path, Required) — Tidak ada deskripsi.litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
14. [POST] /key/{key}/reset_spend
Summary: Mereset Pengeluaran Virtual Key
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
key(path, Required) — Tidak ada deskripsi.litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
📦 Manajemen Model & Router
Menampilkan total 26 endpoint untuk modul ini.
01. [GET] /access_group/list
Summary: List Semua Access Group
Authorization: Global Admin Only
List all access groups.
Returns a list of all access groups with their model names and deployment counts.
Example:
curl -X GET 'https://api.koboillm.com/access_group/list' \ -H 'Authorization: Bearer sk-xxxxxx'Mengembalikan:
- ListAccessGroupsResponse with all access groups
02. [POST] /access_group/new
Summary: Create Model Group Baru
Authorization: Global Admin Only
Create a new access group containing multiple model names.
An access group is a named collection of model groups that can be referenced by teams/keys for simplified access control.
Example:
curl -X POST 'https://api.koboillm.com/access_group/new' \ -H 'Authorization: Bearer sk-xxxxxx' \ -H 'Content-Type: application/json' \ -d '\{ "access_group": "production-models", "model_names": ["gpt-4", "claude-3-opus", "gemini-pro"] \}'Parameters:
- access_group: str - The access group name (e.g., “production-models”)
- model_names: List[str] - List of existing model groups to include
Mengembalikan:
- NewModelGroupResponse with the created access group details
Raises:
- HTTPException 400: If any model names don’t exist
- HTTPException 500: If database operations fail
03. [DELETE] /access_group/{access_group}/delete
Summary: Delete Access Group
Authorization: Global Admin Only
Delete an access group.
Removes the access group from all deployments that have it.
Example:
curl -X DELETE 'https://api.koboillm.com/access_group/production-models/delete' \ -H 'Authorization: Bearer sk-xxxxxx'Parameters:
- access_group: str - The access group name (URL path parameter)
Mengembalikan:
- DeleteModelGroupResponse with deletion details
Raises:
- HTTPException 404: If access group not found
Parameters:
access_group(path, Required) — Tidak ada deskripsi.
04. [GET] /access_group/{access_group}/info
Summary: Mencankan Information Access Group
Authorization: Global Admin Only
Get information about a specific access group.
Example:
curl -X GET 'https://api.koboillm.com/access_group/production-models/info' \ -H 'Authorization: Bearer sk-xxxxxx'Parameters:
- access_group: str - The access group name (URL path parameter)
Mengembalikan:
- AccessGroupInfo with the access group details
Raises:
- HTTPException 404: If access group not found
Parameters:
access_group(path, Required) — Tidak ada deskripsi.
05. [PUT] /access_group/{access_group}/update
Summary: Update Access Group
Authorization: Global Admin Only
Update an access group’s model names.
This will:
- Remove the access group from all current deployments
- Add the access group to all deployments for the new model_names list
Example:
curl -X PUT 'https://api.koboillm.com/access_group/production-models/update' \ -H 'Authorization: Bearer sk-xxxxxx' \ -H 'Content-Type: application/json' \ -d '\{ "model_names": ["gpt-4", "claude-3-sonnet"] \}'Parameters:
- access_group: str - The access group name (URL path parameter)
- model_names: List[str] - New list of model groups to include
Mengembalikan:
- NewModelGroupResponse with the updated access group details
Raises:
- HTTPException 400: If any model names don’t exist
- HTTPException 404: If access group not found
Parameters:
access_group(path, Required) — Tidak ada deskripsi.
06. [POST] /model/delete
Summary: Delete Model
Authorization: Global Admin Only
Allows deleting models in the model list in the config.yaml
07. [GET] /model/info
Summary: Information Model V1
Authorization: Global Admin Only
Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)
Parameters:
litellm_model_id: Optional[str] = None (this is the value of x-litellm-model-id returned in response headers)
- When litellm_model_id is passed, it will return the info for that specific model
- When litellm_model_id is not passed, it will return the info for all models
Mengembalikan: Returns a dictionary containing information about each model.
Example Response:
\{ "data": [ \{ "model_name": "fake-openai-endpoint", "litellm_params": \{ "api_base": "https://exampleopenaiendpoint-production.up.railway.app/", "model": "openai/fake" \}, "model_info": \{ "id": "112f74fab24a7a5245d2ced3536dd8f5f9192c57ee6e332af0f0512e08bed5af", "db_model": false \} \} ]\}Parameters:
litellm_model_id(query, Optional) — Tidak ada deskripsi.
08. [POST] /model/new
Summary: Listkan Model Baru
Authorization: Global Admin Only
Allows adding new models to the model list in the config.yaml
09. [POST] /model/update
Summary: Update Model
Authorization: Global Admin Only
Edit existing model params
10. [PATCH] /model/{model_id}/update
Summary: Patch Parameter Model
Authorization: Global Admin Only
PATCH Endpoint for partial model updates.
Only updates the fields specified in the request while preserving other existing values. Follows proper PATCH semantics by only modifying provided fields.
Args: model_id: The ID of the model to update patch_data: The fields to update and their new values user_api_key_dict: User authentication information
Mengembalikan: Updated model information
Raises: ProxyException: For various error conditions including authentication and database errors
Parameters:
model_id(path, Required) — Tidak ada deskripsi.
11. [GET] /models
Summary: List Seluruh Model
Authorization: Global Admin Only
Use /model/info - to get detailed model information, example - pricing, mode, etc.
This is just for compatibility with openai projects like aider.
Query Parameters:
- include_metadata: Include additional metadata in the response with fallback information
- fallback_type: Type of fallbacks to include (“general”, “context_window”, “content_policy”) Defaults to “general” when include_metadata=true
- scope: Optional scope parameter. Currently only accepts “expand”. When scope=expand is passed, proxy admins, team admins, and org admins will receive all proxy models as if they are a proxy admin.
Parameters:
return_wildcard_routes(query, Optional) — Tidak ada deskripsi.team_id(query, Optional) — Tidak ada deskripsi.include_model_access_groups(query, Optional) — Tidak ada deskripsi.only_model_access_groups(query, Optional) — Tidak ada deskripsi.include_metadata(query, Optional) — Tidak ada deskripsi.fallback_type(query, Optional) — Tidak ada deskripsi.scope(query, Optional) — Tidak ada deskripsi.
12. [GET] /models/{model_id}
Summary: Mencankan Information Model
Authorization: Global Admin Only
Mengambil information about a specific model accessible to your API key.
Returns model details only if the model is available to your API key/team. Returns 404 if the model doesn’t exist or is not accessible.
Follows OpenAI API specification for individual model retrieval. https://platform.openai.com/docs/api-reference/models/retrieve
Parameters:
model_id(path, Required) — Tidak ada deskripsi.
13. [POST] /models/{model_name}:countTokens
Summary: Menghitung Token Google Vertex
Authorization: Global Admin Only
return \{ "totalTokens": 31, "totalBillableCharacters": 96, "promptTokensDetails": [ \{ "modality": "TEXT", "tokenCount": 31 \} ]\}Parameters:
model_name(path, Required) — Tidak ada deskripsi.
14. [POST] /models/{model_name}:generateContent
Summary: Menghasilkan Konten Google Vertex
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
model_name(path, Required) — Tidak ada deskripsi.
15. [POST] /models/{model_name}:streamGenerateContent
Summary: Streaming Konten Google Vertex
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
model_name(path, Required) — Tidak ada deskripsi.
16. [POST] /team/model/add
Summary: Menambahkan Akses Model ke Tim
Authorization: Team Admin Allowed
Add models to a team’s allowed model list. Only proxy admin or team admin can add models.
Parameters:
- team_id: str - Required. The team to add models to
- models: List[str] - Required. List of models to add to the team
Example Request:
curl --location 'https://api.koboillm.com/team/model/add' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "team_id": "team-1234", "models": ["gpt-4", "claude-2"]\}'17. [POST] /team/model/delete
Summary: Delete Akses Model dari Tim
Authorization: Team Admin Allowed
Remove models from a team’s allowed model list. Only proxy admin or team admin can remove models.
Parameters:
- team_id: str - Required. The team to remove models from
- models: List[str] - Required. List of models to remove from the team
Example Request:
curl --location 'https://api.koboillm.com/team/model/delete' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "team_id": "team-1234", "models": ["gpt-4"]\}'18. [GET] /v1/access_group/{access_group_id}
Summary: Mencankan Information Access Group
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
access_group_id(path, Required) — Tidak ada deskripsi.
19. [PUT] /v1/access_group/{access_group_id}
Summary: Update Access Group
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
access_group_id(path, Required) — Tidak ada deskripsi.
20. [DELETE] /v1/access_group/{access_group_id}
Summary: Delete Access Group
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
access_group_id(path, Required) — Tidak ada deskripsi.
21. [GET] /v1/model/info
Summary: Information Model V1
Authorization: Global Admin Only
Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)
Parameters:
litellm_model_id: Optional[str] = None (this is the value of x-litellm-model-id returned in response headers)
- When litellm_model_id is passed, it will return the info for that specific model
- When litellm_model_id is not passed, it will return the info for all models
Mengembalikan: Returns a dictionary containing information about each model.
Example Response:
\{ "data": [ \{ "model_name": "fake-openai-endpoint", "litellm_params": \{ "api_base": "https://exampleopenaiendpoint-production.up.railway.app/", "model": "openai/fake" \}, "model_info": \{ "id": "112f74fab24a7a5245d2ced3536dd8f5f9192c57ee6e332af0f0512e08bed5af", "db_model": false \} \} ]\}Parameters:
litellm_model_id(query, Optional) — Tidak ada deskripsi.
22. [GET] /v1/models
Summary: List Seluruh Model
Authorization: Global Admin Only
Use /model/info - to get detailed model information, example - pricing, mode, etc.
This is just for compatibility with openai projects like aider.
Query Parameters:
- include_metadata: Include additional metadata in the response with fallback information
- fallback_type: Type of fallbacks to include (“general”, “context_window”, “content_policy”) Defaults to “general” when include_metadata=true
- scope: Optional scope parameter. Currently only accepts “expand”. When scope=expand is passed, proxy admins, team admins, and org admins will receive all proxy models as if they are a proxy admin.
Parameters:
return_wildcard_routes(query, Optional) — Tidak ada deskripsi.team_id(query, Optional) — Tidak ada deskripsi.include_model_access_groups(query, Optional) — Tidak ada deskripsi.only_model_access_groups(query, Optional) — Tidak ada deskripsi.include_metadata(query, Optional) — Tidak ada deskripsi.fallback_type(query, Optional) — Tidak ada deskripsi.scope(query, Optional) — Tidak ada deskripsi.
23. [GET] /v1/models/{model_id}
Summary: Mencankan Information Model
Authorization: Global Admin Only
Mengambil information about a specific model accessible to your API key.
Returns model details only if the model is available to your API key/team. Returns 404 if the model doesn’t exist or is not accessible.
Follows OpenAI API specification for individual model retrieval. https://platform.openai.com/docs/api-reference/models/retrieve
Parameters:
model_id(path, Required) — Tidak ada deskripsi.
24. [POST] /v1beta/models/{model_name}:countTokens
Summary: Menghitung Token Google Vertex
Authorization: Global Admin Only
return \{ "totalTokens": 31, "totalBillableCharacters": 96, "promptTokensDetails": [ \{ "modality": "TEXT", "tokenCount": 31 \} ]\}Parameters:
model_name(path, Required) — Tidak ada deskripsi.
25. [POST] /v1beta/models/{model_name}:generateContent
Summary: Menghasilkan Konten Google Vertex
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
model_name(path, Required) — Tidak ada deskripsi.
26. [POST] /v1beta/models/{model_name}:streamGenerateContent
Summary: Streaming Konten Google Vertex
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
model_name(path, Required) — Tidak ada deskripsi.
📦 Manajemen Tim & Organisasi
Menampilkan total 30 endpoint untuk modul ini.
01. [GET] /config/pass_through_endpoint/team/{team_id}
Summary: Mencankan Pass-Through Endpoints
Authorization: Global Admin Only
GET configured pass through endpoint.
If no endpoint_id given, return all configured endpoints.
Parameters:
team_id(path, Required) — Tidak ada deskripsi.endpoint_id(query, Optional) — Tidak ada deskripsi.
02. [GET] /organization/daily/activity
Summary: Mencankan Aktivitas Harian Organisasi
Authorization: Global Admin Only
Get daily activity for specific organizations or all accessible organizations.
Parameters:
organization_ids(query, Optional) — Tidak ada deskripsi.start_date(query, Optional) — Tidak ada deskripsi.end_date(query, Optional) — Tidak ada deskripsi.model(query, Optional) — Tidak ada deskripsi.api_key(query, Optional) — Tidak ada deskripsi.page(query, Optional) — Tidak ada deskripsi.page_size(query, Optional) — Tidak ada deskripsi.exclude_organization_ids(query, Optional) — Tidak ada deskripsi.
03. [DELETE] /organization/delete
Summary: Delete Organisasi
Authorization: Global Admin Only
Delete an organization
Parameters:
- organization_ids: List[str] - The organization ids to delete.
04. [GET] /organization/info
Summary: Mencankan Information Organisasi
Authorization: Global Admin Only
Get the org specific information
Parameters:
organization_id(query, Required) — Tidak ada deskripsi.
05. [POST] /organization/info
Summary: Mencankan Information Organisasi (Deprecated)
Authorization: Global Admin Only
DEPRECATED: Use GET /organization/info instead
06. [GET] /organization/list
Summary: List Semua Organisasi
Authorization: Global Admin Only
Get a list of organizations with optional filtering.
Parameters: org_id: Optional[str] Filter organizations by exact organization_id match org_alias: Optional[str] Filter organizations by partial organization_alias match (case-insensitive)
Example:
curl --location --request GET 'https://api.koboillm.com/organization/list?org_alias=my-org' --header 'Authorization: Bearer sk-xxxxxx'Example with org_id:
curl --location --request GET 'https://api.koboillm.com/organization/list?org_id=123e4567-e89b-12d3-a456-426614174000' --header 'Authorization: Bearer sk-xxxxxx'Parameters:
org_id(query, Optional) — Filter organizations by exact organization_id matchorg_alias(query, Optional) — Filter organizations by partial organization_alias match. Supports case-insensitive search.
07. [POST] /organization/member_add
Summary: Menambahkan Anggota Organisasi
Authorization: Global Admin Only
Create user konsol baru.
08. [DELETE] /organization/member_delete
Summary: Delete Anggota Organisasi
Authorization: Global Admin Only
Delete a member from an organization
09. [PATCH] /organization/member_update
Summary: Update Anggota Organisasi
Authorization: Global Admin Only
Update a member’s role in an organization
10. [POST] /organization/new
Summary: Create Organisasi Baru
Authorization: Global Admin Only
Allow orgs to own teams
Set org level budgets + model access.
Only admins can create orgs.
Parameters
- organization_alias: str - The name of the organization.
- models: List - The models the organization has access to.
- budget_id: Optional[str] - The id for a budget (tpm/rpm/max budget) for the organization.
IF NO BUDGET ID - CREATE ONE WITH THESE PARAMS
- max_budget: Optional[float] - Max budget for org
- tpm_limit: Optional[int] - Max tpm limit for org
- rpm_limit: Optional[int] - Max rpm limit for org
- model_rpm_limit: Optional[Dict[str, int]] - The RPM (Requests Per Minute) limit per model for this organization.
- model_tpm_limit: Optional[Dict[str, int]] - The TPM (Tokens Per Minute) limit per model for this organization.
- max_parallel_requests: Optional[int] - [Not Implemented Yet] Max parallel requests for org
- soft_budget: Optional[float] - [Not Implemented Yet] Get a slack alert when this soft budget is reached. Don’t block requests.
- model_max_budget: Optional[dict] - Max budget for a specific model
- budget_duration: Optional[str] - Frequency of reseting org budget
- metadata: Optional[dict] - Metadata for organization, store information for organization. Example metadata - {“extra_info”: “some info”}
- blocked: bool - Flag indicating if the org is blocked or not - will stop all calls from keys with this org_id.
- tags: Optional[List[str]] - Tags for tracking spend and/or doing tag-based routing.
- organization_id: Optional[str] - The organization id of the team. Default is None. Create via
/organization/new. - model_aliases: Optional[dict] - Model aliases for the team. Docs
- object_permission: Optional[LiteLLM_ObjectPermissionBase] - organization-specific object permission. Example - {“vector_stores”: [“vector_store_1”, “vector_store_2”]}. IF null or {} then no object permission. Case 1: Create new org without a budget_id
curl --location 'https://api.koboillm.com/organization/new'--header 'Authorization: Bearer sk-xxxxxx'--header 'Content-Type: application/json'--data '\{ "organization_alias": "my-secret-org", "models": ["model1", "model2"], "max_budget": 100\}'Case 2: Create new org with a budget_id
curl --location 'https://api.koboillm.com/organization/new'--header 'Authorization: Bearer sk-xxxxxx'--header 'Content-Type: application/json'--data '\{ "organization_alias": "my-secret-org", "models": ["model1", "model2"], "budget_id": "428eeaa8-f3ac-4e85-a8fb-7dc8d7aa8689"\}'11. [PATCH] /organization/update
Summary: Update Information Organisasi
Authorization: Global Admin Only
Update an organization
12. [GET] /team/available
Summary: List Tim yang Tersedia
Authorization: Global Admin Only
Tidak ada deskripsi tambahan.
Parameters:
response_model(query, Optional) — Tidak ada deskripsi.
13. [POST] /team/block
Summary: Memblokir Akses Tim
Authorization: Global Admin Only
Blocks all calls from keys with this team id.
Parameters:
- team_id: str - Required. The unique identifier of the team to block.
Example:
curl --location 'https://api.koboillm.com/team/block' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "team_id": "team-1234"\}'Mengembalikan:
- The updated team record with blocked=True
14. [POST] /team/bulk_member_add
Summary: Menambahkan Anggota Tim Secara Massal
Authorization: Global Admin Only
Menambahkan anggota baru ke tim atau organisasi.
15. [GET] /team/daily/activity
Summary: Mencankan Aktivitas Harian Tim
Authorization: Team Admin Allowed
Get daily activity for specific teams or all teams.
Args: team_ids (Optional[str]): Comma-separated list of team IDs to filter by. If not provided, returns data for all teams. start_date (Optional[str]): Start date for the activity period (YYYY-MM-DD). end_date (Optional[str]): End date for the activity period (YYYY-MM-DD). model (Optional[str]): Filter by model name. api_key (Optional[str]): Filter by API key. page (int): Page number for pagination. page_size (int): Number of items per page. exclude_team_ids (Optional[str]): Comma-separated list of team IDs to exclude. Mengembalikan: SpendAnalyticsPaginatedResponse: Paginated response containing daily activity data.
Parameters:
team_ids(query, Optional) — Tidak ada deskripsi.start_date(query, Optional) — Tidak ada deskripsi.end_date(query, Optional) — Tidak ada deskripsi.model(query, Optional) — Tidak ada deskripsi.api_key(query, Optional) — Tidak ada deskripsi.page(query, Optional) — Tidak ada deskripsi.page_size(query, Optional) — Tidak ada deskripsi.exclude_team_ids(query, Optional) — Tidak ada deskripsi.
16. [POST] /team/delete
Summary: Delete Tim
Authorization: Global Admin Only
Delete tim secara permanen.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
17. [GET] /team/info
Summary: Mencankan Information Detil Tim
Authorization: Team Admin Allowed
get info on team + related keys
Parameters:
- team_id: str - Required. The unique identifier of the team to get info on.
curl --location 'https://api.koboillm.com/team/info?team_id=your_team_id_here' --header 'Authorization: Bearer your_api_key_here'Parameters:
team_id(query, Optional) — Team ID in the request parameters
18. [GET] /team/list
Summary: List Semua Tim
Authorization: Global Admin Only
curl --location --request GET 'https://api.koboillm.com/team/list' --header 'Authorization: Bearer sk-xxxxxx'Parameters:
- user_id: str - Optional. If passed will only return teams that the user_id is a member of.
- organization_id: str - Optional. If passed will only return teams that belong to the organization_id. Pass ‘default_organization’ to get all teams without organization_id.
Parameters:
user_id(query, Optional) — Only return teams which this ‘user_id’ belongs toorganization_id(query, Optional) — Tidak ada deskripsi.
19. [POST] /team/member_add
Summary: Menambahkan Anggota Tim
Authorization: Team Admin Allowed
Create user konsol baru.
20. [POST] /team/member_delete
Summary: Delete Anggota Tim
Authorization: Team Admin Allowed
[BETA]
delete members (either via user_email or user_id) from a team
If user doesn’t exist, an exception will be raised
curl -X POST 'https://api.koboillm.com:8000/team/member_delete'-H 'Authorization: Bearer sk-xxxxxx'-H 'Content-Type: application/json'-d '\{ "team_id": "45e3e396-ee08-4a61-a88e-16b3ce7e0849", "user_id": "krrish247652@berri.ai"\}'21. [POST] /team/member_update
Summary: Update Anggota Tim
Authorization: Team Admin Allowed
[BETA]
Update team member budgets and team member role
22. [POST] /team/new
Summary: Create Tim Baru
Authorization: Global Admin Only
Create tim baru.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
23. [GET] /team/permissions_list
Summary: Mencankan Izin Anggota Tim
Authorization: Global Admin Only
Get the team member permissions for a team
Parameters:
team_id(query, Optional) — Team ID in the request parameters
24. [POST] /team/permissions_update
Summary: Update Izin Anggota Tim
Authorization: Global Admin Only
Update the team member permissions for a team
25. [POST] /team/unblock
Summary: Membuka Blokir Akses Tim
Authorization: Global Admin Only
Blocks all calls from keys with this team id.
Parameters:
- team_id: str - Required. The unique identifier of the team to unblock.
Example:
curl --location 'https://api.koboillm.com/team/unblock' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "team_id": "team-1234"\}'26. [POST] /team/update
Summary: Update Information Tim
Authorization: Global Admin Only
Create tim baru.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
27. [POST] /team/{team_id}/callback
Summary: Menambahkan Webhook Callback Tim
Authorization: Global Admin Only
Add a success/failure callback to a team
Use this if if you want different teams to have different success/failure callbacks
Parameters:
- callback_name (Literal[“langfuse”, “langsmith”, “gcs”], required): The name of the callback to add
- callback_type (Literal[“success”, “failure”, “success_and_failure”], required): The type of callback to add. One of:
- “success”: Callback for successful LLM calls
- “failure”: Callback for failed LLM calls
- “success_and_failure”: Callback for both successful and failed LLM calls
- callback_vars (StandardCallbackDynamicParams, required): A dictionary of variables to pass to the callback
- langfuse_public_key: The public key for the Langfuse callback
- langfuse_secret_key: The secret key for the Langfuse callback
- langfuse_secret: The secret for the Langfuse callback
- langfuse_host: The host for the Langfuse callback
- gcs_bucket_name: The name of the GCS bucket
- gcs_path_service_account: The path to the GCS service account
- langsmith_api_key: The API key for the Langsmith callback
- langsmith_project: The project for the Langsmith callback
- langsmith_base_url: The base URL for the Langsmith callback
Example curl:
curl -X POST 'http:/api.koboillm.com/team/dbe2f686-a686-4896-864a-4c3924458709/callback' -H 'Content-Type: application/json' -H 'Authorization: Bearer sk-xxxxxx' -d '\{ "callback_name": "langfuse", "callback_type": "success", "callback_vars": \{"langfuse_public_key": "pk-lf-xxxx1", "langfuse_secret_key": "sk-xxxxxx"\}
\}'This means for the team where team_id = dbe2f686-a686-4896-864a-4c3924458709, all LLM calls will be logged to langfuse using the public key pk-lf-xxxx1 and the secret key sk-xxxxxx
Parameters:
team_id(path, Required) — Tidak ada deskripsi.litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
28. [GET] /team/{team_id}/callback
Summary: Mencankan Webhook Callback Tim
Authorization: Global Admin Only
Get the success/failure callbacks and variables for a team
Parameters:
- team_id (str, required): The unique identifier for the team
Example curl:
curl -X GET 'https://api.koboillm.com/team/dbe2f686-a686-4896-864a-4c3924458709/callback' -H 'Authorization: Bearer sk-xxxxxx'This will return the callback settings for the team with id dbe2f686-a686-4896-864a-4c3924458709
Returns { “status”: “success”, “data”: { “team_id”: team_id, “success_callbacks”: team_callback_settings_obj.success_callback, “failure_callbacks”: team_callback_settings_obj.failure_callback, “callback_vars”: team_callback_settings_obj.callback_vars, }, }
Parameters:
team_id(path, Required) — Tidak ada deskripsi.
29. [POST] /team/{team_id}/disable_logging
Summary: Menonaktifkan Logging Konten Tim
Authorization: Global Admin Only
Disable all logging callbacks for a team
Parameters:
- team_id (str, required): The unique identifier for the team
Example curl:
curl -X POST 'https://api.koboillm.com/team/dbe2f686-a686-4896-864a-4c3924458709/disable_logging' -H 'Authorization: Bearer sk-xxxxxx'Parameters:
team_id(path, Required) — Tidak ada deskripsi.
30. [GET] /v2/team/list
Summary: List Semua Tim V2
Authorization: Global Admin Only
Get a paginated list of teams with filtering and sorting options.
Parameters: user_id: Optional[str] Only return teams which this user belongs to organization_id: Optional[str] Only return teams which belong to this organization team_id: Optional[str] Filter teams by exact team_id match team_alias: Optional[str] Filter teams by partial team_alias match page: int The page number to return page_size: int The number of items per page sort_by: Optional[str] Column to sort by (e.g. ‘team_id’, ‘team_alias’, ‘created_at’) sort_order: str Sort order (‘asc’ or ‘desc’) status: Optional[str] Filter by status. Currently supports “deleted” to query deleted teams.
Parameters:
user_id(query, Optional) — Only return teams which this ‘user_id’ belongs toorganization_id(query, Optional) — Only return teams which this ‘organization_id’ belongs toteam_id(query, Optional) — Only return teams which this ‘team_id’ belongs toteam_alias(query, Optional) — Only return teams which this ‘team_alias’ belongs to. Supports partial matching.page(query, Optional) — Page number for paginationpage_size(query, Optional) — Number of teams per pagesort_by(query, Optional) — Column to sort by (e.g. ‘team_id’, ‘team_alias’, ‘created_at’)sort_order(query, Optional) — Sort order (‘asc’ or ‘desc’)status(query, Optional) — Filter by status (e.g. ‘deleted’)
📦 Manajemen Budget & Pengeluaran
Menampilkan total 14 endpoint untuk modul ini.
01. [POST] /budget/delete
Summary: Delete Budget
Authorization: Global Admin Only
Delete konfigurasi budget.
02. [POST] /budget/info
Summary: Mencankan Information Budget
Authorization: Global Admin Only
Get the budget id specific information
Parameters:
- budgets: List[str] - The list of budget ids to get information for
03. [GET] /budget/list
Summary: List Semua Budget
Authorization: Global Admin Only
List all the created budgets in proxy db. Used on Admin UI.
04. [POST] /budget/new
Summary: Create Budget Baru
Authorization: Global Admin Only
Create budget harian/bulanan baru.
05. [GET] /budget/settings
Summary: Pengaturan Budget
Authorization: Global Admin Only
Get list of configurable params + current value for a budget item + description of each field
Used on Admin UI.
Query Parameters:
- budget_id: str - The budget id to get information for
Parameters:
budget_id(query, Required) — Tidak ada deskripsi.
06. [POST] /budget/update
Summary: Update Parameter Budget
Authorization: Global Admin Only
Update an existing budget object.
Parameters:
- budget_duration: Optional[str] - Budget reset period (“30d”, “1h”, etc.)
- budget_id: Optional[str] - The id of the budget. If not provided, a new id will be generated.
- max_budget: Optional[float] - The max budget for the budget.
- soft_budget: Optional[float] - The soft budget for the budget.
- max_parallel_requests: Optional[int] - The max number of parallel requests for the budget.
- tpm_limit: Optional[int] - The tokens per minute limit for the budget.
- rpm_limit: Optional[int] - The requests per minute limit for the budget.
- model_max_budget: Optional[dict] - Specify max budget for a given model. Example: {“openai/gpt-4o-mini”: {“max_budget”: 100.0, “budget_duration”: “1d”, “tpm_limit”: 100000, “rpm_limit”: 100000}}
- budget_reset_at: Optional[datetime] - Update the Datetime when the budget was last reset.
07. [GET] /global/spend/report
Summary: Mencankan Laporan Pengeluaran Global
Authorization: Global Admin Only
Get Daily Spend per Team, based on specific startTime and endTime. Per team, view usage by each key, model [ { “group-by-day”: “2024-05-10”, “teams”: [ { “team_name”: “team-1” “spend”: 10, “keys”: [ “key”: “1213”, “usage”: { “model-1”: { “cost”: 12.50, “input_tokens”: 1000, “output_tokens”: 5000, “requests”: 100 }, “audio-modelname1”: { “cost”: 25.50, “seconds”: 25, “requests”: 50 }, } } ] ] }
Parameters:
start_date(query, Optional) — Time from which to start viewing spendend_date(query, Optional) — Time till which to view spendgroup_by(query, Optional) — Group spend by internal team or customer or api_keyapi_key(query, Optional) — View spend for a specific api_key. Example api_key=‘sk-xxxxxxinternal_user_id(query, Optional) — View spend for a specific internal_user_id. Example internal_user_id=‘1234team_id(query, Optional) — View spend for a specific team_id. Example team_id=‘1234customer_id(query, Optional) — View spend for a specific customer_id. Example customer_id=‘1234. Can be used in conjunction with team_id as well.
08. [POST] /global/spend/reset
Summary: Mereset Pengeluaran Global
Authorization: Global Admin Only
ADMIN ONLY / MASTER KEY Only Endpoint
Globally reset spend for All API Keys and Teams, maintain LiteLLM_SpendLogs
- LiteLLM_SpendLogs will maintain the logs on spend, no data gets deleted from there
- LiteLLM_VerificationTokens spend will be set = 0
- LiteLLM_TeamTable spend will be set = 0
09. [GET] /global/spend/tags
Summary: Melihat Tag Pengeluaran Global
Authorization: Global Admin Only
LiteLLM Enterprise - View Spend Per Request Tag. Used by LiteLLM UI
Example Request:
curl -X GET "https://api.koboillm.com/spend/tags" -H "Authorization: Bearer sk-xxxxxx"Spend with Start Date and End Date
curl -X GET "https://api.koboillm.com/spend/tags?start_date=2022-01-01&end_date=2022-02-01" -H "Authorization: Bearer sk-xxxxxx"Parameters:
start_date(query, Optional) — Time from which to start viewing key spendend_date(query, Optional) — Time till which to view key spendtags(query, Optional) — comman separated tags to filter on
10. [GET] /provider/budgets
Summary: Mencankan Budget Cloud Provider
Authorization: Global Admin Only
Provider Budget Routing - Get Budget, Spend Details https://docs.litellm.ai/docs/proxy/provider_budget_routing
Use this endpoint to check current budget, spend and budget reset time for a provider
Example Request
curl -X GET https://api.koboillm.com/provider/budgets -H "Content-Type: application/json" -H "Authorization: Bearer sk-xxxxxx"Example Response
\{ "providers": \{ "openai": \{ "budget_limit": 1e-12, "time_period": "1d", "spend": 0.0, "budget_reset_at": null \}, "azure": \{ "budget_limit": 100.0, "time_period": "1d", "spend": 0.0, "budget_reset_at": null \}, "anthropic": \{ "budget_limit": 100.0, "time_period": "10d", "spend": 0.0, "budget_reset_at": null \}, "vertex_ai": \{ "budget_limit": 100.0, "time_period": "12d", "spend": 0.0, "budget_reset_at": null \} \}\}11. [POST] /spend/calculate
Summary: Menghitung Estimasi Pengeluaran
Authorization: Global Admin Only
Accepts all the params of completion_cost.
Calculate spend before making call:
Note: If you see a spend of $0.0 you need to set custom_pricing for your model: https://docs.litellm.ai/docs/proxy/custom_pricing
curl --location 'https://api.koboillm.com/spend/calculate'--header 'Authorization: Bearer sk-xxxxxx'--header 'Content-Type: application/json'--data '\{ "model": "anthropic.claude-v2", "messages": [\{"role": "user", "content": "Hey, how'''s it going?"\}]\}'Calculate spend after making call:
curl --location 'https://api.koboillm.com/spend/calculate'--header 'Authorization: Bearer sk-xxxxxx'--header 'Content-Type: application/json'--data '\{ "completion_response": \{ "id": "chatcmpl-123", "object": "chat.completion", "created": 1677652288, "model": "gpt-3.5-turbo-0125", "system_fingerprint": "fp_44709d6fcb", "choices": [\{ "index": 0, "message": \{ "role": "assistant", "content": "Hello there, how may I assist you today?" \}, "logprobs": null, "finish_reason": "stop" \}] "usage": \{ "prompt_tokens": 9, "completion_tokens": 12, "total_tokens": 21 \} \}\}'12. [GET] /spend/logs
Summary: Melihat Log Riwayat Transaksi
Authorization: Team Admin Allowed
[DEPRECATED] This endpoint is not paginated and can cause performance issues.
Please use /spend/logs/v2 instead for paginated access to spend logs.
View all spend logs, if request_id is provided, only logs for that request_id will be returned
When start_date and end_date are provided:
- summarize=true (default): Returns aggregated spend data grouped by date (maintains backward compatibility)
- summarize=false: Returns filtered individual log entries within the date range
Example Request for all logs
curl -X GET "https://api.koboillm.com:8000/spend/logs" -H "Authorization: Bearer sk-xxxxxx"Example Request for specific request_id
curl -X GET "https://api.koboillm.com:8000/spend/logs?request_id=chatcmpl-6dcb2540-d3d7-4e49-bb27-291f863f112e" -H "Authorization: Bearer sk-xxxxxx"Example Request for specific api_key
curl -X GET "https://api.koboillm.com:8000/spend/logs?api_key=sk-xxxxxx" -H "Authorization: Bearer sk-xxxxxx"Example Request for specific user_id
curl -X GET "https://api.koboillm.com:8000/spend/logs?user_id=ishaan@berri.ai" -H "Authorization: Bearer sk-xxxxxx"Example Request for date range with individual logs (unsummarized)
curl -X GET "https://api.koboillm.com:8000/spend/logs?start_date=2024-01-01&end_date=2024-01-02&summarize=false" -H "Authorization: Bearer sk-xxxxxx"Parameters:
api_key(query, Optional) — Get spend logs based on api keyuser_id(query, Optional) — Get spend logs based on user_idrequest_id(query, Optional) — request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requestsstart_date(query, Optional) — Time from which to start viewing key spendend_date(query, Optional) — Time till which to view key spendsummarize(query, Optional) — When start_date and end_date are provided, summarize=true returns aggregated data by date (legacy behavior), summarize=false returns filtered individual logs
13. [GET] /spend/logs/v2
Summary: Melihat Log Transaksi Konsol UI
Authorization: Team Admin Allowed
Menarik data log transaksi real-time pengeluaran token dan cost.
Parameters:
api_key(query, Optional) — Get spend logs based on api keyuser_id(query, Optional) — Get spend logs based on user_idrequest_id(query, Optional) — request_id to get spend logs for specific request_idteam_id(query, Optional) — Filter spend logs by team_idmin_spend(query, Optional) — Filter logs with spend greater than or equal to this valuemax_spend(query, Optional) — Filter logs with spend less than or equal to this valuestart_date(query, Optional) — Time from which to start viewing key spendend_date(query, Optional) — Time till which to view key spendpage(query, Optional) — Page number for paginationpage_size(query, Optional) — Number of items per pagestatus_filter(query, Optional) — Filter logs by status (e.g., success, failure)model(query, Optional) — Filter logs by modelmodel_id(query, Optional) — Filter logs by model ID (litellm model deployment id)key_alias(query, Optional) — Filter logs by key aliasend_user(query, Optional) — Filter logs by end usererror_code(query, Optional) — Filter logs by error code (e.g., ‘404’, ‘500’)error_message(query, Optional) — Filter logs by error message (partial string match)sort_by(query, Optional) — Sort logs by field: spend, total_tokens, startTime, or endTimesort_order(query, Optional) — Sort order: asc or desc
14. [GET] /spend/tags
Summary: Melihat Tag Riwayat Transaksi
Authorization: Global Admin Only
LiteLLM Enterprise - View Spend Per Request Tag
Example Request:
curl -X GET "https://api.koboillm.com:8000/spend/tags" -H "Authorization: Bearer sk-xxxxxx"Spend with Start Date and End Date
curl -X GET "https://api.koboillm.com:8000/spend/tags?start_date=2022-01-01&end_date=2022-02-01" -H "Authorization: Bearer sk-xxxxxx"Parameters:
start_date(query, Optional) — Time from which to start viewing key spendend_date(query, Optional) — Time till which to view key spend
📦 Administrasi Pengguna & Konsol
Menampilkan total 16 endpoint untuk modul ini.
01. [GET] /scim/v2/Users
Summary: List Semua User SCIM
Authorization: Global Admin Only
Get a list of users according to SCIM v2 protocol
Parameters:
startIndex(query, Optional) — Tidak ada deskripsi.count(query, Optional) — Tidak ada deskripsi.filter(query, Optional) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
02. [POST] /scim/v2/Users
Summary: Create User Baru SCIM
Authorization: Global Admin Only
Create a user according to SCIM v2 protocol
Parameters:
feature(query, Optional) — Tidak ada deskripsi.
03. [GET] /scim/v2/Users/{user_id}
Summary: Mencankan Information User SCIM
Authorization: Global Admin Only
Get a single user by ID according to SCIM v2 protocol
Parameters:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
04. [PUT] /scim/v2/Users/{user_id}
Summary: Update User SCIM
Authorization: Global Admin Only
Update a user according to SCIM v2 protocol (full replacement)
Parameters:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
05. [DELETE] /scim/v2/Users/{user_id}
Summary: Delete User SCIM
Authorization: Global Admin Only
Delete a user according to SCIM v2 protocol
Parameters:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
06. [PATCH] /scim/v2/Users/{user_id}
Summary: Patch Parameter User SCIM
Authorization: Global Admin Only
Patch a user according to SCIM v2 protocol
Parameters:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
07. [GET] /tag/user-agent/per-user-analytics
Summary: Mencankan Analitik Per-User
Authorization: Global Admin Only
Get per-user analytics including successful requests, tokens, and spend by individual users.
This endpoint provides usage metrics broken down by individual users based on their tag activity during the last 30 days ending on UTC today + 1 day.
Args: tag_filter: Optional filter to specific tag (legacy) tag_filters: Optional filter to multiple specific tags (takes precedence over tag_filter) page: Page number for pagination page_size: Number of items per page
Mengembalikan: PerUserAnalyticsResponse: Analytics data broken down by individual users for the last 30 days
Parameters:
tag_filter(query, Optional) — Filter by specific tag (optional)tag_filters(query, Optional) — Filter by multiple specific tags (optional, takes precedence over tag_filter)page(query, Optional) — Page number for paginationpage_size(query, Optional) — Items per page
08. [GET] /user/available_users
Summary: List User Enterprise yang Tersedia
Authorization: Global Admin Only
For keys with max_users set, return the list of users that are allowed to use the key.
09. [POST] /user/bulk_update
Summary: Update User Secara Massal
Authorization: Global Admin Only
Bulk update multiple users at once.
This endpoint allows updating multiple users in a single request. Each user update is processed independently - if some updates fail, others will still succeed.
Parameters:
- users: Optional[List[UpdateUserRequest]] - List of specific user update requests
- all_users: Optional[bool] - Set to true to update all users in the system
- user_updates: Optional[UpdateUserRequest] - Update to apply when all_users=True
Mengembalikan:
- results: List of individual update results
- total_requested: Total number of users requested for update
- successful_updates: Number of successful updates
- failed_updates: Number of failed updates
Example request for specific users:
curl --location 'https://api.koboillm.com/user/bulk_update' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "users": [ \{ "user_id": "user1", "user_role": "internal_user", "max_budget": 100.0 \}, \{ "user_email": "user2@example.com", "user_role": "internal_user_viewer", "max_budget": 50.0 \} ]\}'Example request for all users:
curl --location 'https://api.koboillm.com/user/bulk_update' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "all_users": true, "user_updates": \{ "user_role": "internal_user", "max_budget": 50.0 \}\}'Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
10. [GET] /user/daily/activity
Summary: Mencankan Aktivitas Harian User
Authorization: Global Admin Only
[BETA] This is a beta endpoint. It will change.
Meant to optimize querying spend data for analytics for a user.
Mengembalikan: (by date)
- spend
- prompt_tokens
- completion_tokens
- cache_read_input_tokens
- cache_creation_input_tokens
- total_tokens
- api_requests
- breakdown by model, api_key, provider
Parameters:
start_date(query, Optional) — Start date in YYYY-MM-DD formatend_date(query, Optional) — End date in YYYY-MM-DD formatmodel(query, Optional) — Filter by specific modelapi_key(query, Optional) — Filter by specific API keyuser_id(query, Optional) — Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id.page(query, Optional) — Page number for paginationpage_size(query, Optional) — Items per pagetimezone(query, Optional) — Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript’s Date.getTimezoneOffset() convention.
11. [GET] /user/daily/activity/aggregated
Summary: Mencankan Akumulasi Aktivitas Harian User
Authorization: Global Admin Only
Aggregated analytics for a user’s daily activity without pagination. Returns the same response shape as the paginated endpoint with page metadata set to single-page.
Parameters:
start_date(query, Optional) — Start date in YYYY-MM-DD formatend_date(query, Optional) — End date in YYYY-MM-DD formatmodel(query, Optional) — Filter by specific modelapi_key(query, Optional) — Filter by specific API keyuser_id(query, Optional) — Filter by specific user ID. Admins can filter by any user or omit for global view. Non-admins must provide their own user_id.timezone(query, Optional) — Timezone offset in minutes from UTC (e.g., 480 for PST). Matches JavaScript’s Date.getTimezoneOffset() convention.
12. [POST] /user/delete
Summary: Delete User SCIM
Authorization: Global Admin Only
Delete user konsol.
Parameters:
litellm-changed-by(header, Optional) — The litellm-changed-by header enables tracking of actions performed by authorized users on behalf of other users, providing an audit trail for accountability
13. [GET] /user/info
Summary: Mencankan Information Detil User
Authorization: Global Admin Only
Mencankan detil profil user.
Parameters:
user_id(query, Optional) — User ID in the request parameters
14. [GET] /user/list
Summary: List Semua User SCIM
Authorization: Global Admin Only
Get a paginated list of users with filtering and sorting options.
Parameters: role: Optional[str] Filter users by role. Can be one of:
- proxy_admin
- proxy_admin_viewer
- internal_user
- internal_user_viewer user_ids: Optional[str] Get list of users by user_ids. Comma separated list of user_ids. sso_ids: Optional[str] Get list of users by sso_ids. Comma separated list of sso_ids. user_email: Optional[str] Filter users by partial email match team: Optional[str] Filter users by team id. Will match if user has this team in their teams array. page: int The page number to return page_size: int The number of items per page sort_by: Optional[str] Column to sort by (e.g. ‘user_id’, ‘user_email’, ‘created_at’, ‘spend’) sort_order: Optional[str] Sort order (‘asc’ or ‘desc’)
Parameters:
role(query, Optional) — Filter users by roleuser_ids(query, Optional) — Get list of users by user_idssso_user_ids(query, Optional) — Get list of users by sso_user_iduser_email(query, Optional) — Filter users by partial email matchteam(query, Optional) — Filter users by team idpage(query, Optional) — Page numberpage_size(query, Optional) — Number of items per pagesort_by(query, Optional) — Column to sort by (e.g. ‘user_id’, ‘user_email’, ‘created_at’, ‘spend’)sort_order(query, Optional) — Sort order (‘asc’ or ‘desc’)
15. [POST] /user/new
Summary: Create User Konsol Baru
Authorization: Global Admin Only
Create user konsol baru.
16. [POST] /user/update
Summary: Update Information User
Authorization: Global Admin Only
Example curl
curl --location 'https://api.koboillm.com/user/update' --header 'Authorization: Bearer sk-xxxxxx' --header 'Content-Type: application/json' --data '\{ "user_id": "test-litellm-user-4", "user_role": "proxy_admin_viewer"\}'Parameters:
- user_id: Optional[str] - Specify a user id. If not set, a unique id will be generated.
- user_email: Optional[str] - Specify a user email.
- password: Optional[str] - Specify a user password.
- user_alias: Optional[str] - A descriptive name for you to know who this user id refers to.
- teams: Optional[list] - specify a list of team id’s a user belongs to.
- send_invite_email: Optional[bool] - Specify if an invite email should be sent.
- user_role: Optional[str] - Specify a user role - “proxy_admin”, “proxy_admin_viewer”, “internal_user”, “internal_user_viewer”, “team”, “customer”. Info about each role here:
https://github.com/BerriAI/litellm/litellm/proxy/_types.py#L20 - max_budget: Optional[float] - Specify max budget for a given user.
- budget_duration: Optional[str] - Budget is reset at the end of specified duration. If not set, budget is never reset. You can set duration as seconds (”30s”), minutes (“30m”), hours (“30h”), days (“30d”), months (“1mo”).
- models: Optional[list] - Model_name’s a user is allowed to call. (if empty, key is allowed to call all models)
- tpm_limit: Optional[int] - Specify tpm limit for a given user (Tokens per minute)
- rpm_limit: Optional[int] - Specify rpm limit for a given user (Requests per minute)
- auto_create_key: bool - Default=True. Flag used for returning a key as part of the /user/new response
- aliases: Optional[dict] - Model aliases for the user - Docs
- config: Optional[dict] - [DEPRECATED PARAM] User-specific config.
- allowed_cache_controls: Optional[list] - List of allowed cache control values. Example - [“no-cache”, “no-store”]. See all values - https://docs.litellm.ai/docs/proxy/caching#turn-on—off-caching-per-request-
- blocked: Optional[bool] - [Not Implemented Yet] Whether the user is blocked.
- guardrails: Optional[List[str]] - [Not Implemented Yet] List of active guardrails for the user
- policies: Optional[List[str]] - List of policy names to apply to the user. Policies define guardrails, conditions, and inheritance rules.
- permissions: Optional[dict] - [Not Implemented Yet] User-specific permissions, eg. turning off pii masking.
- metadata: Optional[dict] - Metadata for user, store information for user. Example metadata = {“team”: “core-infra”, “app”: “app2”, “email”: “ishaan@berri.ai” }
- max_parallel_requests: Optional[int] - Rate limit a user based on the number of parallel requests. Raises 429 error, if user’s parallel requests > x.
- soft_budget: Optional[float] - Get alerts when user crosses given budget, doesn’t block requests.
- model_max_budget: Optional[dict] - Model-specific max budget for user. Docs
- model_rpm_limit: Optional[float] - Model-specific rpm limit for user. Docs
- model_tpm_limit: Optional[float] - Model-specific tpm limit for user. Docs
- spend: Optional[float] - Amount spent by user. Default is 0. Will be updated by proxy whenever user is used. You can set duration as seconds (”30s”), minutes (“30m”), hours (“30h”), days (“30d”), months (“1mo”).
- agent_id: Optional[str] - The agent id associated with the user.
- team_id: Optional[str] - [DEPRECATED PARAM] The team id of the user. Default is None.
- duration: Optional[str] - [NOT IMPLEMENTED].
- key_alias: Optional[str] - [NOT IMPLEMENTED].
- object_permission: Optional[LiteLLM_ObjectPermissionBase] - internal user-specific object permission. Example - {“vector_stores”: [“vector_store_1”, “vector_store_2”]}. IF null or {} then no object permission.
- prompts: Optional[List[str]] - List of allowed prompts for the user. If specified, the user will only be able to use these specific prompts.