Skip to content

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 number
  • size (query, Optional) — Page size
  • search (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:

Terminal window
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:

Terminal window
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:

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

Terminal window
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 number
  • size (query, Optional) — Page size
  • user_id (query, Optional) — Filter keys by user ID
  • team_id (query, Optional) — Filter keys by team ID
  • organization_id (query, Optional) — Filter keys by organization ID
  • key_hash (query, Optional) — Filter keys by key hash
  • key_alias (query, Optional) — Filter keys by key alias
  • return_full_object (query, Optional) — Return full key object
  • include_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 user
  • sort_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 ID
  • access_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:

Terminal window
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:

Terminal window
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/indexes endpoint.
  • 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:

Terminal window
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:

Terminal window
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:

Terminal window
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:

Terminal window
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:

Terminal window
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:

Terminal window
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:

  1. Remove the access group from all current deployments
  2. Add the access group to all deployments for the new model_names list

Example:

Terminal window
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 match
  • org_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
Terminal window
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

Terminal window
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 to
  • organization_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 to
  • organization_id (query, Optional) — Only return teams which this ‘organization_id’ belongs to
  • team_id (query, Optional) — Only return teams which this ‘team_id’ belongs to
  • team_alias (query, Optional) — Only return teams which this ‘team_alias’ belongs to. Supports partial matching.
  • page (query, Optional) — Page number for pagination
  • page_size (query, Optional) — Number of teams per page
  • sort_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 spend
  • end_date (query, Optional) — Time till which to view spend
  • group_by (query, Optional) — Group spend by internal team or customer or api_key
  • api_key (query, Optional) — View spend for a specific api_key. Example api_key=‘sk-xxxxxx
  • internal_user_id (query, Optional) — View spend for a specific internal_user_id. Example internal_user_id=‘1234
  • team_id (query, Optional) — View spend for a specific team_id. Example team_id=‘1234
  • customer_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

  1. LiteLLM_SpendLogs will maintain the logs on spend, no data gets deleted from there
  2. LiteLLM_VerificationTokens spend will be set = 0
  3. 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 spend
  • end_date (query, Optional) — Time till which to view key spend
  • tags (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

Terminal window
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 key
  • user_id (query, Optional) — Get spend logs based on user_id
  • request_id (query, Optional) — request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requests
  • start_date (query, Optional) — Time from which to start viewing key spend
  • end_date (query, Optional) — Time till which to view key spend
  • summarize (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 key
  • user_id (query, Optional) — Get spend logs based on user_id
  • request_id (query, Optional) — request_id to get spend logs for specific request_id
  • team_id (query, Optional) — Filter spend logs by team_id
  • min_spend (query, Optional) — Filter logs with spend greater than or equal to this value
  • max_spend (query, Optional) — Filter logs with spend less than or equal to this value
  • start_date (query, Optional) — Time from which to start viewing key spend
  • end_date (query, Optional) — Time till which to view key spend
  • page (query, Optional) — Page number for pagination
  • page_size (query, Optional) — Number of items per page
  • status_filter (query, Optional) — Filter logs by status (e.g., success, failure)
  • model (query, Optional) — Filter logs by model
  • model_id (query, Optional) — Filter logs by model ID (litellm model deployment id)
  • key_alias (query, Optional) — Filter logs by key alias
  • end_user (query, Optional) — Filter logs by end user
  • error_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 endTime
  • sort_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 spend
  • end_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 pagination
  • page_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:

Terminal window
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:

Terminal window
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 format
  • end_date (query, Optional) — End date in YYYY-MM-DD format
  • model (query, Optional) — Filter by specific model
  • api_key (query, Optional) — Filter by specific API key
  • user_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 pagination
  • page_size (query, Optional) — Items per page
  • timezone (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 format
  • end_date (query, Optional) — End date in YYYY-MM-DD format
  • model (query, Optional) — Filter by specific model
  • api_key (query, Optional) — Filter by specific API key
  • user_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 role
  • user_ids (query, Optional) — Get list of users by user_ids
  • sso_user_ids (query, Optional) — Get list of users by sso_user_id
  • user_email (query, Optional) — Filter users by partial email match
  • team (query, Optional) — Filter users by team id
  • page (query, Optional) — Page number
  • page_size (query, Optional) — Number of items per page
  • sort_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.