PATCH
/api/v1/api-keys/{keyId}/budgetSet or remove an API key's monthly budget cap
Sets the per-key monthly USD budget cap. Pass monthlyBudgetUsd as a number to set the cap, or null to remove it (unlimited). Admin role required. monthlyBudgetUsd is required (the key must be present in the body, even if null).
Authentication
Send Authorization: Bearer YOUR_API_KEY on every request. Generate API keys at /dashboard/api-keys.
Request body required
Example
{
"monthlyBudgetUsd": 0
}Schema
{
"application/json": {
"schema": {
"type": "object",
"required": [
"monthlyBudgetUsd"
],
"properties": {
"monthlyBudgetUsd": {
"type": "number",
"minimum": 0,
"maximum": 1000000,
"nullable": true,
"description": "Number sets the cap (0..1,000,000); null removes it. 400 MISSING_BUDGET if the key is absent."
}
}
}
}
}Response
200 example
{
"success": true
}All status codes
200Budget updated.
400(no description)
401(no description)
403Forbidden — admin role required.
404(no description)
429(no description)
Code samples
cURL
curl -X PATCH \
https://evalguard.ai/api/v1/api-keys/{keyId}/budget \
-H "Authorization: Bearer $EVALGUARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "monthlyBudgetUsd": 0 }'TypeScript
import { EvalGuard } from "@evalguard/sdk";
const client = new EvalGuard({ apiKey: process.env.EVALGUARD_API_KEY });
const response = await client.request({
method: "PATCH",
path: "/api/v1/api-keys/{keyId}/budget",
body: {
"monthlyBudgetUsd": 0
},
});
console.log(response);Python
from evalguard import EvalGuard
import os
client = EvalGuard(api_key=os.environ["EVALGUARD_API_KEY"])
response = client.request(
method="PATCH",
path="/api/v1/api-keys/{keyId}/budget",
body={
"monthlyBudgetUsd": 0
},
)
print(response)Go
package main
import (
"context"
"fmt"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{"monthlyBudgetUsd":0}`)
req, _ := http.NewRequestWithContext(context.Background(), "PATCH", "https://evalguard.ai/api/v1/api-keys/{keyId}/budget", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("EVALGUARD_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil { panic(err) }
defer resp.Body.Close()
fmt.Println(resp.Status)
}Errors
400401403404429