Update a CometAPI API key by sending the key ID and editable fields in the JSON body.
curl -X PUT https://api.cometapi.com/api/token/ \
-H "Authorization: your-access-token" \
-H "Content-Type: application/json" \
-d '{
"id": 1234,
"name": "production-renamed",
"status": 1,
"expired_time": -1,
"remain_quota": 100000,
"unlimited_quota": false,
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": null,
"group": "",
"cross_group_retry": false
}'{
"success": true,
"message": "",
"data": {
"id": 1234,
"user_id": 5678,
"key": "<COMETAPI_KEY>",
"status": 1,
"name": "production-renamed",
"created_time": 1766102400,
"accessed_time": 1766102400,
"expired_time": -1,
"remain_quota": 100000,
"unlimited_quota": false,
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": null,
"used_quota": 0,
"group": "",
"cross_group_retry": false
}
}Use this endpoint to update an API key’s name, status, quota, expiration, model restrictions, IP allowlist, and group settings.Documentation Index
Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt
Use this file to discover all available pages before exploring further.
Authorization header value. Do not prefix it with Bearer.PUT /api/token/, and the id belongs in the JSON body. Send the editable fields you want to preserve; omitted numeric, boolean, or string fields can be reset by the update.| Field | Type | Description |
|---|---|---|
id | integer | Required. API key ID returned by List API keys. |
name | string | User-readable display name for the key. Must be 50 characters or fewer. |
status | integer | Operational status. 1 enables the key for model requests. 2 disables it. 3 marks it expired. 4 marks it quota exhausted. Disabled, expired, or exhausted keys are rejected by model endpoints. |
expired_time | integer | Unix timestamp in seconds when the key expires. Use -1 for no expiration. A past timestamp blocks model requests. |
remain_quota | integer | Remaining quota in CometAPI internal quota units. If this reaches 0 and unlimited_quota is false, model requests with this key are rejected as quota exhausted. |
unlimited_quota | boolean | Whether the key bypasses remaining-quota checks. Set true only when the key should keep working even if remain_quota is 0. |
model_limits_enabled | boolean | Whether to restrict this key to specific models. When false, model_limits is ignored. |
model_limits | string | Comma-separated model IDs allowed by this key when model_limits_enabled is true. Use model IDs returned by /v1/models; use an empty string for no model restriction. |
allow_ips | string or null | Optional IP allowlist. Provide one JSON string with entries separated by newline characters (\n). Each entry can be a single IPv4 address, single IPv6 address, IPv4 CIDR, or IPv6 CIDR. Use null or "" to disable IP restrictions. |
group | string | Optional account group restriction. Use an empty string for no explicit group. Non-empty values must be available to the account, or the API returns success: false. |
cross_group_retry | boolean | Whether cross-group retry is enabled for automatic group routing. This is only meaningful when the key uses an auto-routed group. |
\n between entries:
{
"allow_ips": "198.51.100.10\n203.0.113.0/24\n2001:db8::/32"
}
Personal access token copied from CometAPI Console > Personal Settings. Send the raw token value; do not prefix it with Bearer.
Numeric API key ID returned by the list endpoint. For updates, send this value in the JSON body, not in the URL.
1234
User-readable display name for the API key. The backend accepts up to 50 Unicode characters; longer names return success: false with token name is too long.
50"production"
Operational status for the key. 1 enables the key for model requests, 2 disables it, 3 marks it expired, and 4 marks it quota exhausted. Disabled, expired, or exhausted keys are rejected by model endpoints.
1, 2, 3, 4 1
Unix timestamp in seconds when the key expires. Use -1 for no expiration. A past timestamp blocks model requests with this key.
-1
Remaining quota to assign to the key in CometAPI internal quota units. If this reaches 0 while unlimited_quota is false, model requests with this key are rejected as quota exhausted.
100000
Whether the key bypasses remaining-quota checks. Set true only when the key should keep working even if remain_quota is 0.
false
Whether to restrict this key to specific models. When true, only model IDs listed in model_limits are allowed. When false, model_limits is ignored.
false
Comma-separated model IDs allowed by this key when model_limits_enabled is true. Use model IDs returned by /v1/models, for example <model-id-1>,<model-id-2>. Use an empty string for no model restriction.
""
Optional IP allowlist. Provide one JSON string with entries separated by newline characters (\n). Each entry can be a single IPv4 address, single IPv6 address, IPv4 CIDR, or IPv6 CIDR. Example for three allowlist entries: 198.51.100.10\n203.0.113.0/24\n2001:db8::/32. CometAPI compares the model request client IP to this list. Use null or "" to disable IP restrictions.
"198.51.100.10\n203.0.113.0/24\n2001:db8::/32"
Optional account group restriction. Use an empty string for no explicit group restriction. Non-empty values must be available to the account, or the API returns success: false with a no access to group message.
""
Whether cross-group retry is enabled for automatic group routing. This is only meaningful when the key uses an auto-routed group such as auto.
false
curl -X PUT https://api.cometapi.com/api/token/ \
-H "Authorization: your-access-token" \
-H "Content-Type: application/json" \
-d '{
"id": 1234,
"name": "production-renamed",
"status": 1,
"expired_time": -1,
"remain_quota": 100000,
"unlimited_quota": false,
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": null,
"group": "",
"cross_group_retry": false
}'{
"success": true,
"message": "",
"data": {
"id": 1234,
"user_id": 5678,
"key": "<COMETAPI_KEY>",
"status": 1,
"name": "production-renamed",
"created_time": 1766102400,
"accessed_time": 1766102400,
"expired_time": -1,
"remain_quota": 100000,
"unlimited_quota": false,
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": null,
"used_quota": 0,
"group": "",
"cross_group_retry": false
}
}