Update team Directives
Change the team's own Directives, based on the policy_version you read, with a management key that has the Team Directives permission. A stale version is refused with 409 and nothing changes.
Body
application/json; directives or set, not both- policy_versionintegerrequired
The version you read. It moves on by one with each change, from the console or the API.
- directivesobjectoptional
The whole level, replacing what is there.
{}clears it back to the platform defaults. - setobjectoptional
Single fields by path, keeping everything else:
allowedProviders,limits.requestsPerMinute,budget.monthlyUsd,alerts.lowBalanceUsd,deniedModels…nullclears a field. One alias isaliases.org/fast, set to a model id or a preset such as{"model": "anthropic/claude-haiku-4.5", "params": {"temperature": 0}};nullremoves it.allowedModelstakes model ids andvendor/*. A preset may carrydeprecatedAt(YYYY-MM-DD, UTC) andreplacedBy(another alias or a model id) to retire the alias.
Notes
- Permissionoptional
The key must have been created with Team Directives ticked under Team → Management keys; other management keys get
403 policy_denied. It is opt-in because the team's Directives bound every project: a leaked key with it could loosen them all. See Team Directives. - Validationoptional
As the console's team save: unknown fields, unknown routing profiles, uncertified fallback models, allowed models that are neither an id nor
vendor/*, and an alias replaced by itself or by an uncertified model are refused with400 invalid_request.alerts.lowBalanceUsdcan be set here only. - Conflictsoptional
409 version_conflictwhen the team's Directives changed since you read them. Read them again and reapply. - Auditoptional
A
policy.updateevent onorganization:<id>with the policy before and after, the key as the actor.