Budgets
List Budgets
Returns budgets visible to the current workspace, ordered by creation time with the newest first. Supports filtering by scope kind, scope target id, period, and active state, plus an optional free-text query that searches across denormalized target names via Typesense.from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.list()
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.list();
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"limit": Optional[int],
"starting_after": Optional[str],
"ending_before": Optional[str],
"scope_kind": List[Literal["BUDGET_SCOPE_KIND_UNSPECIFIED", "BUDGET_SCOPE_KIND_WORKSPACE", "BUDGET_SCOPE_KIND_PROJECT", "BUDGET_SCOPE_KIND_IDENTITY", "BUDGET_SCOPE_KIND_API_KEY", "BUDGET_SCOPE_KIND_PROVIDER", "BUDGET_SCOPE_KIND_MODEL"]], # optional
"scope_target_id": Optional[str],
"is_active": Optional[bool],
"period": List[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]], # optional
"query": Optional[str],
"sort_by": Optional[Literal["BUDGET_SORT_FIELD_UNSPECIFIED", "BUDGET_SORT_FIELD_EXPIRES_AT", "BUDGET_SORT_FIELD_CREATED_AT", "BUDGET_SORT_FIELD_UPDATED_AT"]],
}
{
limit?: number;
startingAfter?: string;
endingBefore?: string;
scopeKind?: ("BUDGET_SCOPE_KIND_UNSPECIFIED" | "BUDGET_SCOPE_KIND_WORKSPACE" | "BUDGET_SCOPE_KIND_PROJECT" | "BUDGET_SCOPE_KIND_IDENTITY" | "BUDGET_SCOPE_KIND_API_KEY" | "BUDGET_SCOPE_KIND_PROVIDER" | "BUDGET_SCOPE_KIND_MODEL")[];
scopeTargetId?: string;
isActive?: boolean;
period?: ("BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME")[];
query?: string;
sortBy?: "BUDGET_SORT_FIELD_UNSPECIFIED" | "BUDGET_SORT_FIELD_EXPIRES_AT" | "BUDGET_SORT_FIELD_CREATED_AT" | "BUDGET_SORT_FIELD_UPDATED_AT";
}
Show Response
Show Response
{
"object": str,
"data": [{
"budget_id": str,
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str,
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": {
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"created_at": date,
"updated_at": date,
"usage": { # optional
"amount": Optional[float],
"tokens": Optional[float],
"requests": Optional[int],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int,
"notifier_ids": List[str],
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
}],
"has_more": Optional[bool],
}
{
object: string;
data: {
budgetId: string;
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string;
};
};
match?: {
cel?: string;
};
limits: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
createdAt: Date;
updatedAt: Date;
usage?: {
amount?: number;
tokens?: number;
requests?: number;
};
alerts?: {
id?: string;
thresholdPercent: number;
notifierIds: string[];
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
}[];
hasMore?: boolean;
}
Create a Budget
Creates a new budget in the workspace. Exactly one scope variant must be set (workspace / project / identity / api_key / provider / model). At least one oflimits.amount, limits.token_limit, or rate_limit.requests_per_minute MUST be provided. Uniqueness is enforced across (workspace_id, scope_kind, scope_target_id).
from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.create()
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.create({});
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str, # required
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": { # optional
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int, # required
"notifier_ids": List[str], # required
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
}
{
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string; // required
};
};
match?: {
cel?: string;
};
limits?: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
alerts?: {
id?: string;
thresholdPercent: number; // required
notifierIds: string[]; // required
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
}
Show Response
Show Response
{
"budget": {
"budget_id": str,
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str,
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": {
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"created_at": date,
"updated_at": date,
"usage": { # optional
"amount": Optional[float],
"tokens": Optional[float],
"requests": Optional[int],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int,
"notifier_ids": List[str],
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
},
}
{
budget: {
budgetId: string;
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string;
};
};
match?: {
cel?: string;
};
limits: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
createdAt: Date;
updatedAt: Date;
usage?: {
amount?: number;
tokens?: number;
requests?: number;
};
alerts?: {
id?: string;
thresholdPercent: number;
notifierIds: string[];
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
};
}
Retrieve a Budget
Retrieves the metadata for an existing budget by its unique identifier. ReturnsNotFound when the budget does not exist in the caller’s workspace.
from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.get(budget_id="<id>")
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.get({
budgetId: "<id>",
});
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"budget_id": str, # required
}
{
budgetId: string; // required
}
Show Response
Show Response
{
"budget": {
"budget_id": str,
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str,
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": {
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"created_at": date,
"updated_at": date,
"usage": { # optional
"amount": Optional[float],
"tokens": Optional[float],
"requests": Optional[int],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int,
"notifier_ids": List[str],
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
},
}
{
budget: {
budgetId: string;
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string;
};
};
match?: {
cel?: string;
};
limits: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
createdAt: Date;
updatedAt: Date;
usage?: {
amount?: number;
tokens?: number;
requests?: number;
};
alerts?: {
id?: string;
thresholdPercent: number;
notifierIds: string[];
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
};
}
Delete a Budget
Permanently deletes a budget. Consumption counters in Redis for this budget are cleared immediately. The response body is empty on success.from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.delete(budget_id="<id>")
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.delete({
budgetId: "<id>",
});
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"budget_id": str, # required
}
{
budgetId: string; // required
}
Update a Budget
Updates mutable fields of a budget: limits, rate limit, activation, and expiration. The scope is immutable: to change a budget’s target, delete and recreate it. Omitted fields keep their current values.from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.update(budget_id="<id>")
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.update({
budgetId: "<id>",
updateBudgetRequest: {},
});
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"budget_id": str, # required
"limits": { # optional
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"clear_expires_at": Optional[bool],
"match": { # optional
"cel": Optional[str],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int, # required
"notifier_ids": List[str], # required
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
"clear_alerts": Optional[bool],
}
{
budgetId: string; // required
updateBudgetRequest: { // required
limits?: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
clearExpiresAt?: boolean;
match?: {
cel?: string;
};
alerts?: {
id?: string;
thresholdPercent: number; // required
notifierIds: string[]; // required
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
clearAlerts?: boolean;
};
}
Show Response
Show Response
{
"budget": {
"budget_id": str,
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str,
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": {
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"created_at": date,
"updated_at": date,
"usage": { # optional
"amount": Optional[float],
"tokens": Optional[float],
"requests": Optional[int],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int,
"notifier_ids": List[str],
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
},
}
{
budget: {
budgetId: string;
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string;
};
};
match?: {
cel?: string;
};
limits: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
createdAt: Date;
updatedAt: Date;
usage?: {
amount?: number;
tokens?: number;
requests?: number;
};
alerts?: {
id?: string;
thresholdPercent: number;
notifierIds: string[];
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
};
}
Reset Consumption
Clears the current-period cost, token, and request counters for the budget. The budget record itself is preserved; only the Redis counters are reset.from orq_ai_sdk import Orq
import os
with Orq(
api_key=os.getenv("ORQ_API_KEY", ""),
) as orq:
res = orq.budgets.reset_consumption(budget_id="<id>", reset_budget_consumption_request={})
# Handle response
print(res)
import { Orq } from "@orq-ai/node";
const orq = new Orq({
apiKey: process.env["ORQ_API_KEY"] ?? "",
});
async function run() {
const result = await orq.budgets.resetConsumption({
budgetId: "<id>",
resetBudgetConsumptionRequest: {},
});
console.log(result);
}
run();
Show Parameters
Show Parameters
{
"budget_id": str, # required
"reset_budget_consumption_request": Dict[str, Any], # required
}
{
budgetId: string; // required
resetBudgetConsumptionRequest: Record<string, unknown>; // required
}
Show Response
Show Response
{
"budget": { # optional
"budget_id": str,
"scope": { # optional
"workspace": Dict[str, Any], # optional
"project": { # optional
"project_id": Optional[str],
},
"identity": { # optional
"identity_external_id": Optional[str],
},
"api_key": { # optional
"api_key_id": Optional[str],
},
"provider": { # optional
"provider": Optional[str],
},
"model": { # optional
"model_id": str,
},
},
"match": { # optional
"cel": Optional[str],
},
"limits": {
"period": Optional[Literal["BUDGET_PERIOD_UNSPECIFIED", "BUDGET_PERIOD_DAILY", "BUDGET_PERIOD_WEEKLY", "BUDGET_PERIOD_MONTHLY", "BUDGET_PERIOD_YEARLY", "BUDGET_PERIOD_ONE_TIME"]],
"amount": Optional[float],
"token_limit": Optional[float],
},
"rate_limit": { # optional
"requests_per_minute": Optional[int],
},
"is_active": Optional[bool],
"expires_at": date, # optional
"created_at": date,
"updated_at": date,
"usage": { # optional
"amount": Optional[float],
"tokens": Optional[float],
"requests": Optional[int],
},
"alerts": [{ # optional
"id": Optional[str],
"threshold_percent": int,
"notifier_ids": List[str],
"dimension": Optional[Literal["BUDGET_ALERT_DIMENSION_UNSPECIFIED", "BUDGET_ALERT_DIMENSION_COST", "BUDGET_ALERT_DIMENSION_TOKENS"]],
}],
},
}
{
budget?: {
budgetId: string;
scope?: {
workspace?: Record<string, unknown>;
project?: {
projectId?: string;
};
identity?: {
identityExternalId?: string;
};
apiKey?: {
apiKeyId?: string;
};
provider?: {
provider?: string;
};
model?: {
modelId: string;
};
};
match?: {
cel?: string;
};
limits: {
period?: "BUDGET_PERIOD_UNSPECIFIED" | "BUDGET_PERIOD_DAILY" | "BUDGET_PERIOD_WEEKLY" | "BUDGET_PERIOD_MONTHLY" | "BUDGET_PERIOD_YEARLY" | "BUDGET_PERIOD_ONE_TIME";
amount?: number;
tokenLimit?: number;
};
rateLimit?: {
requestsPerMinute?: number;
};
isActive?: boolean;
expiresAt?: Date;
createdAt: Date;
updatedAt: Date;
usage?: {
amount?: number;
tokens?: number;
requests?: number;
};
alerts?: {
id?: string;
thresholdPercent: number;
notifierIds: string[];
dimension?: "BUDGET_ALERT_DIMENSION_UNSPECIFIED" | "BUDGET_ALERT_DIMENSION_COST" | "BUDGET_ALERT_DIMENSION_TOKENS";
}[];
};
}