Skip to main content
PATCH
https://api.keywordsai.co
/
api
/
users
/
<customer_identifier>
import requests

url = "https://api.keywordsai.co/api/users/user_123/"
headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
payload = {"period_budget": 200.0, "metadata": {"plan": "pro"}}

resp = requests.patch(url, headers=headers, json=payload)
print(resp.json())
{
  "id": 12345,
  "customer_identifier": "user_123",
  "unique_organization_id": "8264a3f4-40c7-476a-97d1-96908127ea21",
  "email": "[email protected]",
  "name": "John Doe",
  "environment": "prod",
  "organization": 456,
  "period_budget": 200.0,
  "budget_duration": "monthly",
  "total_period_usage": 45.67,
  "period_start": "2025-12-01T00:00:00Z",
  "period_end": null,
  "total_budget": null,
  "total_usage": 523.45,
  "total_requests": 15420,
  "total_prompt_tokens": 125000,
  "total_completion_tokens": 45000,
  "total_tokens": 170000,
  "total_cache_hits": 234,
  "average_latency": 1.23,
  "average_ttft": 0.45,
  "average_monthly_cost": 67.89,
  "top_models": {},
  "last_active": "2025-12-29T10:30:00Z",
  "created_at": "2025-10-15T08:00:00Z",
  "updated_at": "2025-12-29T10:30:00Z",
  "metadata": {
    "plan": "pro"
  },
  "markup_percentage": 0.0,
  "is_test": false,
  "blurred": null,
  "organization_key": null
}
Updates an existing customer. Use this to change budgets or contact info.

Authentication

Public API: use an API key.
  • Authorization: Bearer YOUR_API_KEY (public API)

Path params

customer_identifier
string
required
Your unique identifier for this customer.

POST params

You can add these params to the body:
url = "https://api.keywordsai.co/api/users/user_123/"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}
data = {
    "period_budget": 200.0,
    "metadata": {"plan": "pro"},
}
response = requests.patch(url, headers=headers, json=data)
email
string
Customer email address.
name
string
Customer display name.
metadata
object
Custom metadata associated with this customer (optional).
period_budget
number
Budget for the current period in USD. Set to null to remove the budget limit.
budget_duration
string
Budget renewal period. Options: daily, weekly, monthly.
total_budget
number
Total all-time budget limit across all periods (optional).
markup_percentage
number
Markup percentage applied to this customer’s usage (optional).

Request example

import requests

url = "https://api.keywordsai.co/api/users/user_123/"
headers = {"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json"}
payload = {"period_budget": 200.0, "metadata": {"plan": "pro"}}

resp = requests.patch(url, headers=headers, json=payload)
print(resp.json())

Response

Returns the updated customer object (same structure as the GET detail endpoint).
{
  "id": 12345,
  "customer_identifier": "user_123",
  "unique_organization_id": "8264a3f4-40c7-476a-97d1-96908127ea21",
  "email": "[email protected]",
  "name": "John Doe",
  "environment": "prod",
  "organization": 456,
  "period_budget": 200.0,
  "budget_duration": "monthly",
  "total_period_usage": 45.67,
  "period_start": "2025-12-01T00:00:00Z",
  "period_end": null,
  "total_budget": null,
  "total_usage": 523.45,
  "total_requests": 15420,
  "total_prompt_tokens": 125000,
  "total_completion_tokens": 45000,
  "total_tokens": 170000,
  "total_cache_hits": 234,
  "average_latency": 1.23,
  "average_ttft": 0.45,
  "average_monthly_cost": 67.89,
  "top_models": {},
  "last_active": "2025-12-29T10:30:00Z",
  "created_at": "2025-10-15T08:00:00Z",
  "updated_at": "2025-12-29T10:30:00Z",
  "metadata": {
    "plan": "pro"
  },
  "markup_percentage": 0.0,
  "is_test": false,
  "blurred": null,
  "organization_key": null
}
To remove a budget limit, set period_budget to null.