Referência da API

Gastos com IA

Gastos com modelos de IA por faturador, fornecedor do modelo, modelo e medidor, confrontados com seus pedidos de compra.

Mais sobre este recurso

Novo com os controles de gastos com IA. Gastos com IA são o que custam as linhas de serviços de IA do faturamento de AWS, Google Cloud, Azure e OCI que você conectou (Amazon Bedrock, SageMaker, Vertex AI, Azure OpenAI, OCI Generative AI e os modelos do marketplace na mesma fatura), mais o que informam os provedores de IA que você conecta diretamente (veja Provedores de IA). A Pleaxy as lê pela mesma conexão somente leitura do restante da conta, com a mesma escolha de fontes de dados: uma conexão que permite current_cost dá o mês até a data e uma previsão; uma que permite invoices, o mês fechado. A AWS é a exceção: ela fornece as linhas de IA só pelo Cost Explorer, então uma conexão da AWS precisa de current_cost para qualquer número de IA (com ele, vem também o mês fechado). O fornecedor é quem fatura (o faturador); a empresa cujo modelo foi usado é o vendor da linha, então Claude no Bedrock é gasto da AWS com vendor anthropic, e nada é contado duas vezes. Todo valor está na moeda de faturamento do faturador, nunca convertido nem somado entre moedas. Regras de atribuição associam as tags, os rótulos, os projetos e os workspaces dos provedores a centros de custo (GetAiAttribution), e uma linha de pedido aprovada pode definir o próprio teto de gastos do provedor (SetAiSpendLimit, opcional).

Obter gastos com IA

Gastos com IA de um período, por faturador, fornecedor do modelo, modelo ou centro de custo.

GET/v1/workspaces/{regionId}/ai-spend

Parâmetros

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

  • groupBy"invoicer" | "vendor" | "model" | "costCenter"

    O que é cada grupo. Por padrão invoicer, que corresponde às suas faturas. vendor soma um fornecedor de modelo entre faturadores (o que você gasta com Claude, seja quem for que fature), model um id de modelo como faturado, costCenter os centros de custo das regras de atribuição.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Para um período (por padrão, o mês atual), os gastos com IA de cada faturador conectado, agrupados conforme groupBy: mês até a data, previsão para o período inteiro, último mês fechado e variação em relação a ele, com o uso por medidor e, ao lado de cada faturador, as linhas de pedido de compra abertas emitidas para ele e o que resta nelas. Os números são as linhas de IA que as conexões sincronizaram (diariamente para current_cost, como o custo do mês até a data hoje). Um faturador cuja conexão só lê faturas mostra o mês fechado: seu mês até a data e sua previsão ficam ausentes (uma conta da AWS que só lê faturas não tem linhas de IA e aparece em notReadable). A previsão é a do provedor quando ele a oferece (AWS Cost Explorer); caso contrário, linear sobre os dias decorridos. Os valores estão na moeda de faturamento de cada faturador, e os totais são uma entrada por moeda, nunca somados entre moedas. Agrupar por costCenter segue as regras de atribuição (GetAiAttribution); uma linha que nenhuma regra alcança fica sem atribuição.

Campos da resposta

  • periodstring

    O mês a que os números se referem, YYYY-MM.

  • asOfstring

    Quando a linha mais recente foi sincronizada, ISO 8601. O mês até a data é até esse momento, não até agora.

  • totalsArray<object>

    Uma entrada por moeda de faturamento, nunca somadas entre moedas: monthToDate, forecast para o período inteiro, lastMonth (o último mês fechado) e changePct, a variação da previsão em relação a lastMonth, em porcentagem.

  • groups[].keystring

    Conforme groupBy: o id da conexão de nuvem do faturador; o fornecedor do modelo (anthropic, openai, google, meta, mistral, amazon, microsoft, cohere, xai, deepseek ou unknown para um tipo de uso que a Pleaxy ainda não mapeou); o id do modelo como faturado, por exemplo claude-sonnet-4-5 ou gemini-2.5-pro; ou o código do centro de custo.

  • groups[].labelstring

    O que exibir para o grupo: o rótulo da conta da conexão, o nome do fornecedor do modelo, o nome do modelo ou o nome do centro de custo.

  • groups[].invoicerstring

    Quem fatura os gastos do grupo, uma nuvem ou um provedor de IA, com invoicerId como sua conexão: sempre com groupBy invoicer e, para um grupo por fornecedor de modelo ou por modelo, quando uma única conexão fatura tudo (Claude só pelo Bedrock, digamos); ausente quando são várias. Um grupo por centro de custo nunca tem uma.

  • groups[].monthToDatenumber

    Na moeda do grupo, com forecast, lastMonth e changePct como em totals. monthToDate e forecast ficam ausentes para um faturador cuja conexão só lê faturas: ele mostra apenas lastMonth.

  • groups[].quantitiesArray<object>

    O uso por medidor. Linhas medidas em tokens: input_tokens, output_tokens, cached_input_tokens, cache_write_tokens, batch_input_tokens, batch_output_tokens, images, audio_seconds, embeddings_tokens ou requests. Linhas de capacidade: gpu_hours, ptu_hours, model_units_hours ou cluster_hours. other para uma linha que a Pleaxy ainda não mapeou para um medidor. unit é a unidade da quantidade: 1M_tokens, tokens, requests, images, seconds, gpu_hours, ptu_hours, model_unit_hours ou units para uma linha não mapeada.

  • groups[].purchaseOrdersArray<object>

    As linhas de pedido de compra abertas emitidas para o faturador do grupo, com o que resta em cada uma (remaining, na moeda do grupo) após as faturas já lançadas contra ela. Só para um grupo com faturador.

  • groups[].servicesArray<object>

    Só com groupBy invoicer: os números do grupo por serviço do próprio provedor (Amazon Bedrock, com os modelos do marketplace que ele fatura; Amazon SageMaker; Vertex AI; ...), como a aba Cloud da página Gastos os mostra.

  • unattributedArray<object>

    Só com groupBy costCenter: os gastos que nenhuma regra de atribuição alcançou, uma entrada por moeda no formato de um grupo, exibidos e nunca ocultos. Escreva uma regra para eles com SetAiAttribution.

  • notReadableArray<object>

    As contas conectadas sem linhas de IA, e o motivo: needs_current_cost para uma conta da AWS cuja conexão não permite o custo atual (a AWS fornece suas linhas de IA só pelo Cost Explorer), not_synced_yet para uma cujas linhas de IA ainda não foram lidas. Ausente quando não há nenhuma.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM, ou groupBy não é invoicer, vendor, model nem costCenter.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend
Requisição
GET /v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.buyer/ai-spend?period=2026-10&groupBy=vendor
Resposta · 200 OK
{
   "period": "2026-10",
   "asOf": "2026-10-29T06:10:00.000Z",
   "totals": [
      { "currency": "USD", "monthToDate": 57280.14, "forecast": 61400, "lastMonth": 48930.55, "changePct": 25.5 }
   ],
   "groups": [
      {
         "key": "anthropic",
         "label": "Anthropic",
         "invoicer": "aws",
         "invoicerId": "conn_01k7q2n4m8b3xd5fwj9hz6rsvt",
         "currency": "USD",
         "monthToDate": 44612.3,
         "forecast": 47830,
         "lastMonth": 38104.2,
         "changePct": 25.5,
         "quantities": [
            { "meter": "input_tokens", "unit": "1M_tokens", "quantity": 7120.4 },
            { "meter": "output_tokens", "unit": "1M_tokens", "quantity": 918.3 },
            { "meter": "cached_input_tokens", "unit": "1M_tokens", "quantity": 15480 },
            { "meter": "cache_write_tokens", "unit": "1M_tokens", "quantity": 1288.7 }
         ],
         "purchaseOrders": [ { "poId": "PO-8842", "lineNo": 1, "remaining": 4200 } ]
      },
      {
         "key": "amazon",
         "label": "Amazon",
         "invoicer": "aws",
         "invoicerId": "conn_01k7q2n4m8b3xd5fwj9hz6rsvt",
         "currency": "USD",
         "monthToDate": 12667.84,
         "forecast": 13570,
         "lastMonth": 10826.35,
         "changePct": 25.3,
         "quantities": [
            { "meter": "input_tokens", "unit": "1M_tokens", "quantity": 10874.8 },
            { "meter": "output_tokens", "unit": "1M_tokens", "quantity": 1240 }
         ],
         "purchaseOrders": [ { "poId": "PO-8842", "lineNo": 1, "remaining": 4200 } ]
      }
   ]
}

Listar linhas de uso de IA

Lista as linhas de uso de IA por trás dos números, uma página por vez.

GET/v1/workspaces/{regionId}/ai-spend/lines

Parâmetros

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

  • invoicerIdstring

    Só linhas faturadas por esta conexão de nuvem.

  • vendorstring

    Só este fornecedor de modelo, por exemplo anthropic.

  • modelstring

    Só este id de modelo como faturado, por exemplo claude-sonnet-4-5.

  • costCenterstring

    Só linhas atribuídas a este centro de custo (seu código). As linhas são atribuídas pelas regras de atribuição.

  • limitnumber

    Tamanho da página, de 1 a 500. Por padrão, 100.

  • cursorstring

    O nextCursor da página anterior. Omita-o na primeira página.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

As linhas normalizadas das quais os gastos com IA são somados: uma por faturador, dia, fornecedor do modelo, modelo, medidor e região, como o faturamento do provedor as informou. Cada conector lê seus próprios nomes (tipos de uso do AWS Cost Explorer, SKUs da exportação de faturamento do Google Cloud, medidores do Azure Cost Management, SKUs de uso da OCI) e os mapeia para um fornecedor de modelo, um modelo e um medidor; um tipo de uso que a Pleaxy ainda não conhece é mantido com seu nome bruto e vendor unknown, nunca descartado. Do dia mais recente para o mais antigo. Passe o nextCursor de uma página como cursor para a página seguinte, e continue até nextCursor ficar ausente. As linhas são mantidas em detalhe diário por 90 dias e depois por mês.

Campos da resposta

  • invoicerstring

    A nuvem em cuja conta a linha está, com invoicerId como sua conexão. Ela é o fornecedor, seja qual for o fornecedor do modelo.

  • vendorstring

    A empresa cujo modelo foi usado, lida do tipo de uso, do SKU ou do nome do medidor. unknown quando a Pleaxy ainda não mapeou esse tipo de uso; rawUsageType então diz como o provedor o chamou.

  • modelstring

    O id do modelo como o provedor o fatura, por exemplo claude-sonnet-4-5 ou gemini-2.5-pro.

  • shapestring

    tokens para uma linha medida em tokens (fornecedor do modelo × modelo × medidor × região); capacity para throughput provisionado, horas de GPU ou um cluster dedicado (fornecedor do modelo × sku × medidor).

  • meterstring

    input_tokens, output_tokens, cached_input_tokens, cache_write_tokens, batch_input_tokens, batch_output_tokens, images, audio_seconds, embeddings_tokens ou requests para tokens; gpu_hours, ptu_hours, model_units_hours ou cluster_hours para capacidade; other, com unit units, para um tipo de uso que a Pleaxy ainda não mapeou.

  • daystring

    YYYY-MM-DD. Após 90 dias, as linhas são mantidas por mês, e day passa a ser o primeiro dia do mês.

  • amountnumber

    O que o provedor cobra pela linha, antes dos impostos, em currency: como o provedor informa, nunca convertido.

  • unitPricenumber

    amount dividido por quantity, na unidade da tabela de preços, quando quantity é maior que 0: o que a linha efetivamente custou, para confrontar com ListAiRateCards.

  • attributionobject

    Como o próprio provedor atribui a linha, com os nomes que ele usa: uma tag de alocação de custos ou um perfil de inferência de aplicação (AWS), um rótulo ou um projeto (Google Cloud), um grupo de recursos ou uma tag (Azure), um compartimento (OCI). Ausente quando a linha não traz nenhum.

  • sourcestring

    De qual leitura a linha veio: AWS Cost Explorer (cost_explorer), a exportação de faturamento do BigQuery no Google Cloud (billing_export), Azure Cost Management (cost_management) ou a API de uso da OCI (usage_api).

  • rawServicestring

    O nome do serviço segundo o próprio provedor e, como rawUsageType, seu tipo de uso, SKU ou nome de medidor, mantidos para auditorias e em toda linha não mapeada.

  • nextCursorstring

    Opaco. Ausente quando não há linhas mais antigas.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM, limit está fora do intervalo, ou cursor não é um que esta rota devolveu.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/lines
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/lines" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "lines": [
      {
         "invoicerId": "string",
         "invoicer": "aws" | "gcp" | "azure" | "oci" | "openai" | "anthropic" | "mistral" | "snowflake",
         "vendor": "anthropic" | "openai" | "google" | "meta" | "mistral" | "amazon" | "microsoft" | "cohere" | "xai" | "deepseek" | "unknown",
         "model": "string",
         "shape": "tokens" | "capacity",
         "meter": "string",
         "region": "string",
         "day": "string",
         "quantity": number,
         "unit": "1M_tokens" | "tokens" | "requests" | "images" | "seconds" | "gpu_hours" | "ptu_hours" | "model_unit_hours" | "units",
         "amount": number,
         "currency": "string",
         "unitPrice": number,
         "attribution": { "tag": "string", "label": "string", "project": "string", "resourceGroup": "string", "compartment": "string", "inferenceProfile": "string" },
         "source": "cost_explorer" | "billing_export" | "cost_management" | "usage_api",
         "rawService": "string",
         "rawUsageType": "string"
      }
   ],
   "nextCursor": "string"
}

Listar tabelas de preços de IA

Lista os preços de lista públicos dos modelos de IA, em vigor em um dia.

GET/v1/workspaces/{regionId}/ai-rate-cards

Parâmetros

  • invoicer"aws" | "gcp" | "azure" | "oci"

    Só os preços deste faturador.

  • vendorstring

    Só os modelos deste fornecedor de modelo, por exemplo anthropic.

  • modelstring

    Só este id de modelo como faturado.

  • onstring

    Um dia, YYYY-MM-DD: só a entrada em vigor nele, por faturador, fornecedor de modelo, modelo, medidor e região. Se omitido, todas as entradas são devolvidas.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Os preços de lista públicos que a Pleaxy mantém para cada faturador, fornecedor de modelo, modelo, medidor e região que mapeia, com datas de vigência, tirados das páginas de preços dos próprios provedores. Uma mudança de preço é uma nova entrada com seu próprio effectiveFrom; nada é editado no lugar, então uma linha é sempre julgada pelo preço que valia no seu dia. Com on, só a entrada em vigor naquele dia é devolvida por faturador, fornecedor de modelo, modelo, medidor e região; sem ele, todas as entradas, passadas e atuais. A tarifa negociada de um contrato ou seu desconto sobre o preço de lista prevalece sobre a tabela quando a Pleaxy verifica suas linhas; as tabelas em si não podem ser editadas.

Campos da resposta

  • unitPricenumber

    O preço de lista por unidade, em currency: por 1,000,000 de tokens para 1M_tokens, por hora para as unidades de capacidade.

  • regionstring

    Só onde o faturador precifica por região; ausente para um preço que vale em todo lugar.

  • effectiveFromstring

    O dia em que o preço entrou em vigor, YYYY-MM-DD, e, como effectiveTo, depois de substituído, o último dia em que valeu. Sem effectiveTo: ainda em vigor.

  • sourceUrlstring

    A página de preços do provedor de onde a entrada foi tirada.

Erros

  • 400 Bad Request - on não é um dia no formato YYYY-MM-DD, ou invoicer não é aws, gcp, azure nem oci.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-rate-cards
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-rate-cards" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
[
   {
      "invoicer": "aws" | "gcp" | "azure" | "oci" | "openai" | "anthropic" | "mistral" | "snowflake",
      "vendor": "string",
      "model": "string",
      "meter": "string",
      "region": "string",
      "unit": "1M_tokens" | "tokens" | "requests" | "images" | "seconds" | "gpu_hours" | "ptu_hours" | "model_unit_hours",
      "unitPrice": number,
      "currency": "string",
      "effectiveFrom": "string",
      "effectiveTo": "string",
      "sourceUrl": "string"
   }
]

Verificar gastos com IA

Diz se a previsão do período cabe nas linhas de pedido de compra abertas e no orçamento.

POST/v1/workspaces/{regionId}/ai-spend/check

Corpo

  • invoicerIdstring

    A conexão de nuvem a verificar: sua previsão em relação a toda linha de pedido de compra aberta emitida para ela.

  • costCenterstring

    O código ou nome de um centro de custo: seus gastos com IA atribuídos e sua previsão em relação ao seu orçamento do período, quando orçamentos estão ativados. As linhas são atribuídas pelas regras de atribuição.

  • poIdstring

    Um pedido de compra: só suas linhas abertas, para o faturador para o qual foi emitido.

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Responde a "o Bedrock vai caber no PO-8842 este mês?" com os mesmos números do GetAiSpend: o mês até a data e a previsão de um faturador, um centro de custo ou um pedido de compra, confrontados com as linhas de pedido de compra abertas emitidas para esse faturador e, com um centro de custo e orçamentos ativados, com seu orçamento. Nada é salvo e nada bloqueia: o resultado é o que a aba IA da página Gastos mostra e o que o Assistente e a ferramenta MCP check_ai_spend respondem. Informe ao menos um entre invoicerId, costCenter e poId; poId implica o faturador para o qual ele foi emitido.

Campos da resposta

  • outcomestring

    fits: a previsão cabe no que resta nas linhas abertas (e no orçamento). over: não cabe; o overBy de cada linha diz por quanto, e budget.remaining fica negativo. no_po: nenhuma linha de pedido de compra aberta foi emitida para o faturador no período. no_budget: um centro de custo foi informado, mas não tem orçamento para o período, ou os orçamentos estão desativados.

  • currencystring

    A moeda de faturamento do faturador, na qual estão monthToDate, forecast e os números das linhas. Nada é convertido: um orçamento mantido em outra moeda dá no_budget.

  • purchaseOrdersArray<object>

    As linhas abertas verificadas, cada uma com remaining após as faturas já lançadas contra ela e, quando a previsão o excede, overBy.

  • budgetobject

    Só com costCenter e orçamentos ativados: o orçamento do centro de custo para o período, committed (pedidos de compra abertos), actual (faturas), accruing (gastos com IA atribuídos do mês até a data, ainda não faturados: um terceiro número, nunca somado aos outros dois) e remaining.

Erros

  • 400 Bad Request - Nenhum entre invoicerId, costCenter e poId foi informado, ou period não é um mês no formato YYYY-MM.
  • 404 Not Found - Nenhuma conexão de nuvem, centro de custo ou pedido de compra com esse id no espaço de trabalho.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
POST /v1/workspaces/{regionId}/ai-spend/check
Requisição
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/check" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "invoicerId": "string",
   "costCenter": "string",
   "poId": "string",
   "period": "string"
}
Resposta · 200 OK
{
   "outcome": "fits" | "over" | "no_po" | "no_budget",
   "period": "string",
   "currency": "string",
   "monthToDate": number,
   "forecast": number,
   "purchaseOrders": [ { "poId": "string", "lineNo": number, "remaining": number, "overBy": number } ],
   "budget": { "costCenter": "string", "budget": number, "committed": number, "actual": number, "accruing": number, "remaining": number }
}

Sugerir linhas de pedido de compra de IA

Linhas de pedido de compra preenchidas a partir do uso de IA de um faturador.

GET/v1/workspaces/{regionId}/ai-spend/po-lines

Parâmetros

  • invoicerIdstringObrigatório

    O faturador de onde vem o uso das linhas: groups[].invoicerId de GetAiSpend.

  • periodstring

    O mês, YYYY-MM. Por padrão, o último mês fechado.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

As linhas que "Adicionar linhas de IA" preenche em um pedido de compra: para um faturador e um mês (por padrão, o último mês fechado), uma linha por modelo e medidor que ele faturou, com o volume do mês arredondado para cima como quantidade e um preço unitário da condição vigente do seu contrato para esse modelo (a tarifa ou o desconto sobre o preço de lista), senão o preço de lista de hoje, senão o valor faturado no mês - priceSource diz qual. Linhas que a Pleaxy não conseguiu associar a um medidor e créditos sem preço em dinheiro não são oferecidos. Nada é salvo: envie as linhas para CreatePurchaseOrder, com o contractId que a linha indicar. Exige acesso 'view' a pedidos de compra.

Campos da resposta

  • providerstring

    Para um faturador de nuvem: o provedor para o qual emitir o pedido. Um provedor de IA direto informa, em vez disso, supplierConnectionId, o cadastro de fornecedor dele.

  • lines[].aiobject

    O escopo de IA da linha, para enviar como lineItems[].ai.

  • lines[].unitstring

    A unidade do medidor: 1M_tokens para um medidor de tokens, gpu_hours e similares para capacidade.

  • lines[].priceSourcestring

    contract (contractId e contractTermId indicam a condição), list (a tabela de preços na data de hoje) ou billed (o custo por unidade no mês, quando a Pleaxy não tem preço para o modelo).

  • lines[].periodQuantitynumber

    O que o mês consumiu, com periodAmount o valor faturado, para o formulário do pedido mostrar ao lado da linha.

Erros

  • 400 Bad Request - invoicerId está ausente, ou period não é um mês no formato YYYY-MM.
  • 404 Not Found - Nenhum faturador conectado com esse id no espaço de trabalho.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/po-lines
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/po-lines" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "invoicerId": "string",
   "invoicer": "string",
   "period": "string",
   "provider": "string",
   "supplierConnectionId": "string",
   "lines": [
      {
         "ai": { "invoicer": "string", "vendor": "string", "model": "string", "meter": "string", "region": "string" },
         "unit": "string",
         "qty": number,
         "unitPrice": number,
         "currency": "string",
         "priceSource": "contract" | "list" | "billed",
         "contractId": "string",
         "contractTermId": "string",
         "periodQuantity": number,
         "periodAmount": number
      }
   ]
}

Emitir o próximo período de IA

Cria um rascunho do mesmo pedido para o mês seguinte.

POST/v1/workspaces/{regionId}/ai-spend/next-period/{poId}

Parâmetros

  • poIdstringObrigatório

    O pedido a emitir de novo: um com linhas de IA, ou o pedido de um provedor de nuvem.

Retorna

201 Created com o objeto mostrado na resposta.

Mais detalhes

"Emitir o próximo período": um rascunho do mesmo pedido - fornecedor, centro de custo, contrato e linhas - para o mês seguinte ao das linhas dele. A quantidade de cada linha de IA é a previsão a partir do uso deste mês até agora, linear sobre os dias decorridos (a própria quantidade quando ainda nada foi usado); as demais linhas mantêm a quantidade. O rascunho passa pela aprovação habitual quando enviado. Não recebe corpo. Exige acesso 'create' a pedidos de compra.

Erros

  • 400 Bad Request - O pedido não tem linhas de IA e não é um pedido de nuvem.
  • 404 Not Found - Esse pedido não existe no espaço de trabalho.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
POST /v1/workspaces/{regionId}/ai-spend/next-period/{poId}
Requisição
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/next-period/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 201 Created
PurchaseOrder (the draft), as GetPurchaseOrder returns it

Obter recomendações de IA

Gasto com IA que nenhum pedido cobre, e formas mais baratas de comprá-lo.

GET/v1/workspaces/{regionId}/ai-spend/recommendations

Parâmetros

  • periodstring

    O mês cuja cobertura é verificada, YYYY-MM. Padrão: este mês.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

O que a aba IA da página Gastos recomenda. uncovered lista cada faturador cuja previsão do mês nenhum pedido de compra aberto cobre: no_po quando nenhum pedido foi emitido para ele, over_po quando a previsão passa do que resta em seus pedidos, com gap o valor de que um novo pedido precisa. savings lista formas mais baratas de comprar o uso do mês passado, aos preços de tabela de hoje: batch (o máximo que mover os tokens interativos para a tarifa em lote economizaria), cache (o que cada 10% a mais de entrada lida do cache economiza) e reserve (horas de GPU usadas com um piso estável na maioria dos dias, e as GPUs que esse piso mantém ocupadas; sem valor, pois reservas têm preço definido em contrato). Valores abaixo de 10 não são listados, e cada valor fica na moeda de faturamento do faturador. Requer acesso 'view' a fornecedores ou a faturas.

Campos da resposta

  • basisPeriodstring

    O mês do qual as economias são lidas: o último fechado.

  • uncovered[].coverednumber

    O que resta no mês nas linhas de pedidos abertos emitidos para este faturador.

  • uncovered[].gapnumber

    forecast menos covered: o que um novo pedido precisa. DraftAiOrders cria o rascunho.

  • uncovered[].poIdsstring[]

    Para over_po, os pedidos abertos que cobrem uma parte.

  • accountsobject[]

    O mesmo que uncovered para contas de nuvem inteiras: todo o gasto delas, pela estimativa atual do provedor, contra os pedidos abertos que cobrem a conta. Só este mês. O gasto com IA de uma conta faz parte dele, então nunca some as duas listas.

  • savings[].savingnumber

    batch: o máximo que economiza por mês se tudo rodasse em lote (só serve para trabalho que pode esperar). cache: o que cada 10% a mais de entrada servida do cache economiza por mês. Ausente para reserve.

  • savings[].detail.cachedSharenumber

    cache: a parcela da entrada já lida do cache, de 0 a 1.

  • savings[].detail.reservableUnitsnumber

    reserve: as GPUs que o piso estável de steadyHoursPerDay mantém ocupadas o dia todo, em daysUsed dias do mês.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/recommendations
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/recommendations" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "period": "string",
   "basisPeriod": "string",
   "uncovered": [
      {
         "invoicerId": "string",
         "invoicer": "string",
         "label": "string",
         "currency": "string",
         "monthToDate": number,
         "forecast": number,
         "covered": number,
         "gap": number,
         "reason": "no_po" | "over_po",
         "poIds": [ "string" ]
      }
   ],
   "accounts": [ "same as uncovered, for whole cloud accounts" ],
   "savings": [
      {
         "kind": "batch" | "cache" | "reserve",
         "invoicerId": "string",
         "invoicer": "string",
         "label": "string",
         "vendor": "string",
         "model": "string",
         "currency": "string",
         "spend": number,
         "saving": number,
         "detail": { "interactiveRate": number, "batchRate": number, "inputRate": number, "cachedRate": number, "cachedShare": number, "daysUsed": number, "steadyHoursPerDay": number, "reservableUnits": number }
      }
   ]
}

Criar rascunhos de pedidos de IA

Cria o rascunho de um pedido para o gasto com IA não coberto de cada faturador.

POST/v1/workspaces/{regionId}/ai-spend/draft-orders

Corpo

  • invoicerIdsstring[]Obrigatório

    Os faturadores para os quais criar um pedido, de 1 a 20: uncovered[].invoicerId de GetAiRecommendations.

  • periodstring

    O mês que os pedidos cobrem, YYYY-MM. Padrão: este mês.

  • scopestring

    ai (padrão): linhas por modelo e medidor para o uso de IA. account: uma linha por valor para tudo o que uma conta de nuvem fatura, até o gap dela em accounts, até o fim do mês.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

"Criar rascunho de pedido" em uma recomendação: para cada faturador informado, o rascunho de um pedido de compra do mês com uma linha por modelo e medidor do uso do mês passado, com os preços que SuggestAiPoLines define, e a quantidade de cada uma a previsão a partir do uso deste mês até agora. Quando pedidos abertos já cobrem parte da previsão, as quantidades são ajustadas à diferença. O rascunho de uma nuvem é emitido ao provedor para essa conta; o de um provedor de IA direto, ao seu cadastro de fornecedor. skipped diz por que um faturador ficou sem rascunho. Os rascunhos passam pela aprovação habitual ao serem enviados. Requer acesso 'create' a pedidos de compra.

Campos da resposta

  • drafts[].poIdstring

    O rascunho do pedido: GetPurchaseOrder o lê, e enviá-lo o manda para aprovação.

  • skipped[].reasonstring

    no_usage: ainda não há uso de IA em que basear um pedido. no_supplier: um provedor de IA direto sem cadastro de fornecedor para o qual emiti-lo. no_forecast (scope account): ainda não há estimativa de gasto atual para a conta. already_drafted: já existe um rascunho, ou um pedido aguardando aprovação, para este gasto neste mês; poId o identifica e nenhum segundo rascunho é criado.

Erros

  • 400 Bad Request - invoicerIds está vazio ou tem mais de 20, period não é um mês no formato YYYY-MM, ou scope é account para um faturador que não é uma conta de nuvem.
  • 404 Not Found - Nenhum faturador conectado com algum desses ids no espaço de trabalho.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
POST /v1/workspaces/{regionId}/ai-spend/draft-orders
Requisição
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/draft-orders" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "invoicerIds": [ "string" ],
   "period": "string",
   "scope": "ai" | "account"
}
Resposta · 200 OK
{
   "period": "string",
   "drafts": [ { "invoicerId": "string", "poId": "string", "currency": "string", "total": number } ],
   "skipped": [ { "invoicerId": "string", "reason": "no_usage" | "no_supplier" | "no_forecast" | "already_drafted", "poId": "string", "message": "string", "messageId": "string", "params": { } } ]
}

Listar compromissos de IA

Gastos e capacidade de IA comprometidos, e créditos pré-pagos, com o que já foi usado.

GET/v1/workspaces/{regionId}/ai-spend/commitments

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

O que a aba Compromissos da página Gastos mostra: cada condição dos seus contratos vigentes com um gasto comprometido ou uma capacidade reservada, com o que o uso de IA sincronizado já consumiu dela dentro da vigência, o que resta e, para gastos, o ritmo até o fim da condição; e cada linha de pedido de crédito pré-pago com o que as faturas dela já consumiram. Exige acesso 'view' a fornecedores ou a faturas.

Campos da resposta

  • committednumber

    spend: o valor comprometido, em currency. capacity: as unidades reservadas vezes as horas da condição até agora. prepaid_credit: o que a linha do pedido comprou.

  • usednumber

    spend: os valores das linhas de IA sincronizadas que a condição cobre, na moeda dela. capacity: as horas usadas. prepaid_credit: o que as faturas consumiram da linha.

  • projectednumber

    Só spend: o que a condição terá consumido até o fim, no ritmo atual.

Erros

  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/commitments
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/commitments" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
[
   {
      "kind": "spend" | "capacity" | "prepaid_credit",
      "contractId": "string",
      "contractTitle": "string",
      "termId": "string",
      "poId": "string",
      "lineNo": number,
      "supplier": "string",
      "description": "string",
      "ai": { "invoicer": "string", "vendor": "string", "model": "string", "meter": "string" },
      "currency": "string",
      "termStart": "string",
      "termEnd": "string",
      "committed": number,
      "used": number,
      "remaining": number,
      "usedPct": number,
      "projected": number,
      "unit": "string"
   }
]

Obter regra de renovação de IA

A regra que cria os rascunhos dos pedidos de IA do mês seguinte.

GET/v1/workspaces/{regionId}/ai-spend/renewal-rule

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Se os pedidos de IA do mês seguinte são criados como rascunho a partir da previsão, a partir de qual dia do mês, e o que a última execução criou. Desativada até alguém ativá-la. Exige acesso 'view' a pedidos de compra.

Campos da resposta

  • ownerSubstring

    Quem a ativou: os rascunhos são emitidos em nome dessa pessoa, enquanto ela ainda for membro do espaço de trabalho.

  • draftedForstring

    O último mês para o qual foram emitidos rascunhos, YYYY-MM: cada mês recebe rascunhos uma única vez.

Erros

  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/renewal-rule
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/renewal-rule" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "enabled": boolean,
   "dayOfMonth": number,
   "ownerSub": "string",
   "updatedAt": "string",
   "draftedFor": "string",
   "lastRun": { "at": "string", "period": "string", "drafts": [ { "poId": "string", "draftId": "string" } ] }
}

Definir regra de renovação de IA

Ativa ou desativa a regra de renovação de pedidos de IA.

PUT/v1/workspaces/{regionId}/ai-spend/renewal-rule

Corpo

  • enabledbooleanObrigatório

    Se os pedidos de IA do mês seguinte são criados como rascunho.

  • dayOfMonthnumber

    De 1 a 28: o dia a partir do qual os rascunhos são emitidos. 25 se omitido.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

A partir de dayOfMonth, uma vez por mês, a Pleaxy cria o rascunho do pedido do mês seguinte para cada pedido aberto com linhas de IA válidas neste mês, como RaiseNextAiPeriod faz, em nome de quem ativou a regra. A regra roda na próxima vez que os gastos com IA do espaço de trabalho forem lidos (o painel e a página Gastos os leem). Os rascunhos nunca são emitidos sem a aprovação habitual.

Sessão conectada com acesso 'create' a pedidos de compra; uma chave de API recebe 403.

Erros

  • 400 Bad Request - dayOfMonth não é um número inteiro de 1 a 28.
  • 403 Forbidden - Quem chama é uma chave de API ou não tem acesso 'create' a pedidos de compra.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
PUT /v1/workspaces/{regionId}/ai-spend/renewal-rule
Requisição
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/renewal-rule" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "enabled": true,
   "dayOfMonth": 25
}
Resposta · 200 OK
The rule, as GetAiRenewalRule returns it

Obter atribuição de IA

As regras que atribuem gastos com IA a centros de custo.

GET/v1/workspaces/{regionId}/ai-spend/attribution

Parâmetros

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Suas regras de atribuição em ordem - vale a primeira que corresponde a uma linha -, com o que cada uma alcançou no período, o que nenhuma regra alcançou e os valores de dimensão por trás dos gastos não alcançados (do maior para o menor), para escrever a próxima regra a partir deles. Uma regra associa uma dimensão do provedor a um centro de custo: tag (tag de alocação de custos da AWS) ou label (Google Cloud), com sua chave; project (OpenAI, Google Cloud), workspace (Anthropic), resource_group (Azure), compartment (OCI), cluster (nuvens de GPU), api_key ou inference_profile. Uma linha que nenhuma regra alcança fica sem atribuição: exibida, nunca oculta. Exige acesso 'view' a fornecedores ou a faturas.

Campos da resposta

  • versionnumber

    Envie-a de volta com SetAiAttribution, para que um salvamento não sobrescreva o de outra pessoa.

  • rules[].invoicerIdstring

    Só as linhas desse faturador; todos os faturadores quando ausente.

  • rules[].matchedArray<object>

    O que a regra alcançou no período, uma entrada por moeda.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/attribution
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/attribution" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "period": "string",
   "version": number,
   "updatedAt": "string",
   "rules": [
      { "id": "string", "invoicerId": "string", "dimension": "string", "key": "string", "value": "string", "costCenter": "string", "matched": [ { "currency": "string", "amount": number } ] }
   ],
   "unattributed": [ { "currency": "string", "amount": number } ],
   "unmatchedValues": [ { "invoicerId": "string", "key": "string", "value": "string", "currency": "string", "amount": number } ]
}

Definir atribuição de IA

Substitui as regras de atribuição.

PUT/v1/workspaces/{regionId}/ai-spend/attribution

Corpo

  • rulesArray<{ id?, invoicerId?, dimension, key?, value, costCenter }>Obrigatório

    Todas as regras, da que corresponde primeiro em diante. No máximo 200. Mantenha o id de uma regra para mantê-la; uma regra nova recebe um.

  • versionnumberObrigatório

    A versão que GetAiAttribution retornou; 0 no primeiro salvamento.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Substitui todas as regras, em ordem, a partir da versão que você leu. Uma regra tag ou label precisa da sua chave; o centro de custo precisa ser um dos do espaço de trabalho. Uma regra sobre uma tag da AWS ou um rótulo do Google Cloud faz a próxima sincronização ler também por ela as linhas de IA dessa conta (uma chave de tag da AWS por conta). Retorna as regras como GetAiAttribution. Exige acesso 'edit' a pedidos de compra.

Erros

  • 400 Bad Request - Uma regra tag ou label não tem chave, ou um centro de custo não é um dos do espaço de trabalho.
  • 409 Conflict - Alguém salvou as regras depois que você as leu; leia-as de novo.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
PUT /v1/workspaces/{regionId}/ai-spend/attribution
Requisição
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/attribution" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "rules": [ { "dimension": "tag", "key": "team", "value": "search", "costCenter": "CC-410" } ],
   "version": 3
}
Resposta · 200 OK
The rules, as GetAiAttribution returns them

Listar centros de custo de IA

Orçamentos dos centros de custo com os gastos com IA que estão acumulando.

GET/v1/workspaces/{regionId}/ai-spend/cost-centers

Parâmetros

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

O orçamento de cada centro de custo, committed (pedidos aprovados) e actual (faturas aprovadas) do controle orçamentário, com o uso de IA atribuído deste mês como accruing - um terceiro número, ainda não faturado - e sua previsão, na moeda do orçamento; o percentual do orçamento com a previsão; e o alerta enviado. Quando a previsão, somada ao comprometido e ao faturado, atinge 80% ou 100% de um orçamento, a Pleaxy envia uma notificação ai_forecast_over_budget uma vez por limite por mês, pelos canais do espaço de trabalho. Nada é bloqueado. Exige acesso 'view' a pedidos de compra.

Campos da resposta

  • budgetModestring

    O modo do controle orçamentário. off: nenhum orçamento é mantido, as linhas trazem só os números de IA e nenhum alerta é enviado.

  • rows[].pctWithForecastnumber

    (committed + actual + forecast) / budget, em percentual. Ausente sem orçamento.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/cost-centers
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/cost-centers" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "period": "string",
   "budgetMode": "string",
   "thresholds": [ number ],
   "rows": [
      { "costCenter": "string", "costCenterName": "string", "currency": "string", "budget": number, "committed": number, "actual": number, "accruing": number, "forecast": number, "pctWithForecast": number, "alert": { "threshold": number, "sentAt": "string" } }
   ],
   "unattributed": [ { "currency": "string", "monthToDate": number, "forecast": number } ]
}

Listar limites de gastos com IA

Os tetos de gastos definidos nos provedores, e suas credenciais.

GET/v1/workspaces/{regionId}/ai-spend/limits

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Opcional, ativado por você: os tetos de gastos que a Pleaxy definiu nos provedores a partir das suas linhas de pedido aprovadas, e quais faturadores têm uma credencial de limites (nunca a chave). Um teto é o seu próprio limite no provedor - um orçamento da AWS, um limite de projeto da OpenAI, um limite de workspace da Anthropic, um orçamento ou limite de gastos do Google Cloud, um orçamento da Azure -, definido com uma credencial que você cria separadamente da conexão somente leitura e remove quando quiser. Exige acesso 'view' a pedidos de compra.

Campos da resposta

  • limits[].enforcementstring

    deny: o provedor interrompe os gastos no teto (um limite da OpenAI ou da Anthropic, um limite de gastos do Google Cloud, uma ação de orçamento da AWS que anexa a sua política de negação - a AWS atualiza os orçamentos poucas vezes ao dia, então com horas de atraso). alert: só notifica (Azure, ou um orçamento do Google Cloud ou da AWS sem ela).

  • limits[].readBackobject

    O que a releitura do teto no provedor retornou, e quando.

  • limits[].historyArray<object>

    Cada gravação que a Pleaxy fez para a linha no provedor, as 20 últimas.

Erros

  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/limits
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limits" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "credentials": [ { "invoicerId": "string", "invoicer": "aws" | "openai" | "anthropic" | "gcp" | "azure", "keyHint": "string", "notifyEmail": "string", "createdAt": "string" } ],
   "limits": [
      {
         "poId": "string", "lineNo": number, "invoicerId": "string", "invoicer": "string", "target": "string",
         "amount": number, "currency": "string", "period": "string", "providerRef": "string",
         "enforcement": "deny" | "alert", "state": "set" | "failed" | "removed",
         "readBack": { "amount": number, "at": "string" },
         "history": [ { "at": "string", "by": "string", "action": "set" | "raise" | "remove" | "failed", "amount": number, "readBack": number, "error": "string" } ]
      }
   ]
}

Definir limite de gastos com IA

Define o valor de uma linha de pedido aprovada como teto do provedor.

PUT/v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}

Parâmetros

  • poIdstringObrigatório

    O pedido aprovado.

  • lineNonumberObrigatório

    A linha do pedido cujo valor é o teto.

Corpo

  • invoicerIdstringObrigatório

    A conta ou o provedor de IA que o pedido cobre, com uma credencial de limites.

  • targetstring

    OpenAI: o projeto (proj_...). Anthropic: o workspace (wrkspc_...). Google Cloud: o projeto, para um limite de gastos.

  • denyboolean

    Interromper os gastos no teto onde o provedor permitir. true se omitido; false só alerta.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Grava o valor da linha como teto de gastos do faturador dela para o mês (o primeiro mês da linha, quando ela começa depois), relê o teto e registra a gravação. Só para um pedido aprovado e aberto emitido para esse faturador, com uma credencial de limites para ele. Recusado abaixo dos gastos do mês até a data, com os números. Aumentar a linha (uma nova versão) aumenta o teto; fechar o pedido o remove. A Pleaxy nunca altera nem exclui no provedor nada que não tenha criado. Exige acesso 'edit' a pedidos de compra.

Conectado por meio de um agente, isto é uma solicitação de agente que a pessoa confirma na Pleaxy; uma chave de API com 'edit' em pedidos de compra age na hora.

Erros

  • 400 Bad Request - O pedido não está aprovado e aberto, ou não foi emitido para esse faturador; não há credencial de limites para ele; o teto ficaria abaixo dos gastos do mês até a data; ou o provedor o recusou (o motivo diz por quê: a credencial, um projeto ou workspace ausente, uma moeda que ele não aceita).
  • 404 Not Found - Não existe esse pedido, linha ou faturador, ou os limites não estão ativados nesta região.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
PUT /v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}
Requisição
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "invoicerId": "aip_01k8q2m4xv7c9n3p5t6r8w0yzb",
   "target": "proj_abc"
}
Resposta · 200 OK
The limit, as an entry of ListAiSpendLimits' limits

Remover limite de gastos com IA

Remove o teto que a Pleaxy definiu para uma linha de pedido.

DELETE/v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}

Parâmetros

  • poIdstringObrigatório

    O pedido.

  • lineNonumberObrigatório

    A linha do pedido.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Exclui o teto que a Pleaxy definiu para a linha no provedor (só um que a Pleaxy nomeou) e registra a exclusão. Exige acesso 'edit' a pedidos de compra.

Erros

  • 404 Not Found - Nenhum teto para essa linha.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
DELETE /v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}
Requisição
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
The limit, as an entry of ListAiSpendLimits' limits, with state removed

Definir credencial de limites de IA

Adiciona a credencial separada com que os tetos de um faturador são definidos.

PUT/v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}

Parâmetros

  • invoicerIdstringObrigatório

    O id da conexão de nuvem ou do provedor de IA.

Corpo

  • roleArnstring

    AWS: o ARN da função PleaxyAiLimits.

  • executionRoleArnstring

    AWS, para interromper os gastos: o ARN da função de execução do template.

  • denyPolicyArnstring

    AWS, para interromper os gastos: o ARN da política de negação do template.

  • roleNamesArray<string>

    AWS, para interromper os gastos: os nomes das funções às quais a política de negação é anexada.

  • serviceAccountEmailstring

    Google Cloud: a conta de serviço de limites.

  • clientIdstring

    Azure: o ID do cliente do aplicativo de limites.

  • keystring

    OpenAI ou Anthropic: uma chave de administrador separada para os limites.

  • notifyEmailstring

    Para quem o provedor envia e-mail ao atingir um teto: necessário para a Azure e para um teto da AWS que interrompe os gastos.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

A credencial de gravação para os tetos de um faturador, separada da conexão somente leitura dele, que nunca é ampliada: uma função de limites da AWS (do template do CloudFormation aws-ai-limits da Pleaxy: só AWS Budgets e, opcionalmente, uma política de negação sobre chamadas ao Amazon Bedrock que o orçamento anexa em 100%), uma conta de serviço de limites do Google Cloud no pool de identidades da conexão, um aplicativo de limites da Azure com a credencial federada da conexão, ou uma chave de administrador separada da OpenAI ou da Anthropic (armazenada criptografada, nunca retornada). Verificada com uma leitura antes de ser salva. Remova-a para encerrar o recurso para esse faturador.

Sessão conectada com acesso 'edit' a fornecedores; uma chave de API recebe 403.

Erros

  • 400 Bad Request - Falta um campo de que o provedor precisa; é a própria credencial da conexão somente leitura; ou o provedor a recusou, e nada foi salvo.
  • 403 Forbidden - Quem chama é uma chave de API ou não tem 'edit' em fornecedores.
  • 404 Not Found - Não existe esse faturador, ou os limites não estão ativados nesta região.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
PUT /v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}
Requisição
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "roleArn": "arn:aws:iam::123456789012:role/PleaxyAiLimits"
}
Resposta · 200 OK
The credential, as an entry of ListAiSpendLimits' credentials

Remover credencial de limites de IA

Remove a credencial de limites de um faturador.

DELETE/v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}

Parâmetros

  • invoicerIdstringObrigatório

    O id da conexão de nuvem ou do provedor de IA.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

A Pleaxy não define mais tetos nesse faturador; a conexão somente leitura continua como estava. Exclua também a função, a conta de serviço, o aplicativo ou a chave no provedor.

Sessão conectada com acesso 'edit' a fornecedores; uma chave de API recebe 403.

Erros

  • 403 Forbidden - Quem chama é uma chave de API ou não tem 'edit' em fornecedores.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
DELETE /v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}
Requisição
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
{
   "invoicerId": "string"
}

Listar contagens de assentos de IA

Usuários ativos de um mês nos produtos de IA por assento.

GET/v1/workspaces/{regionId}/ai-spend/seats

Parâmetros

  • periodstring

    O mês, YYYY-MM. Por padrão, o mês atual.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

A IA por assento (ChatGPT Enterprise, Claude Enterprise, Microsoft 365 Copilot, GitHub Copilot, Cursor) é faturada por assento. Estes são os usuários ativos registrados para cada produto em um mês, e de onde veio cada contagem. Uma linha de fatura com medidor seats que cobra mais assentos do que a contagem do mês é uma constatação ai_seats_above_active; uma condição de contrato que compromete assentos aparece na aba Compromissos em relação à contagem mais recente. Exige acesso 'view' a fornecedores ou a faturas.

Erros

  • 400 Bad Request - period não é um mês no formato YYYY-MM.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
GET /v1/workspaces/{regionId}/ai-spend/seats
Requisição
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/seats" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Resposta · 200 OK
[
   { "invoicer": "string", "product": "string", "period": "string", "activeUsers": number, "source": "okta" | "entra" | "google_workspace" | "jumpcloud" | "provider_console" | "manual", "recordedAt": "string", "recordedBy": "string" }
]

Definir contagem de assentos de IA

Registra os usuários ativos de um mês em um produto por assento.

PUT/v1/workspaces/{regionId}/ai-spend/seats

Corpo

  • invoicerstringObrigatório

    Quem fatura os assentos: openai, anthropic, microsoft, github, cursor, ...

  • productstringObrigatório

    O produto por assento como a linha do pedido o nomeia (seu ai.model), por exemplo chatgpt-enterprise.

  • periodstringObrigatório

    O mês, YYYY-MM.

  • activeUsersnumberObrigatório

    Usuários com um assento que entraram naquele mês.

  • sourcestringObrigatório

    okta, entra, google_workspace, jumpcloud, provider_console ou manual.

Retorna

200 OK com o objeto mostrado na resposta.

Mais detalhes

Registra quantos usuários de um produto por assento estiveram ativos em um mês, conforme o seu provedor de identidade (Okta, Microsoft Entra, Google Workspace, JumpCloud) ou o console de administração do provedor informa, substituindo a contagem desse mês. A Pleaxy não lê o seu provedor de identidade por conta própria: envie a contagem por um script, um agente ou manualmente. Exige acesso 'edit' a faturas.

Erros

  • 400 Bad Request - Um campo está ausente ou fora do intervalo.
  • 401 Unauthorized - Nenhuma credencial foi apresentada, ou o token Bearer / valor de X-Api-Key está ausente, é inválido, expirou ou foi revogado.
  • 403 Forbidden - O token Bearer ou a chave de API de quem chama não dá acesso a este espaço de trabalho (regionId), ou não tem a função exigida.
PUT /v1/workspaces/{regionId}/ai-spend/seats
Requisição
curl -X PUT "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/seats" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "invoicer": "openai",
   "product": "chatgpt-enterprise",
   "period": "2026-10",
   "activeUsers": 182,
   "source": "okta"
}
Resposta · 200 OK
The count, as an entry of ListAiSeatCounts
Fale conosco