API Management - Referensi Lengkap
Dokumen ini menyediakan referensi teknis lengkap dan detail untuk seluruh 100 endpoint manajemen yang diekspos oleh API Gateway KoboiLLM. Di setiap endpoint, kami mencantumkan metode, path, parameter, serta tingkat kewenangan (Global Admin Only vs. Team Admin Allowed). Semua contoh kunci yang tercantum menggunakan kunci dummy (sk-xxxxxx).
📦 Manajemen Virtual Key
Menampilkan total 14 endpoint untuk modul ini.
01. [GET] /key/aliases
Ringkasan: Mendaftar Alias Virtual Key
Wewenang: Global Admin Only
Mendaftar alias key dengan paginasi dan pencarian opsional.
Parameter:
page(query, Optional) — Page numbersize(query, Optional) — Page sizesearch(query, Optional) — Search key aliases (case-insensitive partial match)
02. [POST] /key/block
Ringkasan: Memblokir Virtual Key
Wewenang: Team Admin Allowed
Block an Virtual key from making any requests.
Parameter:
- 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.
Parameter:
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
Ringkasan: Pembaruan Massal Virtual Key
Wewenang: 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.
Parameter:
- keys: Mendaftar[BulkMemperbaruiKeyRequestItem] - Mendaftar 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[Mendaftar[str]] - Tags for organizing keys
Mengembalikan:
- total_requested: int - Total number of keys requested for update
- successful_updates: Mendaftar[SuccessfulKeyMemperbarui] - Mendaftar of successfully updated keys with their updated info
- failed_updates: Mendaftar[FailedKeyMemperbarui] - Mendaftar 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"] \} ]\}'Parameter:
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
Ringkasan: Menghapus Virtual Key
Wewenang: Team Admin Allowed
Menghapus a key from the key management system.
Parameter::
- keys (Mendaftar[str]): A list of keys or hashed keys to delete. Example {“keys”: [“sk-xxxxxx”, “837e17519f44683334df5291321d97b8bf1098cd490e49e215f6fea935aa28be”]}
- key_aliases (Mendaftar[str]): A list of key aliases to delete. Can be passed instead of
keys.Example {“key_aliases”: [“alias1”, “alias2”]}
Mengembalikan:
- deleted_keys (Mendaftar[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.
Parameter:
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
Ringkasan: Membuat Virtual Key
Wewenang: Team Admin Allowed
Membuat Virtual Key baru untuk tim atau user.
Parameter:
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
Ringkasan: Memeriksa Kesehatan Key
Wewenang: 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
Ringkasan: Informasi Detil Virtual Key
Wewenang: Team Admin Allowed
Mengambil rincian informasi, batas budget, dan status pengeluaran Virtual Key.
Parameter:
key(query, Optional) — Key in the request parameters
08. [GET] /key/list
Ringkasan: Mendaftar Semua Virtual Key
Wewenang: Global Admin Only
Mendaftar seluruh Virtual Key yang terdaftar di server.
Parameter:
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
Ringkasan: Rotasi / Regenerasi Virtual Key
Wewenang: Global Admin Only
Regenerate an existing API key while optionally updating its parameters.
Parameter:
- 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[Mendaftar[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] - Mendaftar of allowed cache control values
- duration: Optional[str] - Key validity duration (“30d”, “1h”, etc.)
- permissions: Optional[dict] - Key-specific permissions
- guardrails: Optional[Mendaftar[str]] - Mendaftar 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.
Parameter:
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
Ringkasan: Membuat Key Service Account GCP
Wewenang: Global Admin Only
Membuat Virtual Key baru untuk tim atau user.
Parameter:
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
Ringkasan: Membuka Blokir Virtual Key
Wewenang: Team Admin Allowed
Unblock a Virtual key to allow it to make requests again.
Parameter:
- 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.
Parameter:
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
Ringkasan: Memperbarui Parameter Virtual Key
Wewenang: Team Admin Allowed
Memperbarui an existing API key’s parameters.
Parameter:
- 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. Membuatd by calling
/budget/new. - models: Optional[list] - Model_name’s a user is allowed to call
- tags: Optional[Mendaftar[str]] - Tags for organizing keys (Enterprise only)
- prompts: Optional[Mendaftar[str]] - Mendaftar of prompts that the key is allowed to use.
- enforced_params: Optional[Mendaftar[str]] - Mendaftar 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] - Mendaftar 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[Mendaftar[str]] - Mendaftar of active guardrails for the key
- policies: Optional[Mendaftar[str]] - Mendaftar 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[Mendaftar[str]] - Mendaftar 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] - Mendaftar 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] - Mendaftar 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[Mendaftar[str]] - Mendaftar 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[Mendaftar[dict]] - Mendaftar 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. Membuat index, using
/v1/indexesendpoint. - router_settings: Optional[MemperbaruiRouterConfig] - key-specific router settings. Example - {“model_group_retry_policy”: {“max_retries”: 5}}. IF null or {} then no router settings.
- access_group_ids: Optional[Mendaftar[str]] - Mendaftar 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"\},\}'Parameter:
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
Ringkasan: Rotasi / Regenerasi Virtual Key
Wewenang: Global Admin Only
Regenerate an existing API key while optionally updating its parameters.
Parameter:
- 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[Mendaftar[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] - Mendaftar of allowed cache control values
- duration: Optional[str] - Key validity duration (“30d”, “1h”, etc.)
- permissions: Optional[dict] - Key-specific permissions
- guardrails: Optional[Mendaftar[str]] - Mendaftar 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.
Parameter:
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
Ringkasan: Mereset Pengeluaran Virtual Key
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
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
Ringkasan: Mendaftar Semua Access Group
Wewenang: Global Admin Only
Mendaftar 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:
- MendaftarAccessGroupsResponse with all access groups
02. [POST] /access_group/new
Ringkasan: Membuat Model Group Baru
Wewenang: Global Admin Only
Membuat 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"] \}'Parameter:
- access_group: str - The access group name (e.g., “production-models”)
- model_names: Mendaftar[str] - Mendaftar 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
Ringkasan: Menghapus Access Group
Wewenang: Global Admin Only
Menghapus 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'Parameter:
- access_group: str - The access group name (URL path parameter)
Mengembalikan:
- MenghapusModelGroupResponse with deletion details
Raises:
- HTTPException 404: If access group not found
Parameter:
access_group(path, Required) — Tidak ada deskripsi.
04. [GET] /access_group/{access_group}/info
Ringkasan: Mendapatkan Informasi Access Group
Wewenang: 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'Parameter:
- 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
Parameter:
access_group(path, Required) — Tidak ada deskripsi.
05. [PUT] /access_group/{access_group}/update
Ringkasan: Memperbarui Access Group
Wewenang: Global Admin Only
Memperbarui 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"] \}'Parameter:
- access_group: str - The access group name (URL path parameter)
- model_names: Mendaftar[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
Parameter:
access_group(path, Required) — Tidak ada deskripsi.
06. [POST] /model/delete
Ringkasan: Menghapus Model
Wewenang: Global Admin Only
Allows deleting models in the model list in the config.yaml
07. [GET] /model/info
Ringkasan: Informasi Model V1
Wewenang: Global Admin Only
Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)
Parameter:
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 \} \} ]\}Parameter:
litellm_model_id(query, Optional) — Tidak ada deskripsi.
08. [POST] /model/new
Ringkasan: Mendaftarkan Model Baru
Wewenang: Global Admin Only
Allows adding new models to the model list in the config.yaml
09. [POST] /model/update
Ringkasan: Memperbarui Model
Wewenang: Global Admin Only
Edit existing model params
10. [PATCH] /model/{model_id}/update
Ringkasan: Patch Parameter Model
Wewenang: 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: Memperbaruid model information
Raises: ProxyException: For various error conditions including authentication and database errors
Parameter:
model_id(path, Required) — Tidak ada deskripsi.
11. [GET] /models
Ringkasan: Mendaftar Seluruh Model
Wewenang: 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 Parameter:
- 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.
Parameter:
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}
Ringkasan: Mendapatkan Informasi Model
Wewenang: 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
Parameter:
model_id(path, Required) — Tidak ada deskripsi.
13. [POST] /models/{model_name}:countTokens
Ringkasan: Menghitung Token Google Vertex
Wewenang: Global Admin Only
return \{ "totalTokens": 31, "totalBillableCharacters": 96, "promptTokensDetails": [ \{ "modality": "TEXT", "tokenCount": 31 \} ]\}Parameter:
model_name(path, Required) — Tidak ada deskripsi.
14. [POST] /models/{model_name}:generateContent
Ringkasan: Menghasilkan Konten Google Vertex
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
model_name(path, Required) — Tidak ada deskripsi.
15. [POST] /models/{model_name}:streamGenerateContent
Ringkasan: Streaming Konten Google Vertex
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
model_name(path, Required) — Tidak ada deskripsi.
16. [POST] /team/model/add
Ringkasan: Menambahkan Akses Model ke Tim
Wewenang: Team Admin Allowed
Add models to a team’s allowed model list. Only proxy admin or team admin can add models.
Parameter:
- team_id: str - Required. The team to add models to
- models: Mendaftar[str] - Required. Mendaftar 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
Ringkasan: Menghapus Akses Model dari Tim
Wewenang: Team Admin Allowed
Remove models from a team’s allowed model list. Only proxy admin or team admin can remove models.
Parameter:
- team_id: str - Required. The team to remove models from
- models: Mendaftar[str] - Required. Mendaftar 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}
Ringkasan: Mendapatkan Informasi Access Group
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
access_group_id(path, Required) — Tidak ada deskripsi.
19. [PUT] /v1/access_group/{access_group_id}
Ringkasan: Memperbarui Access Group
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
access_group_id(path, Required) — Tidak ada deskripsi.
20. [DELETE] /v1/access_group/{access_group_id}
Ringkasan: Menghapus Access Group
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
access_group_id(path, Required) — Tidak ada deskripsi.
21. [GET] /v1/model/info
Ringkasan: Informasi Model V1
Wewenang: Global Admin Only
Provides more info about each model in /models, including config.yaml descriptions (except api key and api base)
Parameter:
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 \} \} ]\}Parameter:
litellm_model_id(query, Optional) — Tidak ada deskripsi.
22. [GET] /v1/models
Ringkasan: Mendaftar Seluruh Model
Wewenang: 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 Parameter:
- 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.
Parameter:
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}
Ringkasan: Mendapatkan Informasi Model
Wewenang: 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
Parameter:
model_id(path, Required) — Tidak ada deskripsi.
24. [POST] /v1beta/models/{model_name}:countTokens
Ringkasan: Menghitung Token Google Vertex
Wewenang: Global Admin Only
return \{ "totalTokens": 31, "totalBillableCharacters": 96, "promptTokensDetails": [ \{ "modality": "TEXT", "tokenCount": 31 \} ]\}Parameter:
model_name(path, Required) — Tidak ada deskripsi.
25. [POST] /v1beta/models/{model_name}:generateContent
Ringkasan: Menghasilkan Konten Google Vertex
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
model_name(path, Required) — Tidak ada deskripsi.
26. [POST] /v1beta/models/{model_name}:streamGenerateContent
Ringkasan: Streaming Konten Google Vertex
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
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}
Ringkasan: Mendapatkan Pass-Through Endpoints
Wewenang: Global Admin Only
GET configured pass through endpoint.
If no endpoint_id given, return all configured endpoints.
Parameter:
team_id(path, Required) — Tidak ada deskripsi.endpoint_id(query, Optional) — Tidak ada deskripsi.
02. [GET] /organization/daily/activity
Ringkasan: Mendapatkan Aktivitas Harian Organisasi
Wewenang: Global Admin Only
Get daily activity for specific organizations or all accessible organizations.
Parameter:
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
Ringkasan: Menghapus Organisasi
Wewenang: Global Admin Only
Menghapus an organization
Parameter:
- organization_ids: Mendaftar[str] - The organization ids to delete.
04. [GET] /organization/info
Ringkasan: Mendapatkan Informasi Organisasi
Wewenang: Global Admin Only
Get the org specific information
Parameter:
organization_id(query, Required) — Tidak ada deskripsi.
05. [POST] /organization/info
Ringkasan: Mendapatkan Informasi Organisasi (Deprecated)
Wewenang: Global Admin Only
DEPRECATED: Use GET /organization/info instead
06. [GET] /organization/list
Ringkasan: Mendaftar Semua Organisasi
Wewenang: Global Admin Only
Get a list of organizations with optional filtering.
Parameter: 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'Parameter:
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
Ringkasan: Menambahkan Anggota Organisasi
Wewenang: Global Admin Only
Membuat user konsol baru.
08. [DELETE] /organization/member_delete
Ringkasan: Menghapus Anggota Organisasi
Wewenang: Global Admin Only
Menghapus a member from an organization
09. [PATCH] /organization/member_update
Ringkasan: Memperbarui Anggota Organisasi
Wewenang: Global Admin Only
Memperbarui a member’s role in an organization
10. [POST] /organization/new
Ringkasan: Membuat Organisasi Baru
Wewenang: 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: Mendaftar - 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[Mendaftar[str]] - Tags for tracking spend and/or doing tag-based routing.
- organization_id: Optional[str] - The organization id of the team. Default is None. Membuat 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: Membuat 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: Membuat 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
Ringkasan: Memperbarui Informasi Organisasi
Wewenang: Global Admin Only
Memperbarui an organization
12. [GET] /team/available
Ringkasan: Mendaftar Tim yang Tersedia
Wewenang: Global Admin Only
Tidak ada deskripsi tambahan.
Parameter:
response_model(query, Optional) — Tidak ada deskripsi.
13. [POST] /team/block
Ringkasan: Memblokir Akses Tim
Wewenang: Global Admin Only
Blocks all calls from keys with this team id.
Parameter:
- 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
Ringkasan: Menambahkan Anggota Tim Secara Massal
Wewenang: Global Admin Only
Menambahkan anggota baru ke tim atau organisasi.
15. [GET] /team/daily/activity
Ringkasan: Mendapatkan Aktivitas Harian Tim
Wewenang: 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.
Parameter:
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
Ringkasan: Menghapus Tim
Wewenang: Global Admin Only
Menghapus tim secara permanen.
Parameter:
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
Ringkasan: Mendapatkan Informasi Detil Tim
Wewenang: Team Admin Allowed
get info on team + related keys
Parameter:
- 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'Parameter:
team_id(query, Optional) — Team ID in the request parameters
18. [GET] /team/list
Ringkasan: Mendaftar Semua Tim
Wewenang: Global Admin Only
curl --location --request GET 'https://api.koboillm.com/team/list' --header 'Authorization: Bearer sk-xxxxxx'Parameter:
- 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.
Parameter:
user_id(query, Optional) — Only return teams which this ‘user_id’ belongs toorganization_id(query, Optional) — Tidak ada deskripsi.
19. [POST] /team/member_add
Ringkasan: Menambahkan Anggota Tim
Wewenang: Team Admin Allowed
Membuat user konsol baru.
20. [POST] /team/member_delete
Ringkasan: Menghapus Anggota Tim
Wewenang: 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
Ringkasan: Memperbarui Anggota Tim
Wewenang: Team Admin Allowed
[BETA]
Memperbarui team member budgets and team member role
22. [POST] /team/new
Ringkasan: Membuat Tim Baru
Wewenang: Global Admin Only
Membuat tim baru.
Parameter:
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
Ringkasan: Mendapatkan Izin Anggota Tim
Wewenang: Global Admin Only
Get the team member permissions for a team
Parameter:
team_id(query, Optional) — Team ID in the request parameters
24. [POST] /team/permissions_update
Ringkasan: Memperbarui Izin Anggota Tim
Wewenang: Global Admin Only
Memperbarui the team member permissions for a team
25. [POST] /team/unblock
Ringkasan: Membuka Blokir Akses Tim
Wewenang: Global Admin Only
Blocks all calls from keys with this team id.
Parameter:
- 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
Ringkasan: Memperbarui Informasi Tim
Wewenang: Global Admin Only
Membuat tim baru.
Parameter:
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
Ringkasan: Menambahkan Webhook Callback Tim
Wewenang: 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
Parameter:
- 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
Parameter:
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
Ringkasan: Mendapatkan Webhook Callback Tim
Wewenang: Global Admin Only
Get the success/failure callbacks and variables for a team
Parameter:
- 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, }, }
Parameter:
team_id(path, Required) — Tidak ada deskripsi.
29. [POST] /team/{team_id}/disable_logging
Ringkasan: Menonaktifkan Logging Konten Tim
Wewenang: Global Admin Only
Disable all logging callbacks for a team
Parameter:
- 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'Parameter:
team_id(path, Required) — Tidak ada deskripsi.
30. [GET] /v2/team/list
Ringkasan: Mendaftar Semua Tim V2
Wewenang: Global Admin Only
Get a paginated list of teams with filtering and sorting options.
Parameter: 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.
Parameter:
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
Ringkasan: Menghapus Budget
Wewenang: Global Admin Only
Menghapus konfigurasi budget.
02. [POST] /budget/info
Ringkasan: Mendapatkan Informasi Budget
Wewenang: Global Admin Only
Get the budget id specific information
Parameter:
- budgets: Mendaftar[str] - The list of budget ids to get information for
03. [GET] /budget/list
Ringkasan: Mendaftar Semua Budget
Wewenang: Global Admin Only
Mendaftar all the created budgets in proxy db. Used on Admin UI.
04. [POST] /budget/new
Ringkasan: Membuat Budget Baru
Wewenang: Global Admin Only
Membuat budget harian/bulanan baru.
05. [GET] /budget/settings
Ringkasan: Pengaturan Budget
Wewenang: Global Admin Only
Get list of configurable params + current value for a budget item + description of each field
Used on Admin UI.
Query Parameter:
- budget_id: str - The budget id to get information for
Parameter:
budget_id(query, Required) — Tidak ada deskripsi.
06. [POST] /budget/update
Ringkasan: Memperbarui Parameter Budget
Wewenang: Global Admin Only
Memperbarui an existing budget object.
Parameter:
- 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] - Memperbarui the Datetime when the budget was last reset.
07. [GET] /global/spend/report
Ringkasan: Mendapatkan Laporan Pengeluaran Global
Wewenang: 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 }, } } ] ] }
Parameter:
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
Ringkasan: Mereset Pengeluaran Global
Wewenang: 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
Ringkasan: Melihat Tag Pengeluaran Global
Wewenang: 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"Parameter:
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
Ringkasan: Mendapatkan Budget Cloud Provider
Wewenang: 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
Ringkasan: Menghitung Estimasi Pengeluaran
Wewenang: 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
Ringkasan: Melihat Log Riwayat Transaksi
Wewenang: 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"Parameter:
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
Ringkasan: Melihat Log Transaksi Konsol UI
Wewenang: Team Admin Allowed
Menarik data log transaksi real-time pengeluaran token dan cost.
Parameter:
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
Ringkasan: Melihat Tag Riwayat Transaksi
Wewenang: 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"Parameter:
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
Ringkasan: Mendaftar Semua User SCIM
Wewenang: Global Admin Only
Get a list of users according to SCIM v2 protocol
Parameter:
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
Ringkasan: Membuat User Baru SCIM
Wewenang: Global Admin Only
Membuat a user according to SCIM v2 protocol
Parameter:
feature(query, Optional) — Tidak ada deskripsi.
03. [GET] /scim/v2/Users/{user_id}
Ringkasan: Mendapatkan Informasi User SCIM
Wewenang: Global Admin Only
Get a single user by ID according to SCIM v2 protocol
Parameter:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
04. [PUT] /scim/v2/Users/{user_id}
Ringkasan: Memperbarui User SCIM
Wewenang: Global Admin Only
Memperbarui a user according to SCIM v2 protocol (full replacement)
Parameter:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
05. [DELETE] /scim/v2/Users/{user_id}
Ringkasan: Menghapus User SCIM
Wewenang: Global Admin Only
Menghapus a user according to SCIM v2 protocol
Parameter:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
06. [PATCH] /scim/v2/Users/{user_id}
Ringkasan: Patch Parameter User SCIM
Wewenang: Global Admin Only
Patch a user according to SCIM v2 protocol
Parameter:
user_id(path, Required) — Tidak ada deskripsi.feature(query, Optional) — Tidak ada deskripsi.
07. [GET] /tag/user-agent/per-user-analytics
Ringkasan: Mendapatkan Analitik Per-User
Wewenang: 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
Parameter:
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
Ringkasan: Mendaftar User Enterprise yang Tersedia
Wewenang: 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
Ringkasan: Memperbarui User Secara Massal
Wewenang: 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.
Parameter:
- users: Optional[Mendaftar[MemperbaruiUserRequest]] - Mendaftar of specific user update requests
- all_users: Optional[bool] - Set to true to update all users in the system
- user_updates: Optional[MemperbaruiUserRequest] - Memperbarui to apply when all_users=True
Mengembalikan:
- results: Mendaftar 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 \}\}'Parameter:
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
Ringkasan: Mendapatkan Aktivitas Harian User
Wewenang: 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
Parameter:
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
Ringkasan: Mendapatkan Akumulasi Aktivitas Harian User
Wewenang: 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.
Parameter:
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
Ringkasan: Menghapus User SCIM
Wewenang: Global Admin Only
Menghapus user konsol.
Parameter:
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
Ringkasan: Mendapatkan Informasi Detil User
Wewenang: Global Admin Only
Mendapatkan detil profil user.
Parameter:
user_id(query, Optional) — User ID in the request parameters
14. [GET] /user/list
Ringkasan: Mendaftar Semua User SCIM
Wewenang: Global Admin Only
Get a paginated list of users with filtering and sorting options.
Parameter: 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’)
Parameter:
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
Ringkasan: Membuat User Konsol Baru
Wewenang: Global Admin Only
Membuat user konsol baru.
16. [POST] /user/update
Ringkasan: Memperbarui Informasi User
Wewenang: 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"\}'Parameter:
- 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] - Mendaftar 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[Mendaftar[str]] - [Not Implemented Yet] Mendaftar of active guardrails for the user
- policies: Optional[Mendaftar[str]] - Mendaftar 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[Mendaftar[str]] - Mendaftar of allowed prompts for the user. If specified, the user will only be able to use these specific prompts.