DEV Community

Eduardo Silva
Eduardo Silva

Posted on

Copilot Cost Management API: como o admin de M365 vai controlar o gasto de créditos de IA

Copilot Cost Management API: como o admin de M365 vai controlar o gasto de créditos de IA

O Microsoft 365 Copilot deixou de ser só "licença fixa por usuário". Com a cobrança baseada em uso (usage-based billing) e os Copilot Credits, cada agente, cada chamada a serviços de IA e cada novo recurso de Agent Builder passam a consumir um saldo medido — e isso é dinheiro de verdade saindo do orçamento de TI sem que ninguém tenha assinado uma PO para cada chamada.[2]

Em outubro de 2026 a Microsoft lançou a Cost Management API do Copilot, dentro do Microsoft Graph, justamente para resolver esse ponto cego: dar ao administrador visibilidade e controle programático sobre quanto cada usuário, grupo ou agente está gastando — antes que o boleto chegue maior do que o esperado.[1][5]

Neste artigo eu mostro o que essa API faz, como ela se encaixa no painel Cost Management do admin center, e como montar uma política de gasto via Graph para não deixar o consumo de créditos correr solto.

O problema que isso resolve

Historicamente, licenciamento de M365 Copilot era previsível: X licenças, X custo fixo por mês. Com o modelo de créditos, serviços como Agent Builder, Cowork, Retrieval API e outros agentes consomem créditos de um pool que pode ser pré-pago (Copilot Credit Pre-purchase Plan), pago por uso (pay-as-you-go) ou uma combinação dos dois.[2]

Sem controle, um usuário pode criar um agente que roda em loop, ou um time pode adotar um serviço novo sem avisar o financeiro, e o consumo de créditos explode no meio do mês. A Cost Management API existe para isso: políticas de gasto (spending policies) que limitam quanto uma audiência pode consumir por período, com alertas antes do limite ser atingido.[1]

É importante entender o escopo: a API é denominada em créditos, não em moeda. Ela não devolve preço, fatura ou previsão de custo em R$/US$ — isso continua vivendo no painel de billing do admin center. O que ela expõe é saldo, política e consumo em unidades de crédito.[1]

Onde isso aparece no admin center

Antes de ir para a API, vale conhecer a experiência visual, porque é de lá que vem o modelo mental da API. No Microsoft 365 admin center, em Copilot > Cost Management, existe a aba Configuration, onde você cria políticas de gasto (spending policies):[4]

  • Escopo por identidade (todos os usuários ou grupos específicos) ou por recurso (agentes/ambientes específicos).
  • Limite mensal por política (quanto o grupo todo pode gastar no mês) e limite mensal por usuário (teto individual dentro da política).
  • Alertas de administrador por limiar de uso (ex.: avisar quando a política atingir 80% do limite).
  • Notificações ao próprio usuário quando ele se aproxima do teto.
  • Seleção do método de cobrança (créditos pré-pagos primeiro, depois pay-as-you-go).

A Microsoft recomenda um piso mínimo de 2.000 créditos por usuário por mês como orçamento mensal — abaixo disso a interface ainda permite salvar, mas sugere um valor maior para não travar a experiência do usuário no meio do mês.[4]

O ponto chave: políticas de gasto não reservam créditos. Elas são apenas um limite — se o usuário sai da política (ex.: troca de grupo), ele passa a consumir sob a política que se aplicar a ele, e o consumo anterior fica registrado no histórico independentemente disso.[4]

A API, por dentro

A Cost Management API vive sob /copilot/costManagement no Microsoft Graph (atualmente em /beta) e cobre cinco áreas:[1]

  1. Saldo da locação — getTenantCreditBalance, uma foto do saldo de créditos por método de cobrança.
  2. Spending policies — CRUD completo (spendingPolicies), com dois tipos: allUsersSpendingPolicy (toda a locação) ou selectedGroupsSpendingPolicy (grupos específicos).
  3. Escopo de audiência — vincular/desvincular grupos a uma política via referências $ref.
  4. Configurações por serviço — habilitar/excluir serviços de IA individuais dentro de uma política (serviceSettings).
  5. Alertas de limiar (notify-only) e seus destinatários, e diagnóstico de consumo por usuário (userBalances), para entender por que um usuário específico está ou não consumindo um serviço.

As permissões seguem a família CopilotCostManagement-*, sempre delegadas (conta corporativa), exceto a leitura do saldo da locação, que também aceita permissão de aplicação (CopilotCostManagement.Read.All). Como sempre no Graph: escolha a permissão de menor privilégio para a operação que você precisa.[1]

Permissão Para que serve
CopilotCostManagement.Read.All Ler o saldo de créditos da locação
CopilotCostManagement-Policy.Read.All Ler políticas, configurações por serviço e alertas
CopilotCostManagement-Policy.ReadWrite.All Criar/editar/excluir políticas e alertas
CopilotCostManagement-Assignment.ReadWrite.All Vincular/desvincular grupos a uma política
CopilotCostManagement-UserData.Read.All Diagnosticar saldo e consumo de um usuário específico

Mão na massa: lendo o saldo e criando uma política

Com um token já obtido (app registration ou delegado, conforme sua necessidade), o fluxo básico em PowerShell com o módulo Microsoft Graph fica assim:

# Conectar com a permissão necessária
Connect-MgGraph -Scopes "CopilotCostManagement.Read.All"

# Ler o saldo de créditos da locação
Invoke-MgGraphRequest -Method GET `
  -Uri "https://graph.microsoft.com/beta/copilot/costManagement/getTenantCreditBalance"
Enter fullscreen mode Exit fullscreen mode

Para criar uma política de gasto limitando um grupo de TI a um teto mensal, primeiro é preciso permissão de escrita:

Connect-MgGraph -Scopes "CopilotCostManagement-Policy.ReadWrite.All"

$body = @{
    "@odata.type"   = "#microsoft.graph.selectedGroupsSpendingPolicy"
    displayName     = "Politica TI - Agentes Copilot"
    periodLimit     = @{ value = 50000 }   # limite do mes para o grupo
    perUserLimit    = @{ value = 2000 }    # limite por usuario no mes
} | ConvertTo-Json -Depth 5

Invoke-MgGraphRequest -Method POST `
  -Uri "https://graph.microsoft.com/beta/copilot/costManagement/spendingPolicies" `
  -Body $body -ContentType "application/json"
Enter fullscreen mode Exit fullscreen mode

Dois detalhes que custam tempo de debug se ignorados:

  • Toda política nasce disabled. Para uma política de grupo, ela só vira enabled depois que você vincula pelo menos um grupo via $ref no endpoint de assignedGroups.[3]
  • Mutações usam ETag (If-Match). Qualquer PATCH/DELETE em política, configuração de serviço ou alerta exige o ETag mais recente do objeto pai — leia a política antes de cada mutação e use o ETag retornado, sem cachear de uma chamada anterior.[3]
  • O tipo de audiência não pode ser alterado depois. Se você criou como allUsersSpendingPolicy e precisa mudar para grupos específicos, é preciso excluir e recriar a política — e isso zera a contabilidade de consumo daquele objeto.[3]

Depois de vincular o grupo, configure o alerta de limiar (ex.: notificar quando o consumo atingir 80%) via emailThresholdSettings, e adicione os destinatários (normalmente o próprio time de TI) com recipients/$ref.[1]

Por que isso importa agora

Esse lançamento acompanha outras novidades de outubro de 2026 no ecossistema Copilot — como o suporte a Agent2Agent (A2A) para agentes declarativos usando o Microsoft Agent 365, que também exige governança central no admin center antes de aprovar conexões entre agentes.[5] O padrão é claro: conforme mais agentes e integrações passam a rodar "sozinhos" dentro do M365, a Microsoft está empurrando controle financeiro e de governança para a camada de API, pensada para automação — não só para clique manual no portal.

Para quem administra um tenant de médio/grande porte, a recomendação prática é:

  1. Habilitar visibilidade primeiro: leia o saldo da locação e o consumo atual antes de criar qualquer limite agressivo.
  2. Comece com uma política de alerta sem bloqueio rígido, veja o comportamento real de consumo por 2-4 semanas.
  3. Só depois disso, ajuste os tetos por grupo/usuário com base em dado real, não em chute.

Conclusão

A Cost Management API fecha uma lacuna real de governança: até agora, o crescimento de agentes e serviços de IA no M365 Copilot não tinha um ponto de controle programático de gasto — só o painel manual. Agora é possível automatizar política, alerta e diagnóstico de consumo via Graph, o que facilita integrar isso em runbooks de PowerShell, dashboards internos ou até alertas automáticos para o time financeiro. Se sua organização já usa Copilot com cobrança por uso, vale revisar o painel Cost Management esta semana — antes que o crédito do mês acabe sem aviso.

Sources

[1] https://learn.microsoft.com/en-us/microsoft-365/copilot/extensibility/api/admin-settings/cost-management/overview — Microsoft 365 Copilot Cost Management API overview
[2] https://learn.microsoft.com/en-us/microsoft-365/copilot/usage-based-billing-overview-copilot-credits — Usage-Based Billing and Cost Management for Copilot Credits
[3] https://learn.microsoft.com/en-us/microsoft-365/copilot/extensibility/api/admin-settings/cost-management/resources/spendingpolicy — spendingPolicy resource type
[4] https://learn.microsoft.com/en-us/microsoft-365/copilot/usage-based-billing-manage-copilot-credits — Managing AI experiences enabled by usage-based billing
[5] https://learn.microsoft.com/en-us/microsoft-365/copilot/extensibility/whats-new — What's New for Microsoft 365 Copilot Developers

Top comments (0)