Riferimento API

Spesa in IA

Spesa in modelli di IA per emittente della fattura, produttore del modello, modello e contatore, confrontata con i tuoi ordini d’acquisto.

Altro su questa risorsa

Novità con i controlli della spesa in IA. La spesa in IA è quanto costano le voci dei servizi di IA sulla fatturazione AWS, Google Cloud, Azure e OCI che hai collegato (Amazon Bedrock, SageMaker, Vertex AI, Azure OpenAI, OCI Generative AI e i modelli del marketplace sulla stessa fattura), più quanto riportano i provider IA che colleghi direttamente (vedi Provider IA). Pleaxy le legge tramite la stessa connessione in sola lettura del resto della fattura, con la stessa scelta delle fonti di dati: una connessione che consente current_cost dà il mese in corso e una previsione; una che consente invoices, il mese chiuso. AWS è l’eccezione: fornisce le voci di IA solo tramite Cost Explorer, quindi una connessione AWS richiede current_cost per qualsiasi cifra di IA (con esso arriva anche il mese chiuso). Il fornitore è chi emette la fattura (l’emittente); l’azienda il cui modello è stato usato è il vendor della voce, quindi Claude su Bedrock è spesa AWS con vendor anthropic, e nulla viene contato due volte. Ogni importo è nella valuta di fatturazione dell’emittente, mai convertito né sommato tra valute. Le regole di attribuzione associano tag, etichette, progetti e workspace dei provider ai centri di costo (GetAiAttribution), e una riga d’ordine approvata può impostare il tetto di spesa del provider stesso (SetAiSpendLimit, su attivazione).

Ottenere la spesa in IA

Spesa in IA di un periodo, per emittente, produttore del modello, modello o centro di costo.

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

Parametri

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

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

    Che cos’è ogni gruppo. Per impostazione predefinita invoicer, che corrisponde alle tue fatture. vendor somma un produttore di modelli tra gli emittenti (quanto spendi per Claude, chiunque lo fatturi), model un id di modello come fatturato, costCenter i centri di costo delle regole di attribuzione.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Per un periodo (per impostazione predefinita il mese in corso), la spesa in IA di ogni emittente collegato, raggruppata secondo groupBy: mese in corso, previsione per l’intero periodo, ultimo mese chiuso e variazione rispetto a esso, con il consumo per contatore e, accanto a ogni emittente, le righe di ordine d’acquisto aperte emesse a suo nome e quanto vi resta. Le cifre sono le voci di IA sincronizzate dalle connessioni (ogni giorno per current_cost, come oggi il costo del mese in corso). Un emittente la cui connessione legge solo le fatture mostra il mese chiuso: il suo mese in corso e la sua previsione sono assenti (un account AWS che legge solo le fatture non ha voci di IA ed è elencato in notReadable). La previsione è quella del provider quando la fornisce (AWS Cost Explorer), altrimenti lineare sui giorni trascorsi. Gli importi sono nella valuta di fatturazione di ciascun emittente, e i totali sono una voce per valuta, mai sommati tra valute. Raggruppare per costCenter segue le regole di attribuzione (GetAiAttribution); una voce che nessuna regola intercetta è non attribuita.

Campi della risposta

  • periodstring

    Il mese a cui si riferiscono le cifre, YYYY-MM.

  • asOfstring

    Quando è stata sincronizzata la voce più recente, ISO 8601. Il mese in corso è aggiornato a quel momento, non a ora.

  • totalsArray<object>

    Una voce per valuta di fatturazione, mai sommate tra valute: monthToDate, forecast per l’intero periodo, lastMonth (l’ultimo mese chiuso) e changePct, la variazione della previsione rispetto a lastMonth in percentuale.

  • groups[].keystring

    Secondo groupBy: l’id della connessione cloud dell’emittente; il produttore del modello (anthropic, openai, google, meta, mistral, amazon, microsoft, cohere, xai, deepseek o unknown per un tipo di utilizzo che Pleaxy non ha ancora mappato); l’id del modello come fatturato, ad es. claude-sonnet-4-5 o gemini-2.5-pro; oppure il codice del centro di costo.

  • groups[].labelstring

    Cosa mostrare per il gruppo: l’etichetta dell’account della connessione, il nome del produttore del modello, il nome del modello o il nome del centro di costo.

  • groups[].invoicerstring

    Chi fattura la spesa del gruppo, un cloud o un provider IA, con invoicerId come sua connessione: sempre con groupBy invoicer e, per un gruppo per produttore o per modello, quando una sola connessione fattura tutto (Claude solo tramite Bedrock, ad esempio); assente quando sono più di una. Un gruppo per centro di costo non ne ha mai uno.

  • groups[].monthToDatenumber

    Nella valuta del gruppo, con forecast, lastMonth e changePct come in totals. monthToDate e forecast sono assenti per un emittente la cui connessione legge solo le fatture: mostra solo lastMonth.

  • groups[].quantitiesArray<object>

    Il consumo per contatore. Voci misurate in token: input_tokens, output_tokens, cached_input_tokens, cache_write_tokens, batch_input_tokens, batch_output_tokens, images, audio_seconds, embeddings_tokens o requests. Voci di capacità: gpu_hours, ptu_hours, model_units_hours o cluster_hours. other per una voce che Pleaxy non ha ancora mappato su un contatore. unit è l’unità della quantità: 1M_tokens, tokens, requests, images, seconds, gpu_hours, ptu_hours, model_unit_hours o units per una voce non mappata.

  • groups[].purchaseOrdersArray<object>

    Le righe di ordine d’acquisto aperte emesse all’emittente del gruppo, con quanto resta su ciascuna (remaining, nella valuta del gruppo) dopo le fatture già imputate. Solo per un gruppo con emittente.

  • groups[].servicesArray<object>

    Solo con groupBy invoicer: le cifre del gruppo per servizio del provider (Amazon Bedrock, con i modelli del marketplace che fattura; Amazon SageMaker; Vertex AI; ...), come le mostra la scheda Cloud della pagina Spesa.

  • unattributedArray<object>

    Solo con groupBy costCenter: la spesa che nessuna regola di attribuzione ha intercettato, una voce per valuta nella forma di un gruppo, mostrata e mai nascosta. Scrivi una regola per essa con SetAiAttribution.

  • notReadableArray<object>

    Gli account collegati senza voci di IA, e il motivo: needs_current_cost per un account AWS la cui connessione non consente il costo corrente (AWS fornisce le sue voci di IA solo tramite Cost Explorer), not_synced_yet per uno le cui voci di IA non sono ancora state lette. Assente quando non ce ne sono.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM, oppure groupBy non è invoicer, vendor, model o costCenter.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend
Richiesta
GET /v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.buyer/ai-spend?period=2026-10&groupBy=vendor
Risposta · 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 } ]
      }
   ]
}

Elencare le voci di utilizzo IA

Elenca le voci di utilizzo IA dietro le cifre, una pagina alla volta.

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

Parametri

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

  • invoicerIdstring

    Solo le voci fatturate tramite questa connessione cloud.

  • vendorstring

    Solo questo produttore di modelli, ad es. anthropic.

  • modelstring

    Solo questo id di modello come fatturato, ad es. claude-sonnet-4-5.

  • costCenterstring

    Solo le voci attribuite a questo centro di costo (il suo codice). Le voci vengono attribuite dalle regole di attribuzione.

  • limitnumber

    Dimensione della pagina, da 1 a 500. Per impostazione predefinita, 100.

  • cursorstring

    Il nextCursor della pagina precedente. Omettilo per la prima pagina.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Le voci normalizzate da cui si somma la spesa in IA: una per emittente, giorno, produttore del modello, modello, contatore e regione, come le ha riportate la fatturazione del provider. Ogni connettore legge i propri nomi (tipi di utilizzo di AWS Cost Explorer, SKU dell’esportazione della fatturazione di Google Cloud, contatori di Azure Cost Management, SKU di utilizzo OCI) e li mappa a un produttore, un modello e un contatore; un tipo di utilizzo che Pleaxy non conosce ancora viene conservato con il suo nome grezzo e vendor unknown, mai scartato. Dal giorno più recente. Passa il nextCursor di una pagina come cursor per la pagina successiva, e continua finché nextCursor non è assente. Le voci sono conservate con dettaglio giornaliero per 90 giorni, poi per mese.

Campi della risposta

  • invoicerstring

    Il cloud sulla cui fattura si trova la voce, con invoicerId come sua connessione. È lui il fornitore, qualunque sia il produttore del modello.

  • vendorstring

    L’azienda il cui modello è stato usato, letta dal tipo di utilizzo, dallo SKU o dal nome del contatore. unknown quando Pleaxy non ha ancora mappato quel tipo di utilizzo; rawUsageType dice allora come lo ha chiamato il provider.

  • modelstring

    L’id del modello come lo fattura il provider, ad es. claude-sonnet-4-5 o gemini-2.5-pro.

  • shapestring

    tokens per una voce misurata in token (produttore × modello × contatore × regione); capacity per throughput provisionato, ore di GPU o un cluster dedicato (produttore × sku × contatore).

  • meterstring

    input_tokens, output_tokens, cached_input_tokens, cache_write_tokens, batch_input_tokens, batch_output_tokens, images, audio_seconds, embeddings_tokens o requests per i token; gpu_hours, ptu_hours, model_units_hours o cluster_hours per la capacità; other, con unit units, per un tipo di utilizzo che Pleaxy non ha ancora mappato.

  • daystring

    YYYY-MM-DD. Dopo 90 giorni le voci sono conservate per mese, e day è allora il primo giorno del mese.

  • amountnumber

    Quanto il provider addebita per la voce, al netto delle imposte, in currency: come lo riporta il provider, mai convertito.

  • unitPricenumber

    amount diviso per quantity, nell’unità del listino, quando quantity è maggiore di 0: quanto è stato effettivamente addebitato per la voce, da confrontare con ListAiRateCards.

  • attributionobject

    Come il provider stesso attribuisce la voce, con i nomi che usa: un tag di allocazione dei costi o un profilo di inferenza dell’applicazione (AWS), un’etichetta o un progetto (Google Cloud), un gruppo di risorse o un tag (Azure), un compartimento (OCI). Assente quando la voce non ne ha alcuno.

  • sourcestring

    Da quale lettura proviene la voce: AWS Cost Explorer (cost_explorer), l’esportazione della fatturazione BigQuery di Google Cloud (billing_export), Azure Cost Management (cost_management) o l’API di utilizzo OCI (usage_api).

  • rawServicestring

    Il nome del servizio secondo il provider stesso e, come rawUsageType, il suo tipo di utilizzo, SKU o nome del contatore, conservati per gli audit e su ogni voce non mappata.

  • nextCursorstring

    Opaco. Assente quando non ci sono voci più vecchie.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM, limit è fuori intervallo, oppure cursor non è uno restituito da questa route.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/lines
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/lines" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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"
}

Elencare i listini IA

Elenca i prezzi di listino pubblici dei modelli di IA, in vigore in un dato giorno.

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

Parametri

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

    Solo i prezzi di questo emittente.

  • vendorstring

    Solo i modelli di questo produttore, ad es. anthropic.

  • modelstring

    Solo questo id di modello come fatturato.

  • onstring

    Un giorno, YYYY-MM-DD: solo la voce in vigore quel giorno, per emittente, produttore, modello, contatore e regione. Se omesso, vengono restituite tutte le voci.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

I prezzi di listino pubblici che Pleaxy mantiene per ogni emittente, produttore, modello, contatore e regione che mappa, con date di validità, presi dalle pagine dei prezzi dei provider stessi. Una variazione di prezzo è una nuova voce con il proprio effectiveFrom; nulla viene modificato sul posto, così una voce di spesa è sempre giudicata rispetto al prezzo in vigore nel suo giorno. Con on, viene restituita solo la voce in vigore quel giorno per emittente, produttore, modello, contatore e regione; senza, tutte le voci, passate e attuali. La tariffa negoziata di un contratto o il suo sconto sul listino prevale sul listino quando Pleaxy verifica le tue voci; i listini in sé non si possono modificare.

Campi della risposta

  • unitPricenumber

    Il prezzo di listino per unità, in currency: per 1.000.000 di token per 1M_tokens, per ora per le unità di capacità.

  • regionstring

    Solo dove l’emittente applica prezzi per regione; assente per un prezzo valido ovunque.

  • effectiveFromstring

    Il giorno in cui il prezzo è entrato in vigore, YYYY-MM-DD, e, come effectiveTo, una volta sostituito, l’ultimo giorno in cui si è applicato. Senza effectiveTo: ancora in vigore.

  • sourceUrlstring

    La pagina dei prezzi del provider da cui è stata presa la voce.

Errori

  • 400 Bad Request - on non è un giorno nel formato YYYY-MM-DD, oppure invoicer non è aws, gcp, azure o oci.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-rate-cards
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-rate-cards" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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"
   }
]

Verificare la spesa in IA

Dice se la previsione del periodo rientra nelle righe di ordine d’acquisto aperte e nel budget.

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

Corpo

  • invoicerIdstring

    La connessione cloud da verificare: la sua previsione rispetto a ogni riga di ordine d’acquisto aperta emessa a suo nome.

  • costCenterstring

    Il codice o il nome di un centro di costo: la sua spesa in IA attribuita e la sua previsione rispetto al suo budget per il periodo, quando i budget sono attivi. Le voci vengono attribuite dalle regole di attribuzione.

  • poIdstring

    Un ordine d’acquisto: solo le sue righe aperte, per l’emittente a cui è stato emesso.

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Risponde a «Bedrock rientrerà in PO-8842 questo mese?» con le stesse cifre di GetAiSpend: il mese in corso e la previsione di un emittente, di un centro di costo o di un ordine d’acquisto, confrontati con le righe di ordine d’acquisto aperte emesse a quell’emittente e, con un centro di costo e i budget attivi, con il suo budget. Nulla viene salvato e nulla blocca: l’esito è ciò che mostra la scheda IA della pagina Spesa e ciò che rispondono l’Assistente e lo strumento MCP check_ai_spend. Indica almeno uno tra invoicerId, costCenter e poId; poId implica l’emittente a cui è stato emesso.

Campi della risposta

  • outcomestring

    fits: la previsione rientra in quanto resta sulle righe aperte (e nel budget). over: non rientra; l’overBy di ogni riga dice di quanto, e budget.remaining diventa negativo. no_po: nessuna riga di ordine d’acquisto aperta è emessa all’emittente per il periodo. no_budget: è stato indicato un centro di costo che però non ha budget per il periodo, oppure i budget sono disattivati.

  • currencystring

    La valuta di fatturazione dell’emittente, in cui sono espressi monthToDate, forecast e le cifre delle righe. Nulla viene convertito: un budget tenuto in un’altra valuta dà no_budget.

  • purchaseOrdersArray<object>

    Le righe aperte verificate, ciascuna con remaining dopo le fatture già imputate e, quando la previsione lo supera, overBy.

  • budgetobject

    Solo con costCenter e i budget attivi: il budget del centro di costo per il periodo, committed (ordini d’acquisto aperti), actual (fatture), accruing (spesa in IA attribuita del mese in corso, non ancora fatturata: una terza cifra, mai confusa con le altre due) e remaining.

Errori

  • 400 Bad Request - Nessuno tra invoicerId, costCenter e poId è stato indicato, oppure period non è un mese nel formato YYYY-MM.
  • 404 Not Found - Nessuna connessione cloud, centro di costo o ordine d’acquisto con quell’id nel workspace.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
POST /v1/workspaces/{regionId}/ai-spend/check
Richiesta
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"
}
Risposta · 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 }
}

Suggerire righe d’ordine IA

Righe di ordine d’acquisto precompilate dall’utilizzo IA di un emittente.

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

Parametri

  • invoicerIdstringObbligatorio

    L’emittente da cui proviene l’utilizzo delle righe: groups[].invoicerId di GetAiSpend.

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, l’ultimo mese chiuso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Le righe che "Aggiungi righe IA" precompila in un ordine d’acquisto: per un emittente e un mese (per impostazione predefinita l’ultimo mese chiuso), una riga per ogni modello e contatore fatturato, con il volume del mese arrotondato per eccesso come quantità e un prezzo unitario preso dalla condizione attiva del tuo contratto per quel modello (la sua tariffa o il suo sconto sul listino), altrimenti dal prezzo di listino di oggi, altrimenti da quanto è stato fatturato nel mese - priceSource indica quale. Le righe che Pleaxy non è riuscita a ricondurre a un contatore, e i crediti senza un prezzo in denaro, non vengono proposti. Nulla viene salvato: invia le righe a CreatePurchaseOrder, con il contractId indicato da ciascuna riga. Richiede l’accesso 'view' agli ordini d’acquisto.

Campi della risposta

  • providerstring

    Per un emittente cloud: il provider a cui emettere l’ordine. Un provider IA diretto fornisce invece supplierConnectionId, la sua scheda fornitore.

  • lines[].aiobject

    L’ambito IA della riga, da inviare come lineItems[].ai.

  • lines[].unitstring

    L’unità del contatore: 1M_tokens per un contatore a token, gpu_hours e simili per la capacità.

  • lines[].priceSourcestring

    contract (contractId e contractTermId indicano la condizione), list (il listino alla data di oggi) o billed (quanto è costato il mese per unità, quando Pleaxy non ha un prezzo per il modello).

  • lines[].periodQuantitynumber

    Quanto è stato consumato nel mese, con periodAmount quanto è stato fatturato, da mostrare nel modulo d’ordine accanto alla riga.

Errori

  • 400 Bad Request - invoicerId manca, oppure period non è un mese nel formato YYYY-MM.
  • 404 Not Found - Nessun emittente collegato con quell’id nel workspace.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/po-lines
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/po-lines" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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
      }
   ]
}

Emettere il periodo IA successivo

Crea una bozza dello stesso ordine per il mese successivo.

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

Parametri

  • poIdstringObbligatorio

    L’ordine da emettere di nuovo: uno con righe di IA, o l’ordine di un provider cloud.

Restituisce

201 Created con l’oggetto mostrato nella risposta.

Più dettagli

"Emetti il periodo successivo": una bozza dello stesso ordine - fornitore, centro di costo, contratto e righe - per il mese successivo a quello delle sue righe. La quantità di ogni riga di IA è la previsione basata sull’utilizzo di questo mese finora, lineare sui giorni trascorsi (la sua quantità attuale quando non è stato ancora usato nulla); ogni altra riga mantiene la sua quantità. La bozza passa per la normale approvazione quando viene inviata. Senza corpo. Richiede l’accesso 'create' agli ordini d’acquisto.

Errori

  • 400 Bad Request - L’ordine non ha righe di IA e non è un ordine cloud.
  • 404 Not Found - Nessun ordine di questo tipo nel workspace.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
POST /v1/workspaces/{regionId}/ai-spend/next-period/{poId}
Richiesta
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/next-period/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 201 Created
PurchaseOrder (the draft), as GetPurchaseOrder returns it

Ottieni i consigli sull'IA

La spesa per l'IA che nessun ordine copre, e modi più economici di acquistarla.

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

Parametri

  • periodstring

    Il mese di cui verificare la copertura, YYYY-MM. Predefinito: questo mese.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Cosa consiglia la scheda IA della pagina Spesa. uncovered elenca ogni fatturatore la cui previsione del mese non è coperta da alcun ordine d'acquisto aperto: no_po quando non gli è stato emesso alcun ordine, over_po quando la previsione supera quanto resta sui suoi ordini, con gap l'importo che serve a un nuovo ordine. savings elenca modi più economici di acquistare l'utilizzo del mese scorso, ai prezzi di listino di oggi: batch (il massimo che si risparmierebbe spostando i token interattivi alla tariffa batch), cache (quanto fa risparmiare ogni ulteriore 10% di input letto dalla cache) e reserve (ore GPU usate con una base stabile nella maggior parte dei giorni, e le GPU che quella base tiene occupate; senza importo, perché le prenotazioni hanno un prezzo da contratto). Gli importi sotto 10 non sono elencati, e ogni importo resta nella valuta di fatturazione del fatturatore. Richiede l'accesso 'view' ai fornitori o alle fatture.

Campi della risposta

  • basisPeriodstring

    Il mese da cui si leggono i risparmi: l'ultimo chiuso.

  • uncovered[].coverednumber

    Quanto resta per il mese sulle righe degli ordini aperti emessi a questo fatturatore.

  • uncovered[].gapnumber

    forecast meno covered: ciò che serve a un nuovo ordine. DraftAiOrders ne crea la bozza.

  • uncovered[].poIdsstring[]

    Per over_po, gli ordini aperti che ne coprono una parte.

  • accountsobject[]

    Come uncovered, per account cloud interi: tutta la loro spesa, dalla stima corrente del provider, rispetto agli ordini aperti che coprono l'account. Solo questo mese. La spesa IA di un account ne fa parte, quindi non sommare mai le due liste.

  • savings[].savingnumber

    batch: il massimo che fa risparmiare al mese se tutto girasse in batch (adatto solo al lavoro che può aspettare). cache: quanto fa risparmiare al mese ogni ulteriore 10% di input servito dalla cache. Assente per reserve.

  • savings[].detail.cachedSharenumber

    cache: la quota di input già letta dalla cache, da 0 a 1.

  • savings[].detail.reservableUnitsnumber

    reserve: le GPU che la base stabile di steadyHoursPerDay tiene occupate giorno e notte, in daysUsed giorni del mese.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/recommendations
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/recommendations" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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 }
      }
   ]
}

Crea bozze di ordini IA

Crea la bozza di un ordine per la spesa IA non coperta di ogni fatturatore.

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

Corpo

  • invoicerIdsstring[]Obbligatorio

    I fatturatori per cui creare un ordine, da 1 a 20: uncovered[].invoicerId da GetAiRecommendations.

  • periodstring

    Il mese coperto dagli ordini, YYYY-MM. Predefinito: questo mese.

  • scopestring

    ai (predefinito): righe per modello e contatore per l'utilizzo IA. account: una riga a importo per tutto ciò che un account cloud fattura, fino al suo gap in accounts, fino a fine mese.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

"Crea bozza d'ordine" su un consiglio: per ogni fatturatore indicato, la bozza di un ordine d'acquisto per il mese con una riga per modello e contatore dell'utilizzo del mese scorso, ai prezzi che applica SuggestAiPoLines, e come quantità di ciascuna la previsione dall'utilizzo di questo mese finora. Quando gli ordini aperti coprono già parte della previsione, le quantità sono ridotte alla differenza. La bozza di un cloud è emessa al provider per quell'account; quella di un provider di IA diretto, alla sua scheda fornitore. skipped spiega perché un fatturatore non ha avuto una bozza. Le bozze passano per l'approvazione abituale quando vengono inviate. Richiede l'accesso 'create' agli ordini d'acquisto.

Campi della risposta

  • drafts[].poIdstring

    La bozza dell'ordine: GetPurchaseOrder la legge, e inviarla la manda in approvazione.

  • skipped[].reasonstring

    no_usage: non c'è ancora utilizzo IA su cui basare un ordine. no_supplier: un provider di IA diretto senza scheda fornitore a cui emetterlo. no_forecast (scope account): non c'è ancora una stima della spesa corrente per l'account. already_drafted: per questa spesa c'è già una bozza, o un ordine in attesa di approvazione, questo mese; poId lo indica e non viene creata una seconda bozza.

Errori

  • 400 Bad Request - invoicerIds è vuoto o ne ha più di 20, period non è un mese nel formato YYYY-MM, oppure scope è account per un fatturatore che non è un account cloud.
  • 404 Not Found - Nessun fatturatore collegato con uno di questi id nell'area di lavoro.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
POST /v1/workspaces/{regionId}/ai-spend/draft-orders
Richiesta
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"
}
Risposta · 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": { } } ]
}

Elencare gli impegni IA

Spesa e capacità IA impegnate, e crediti prepagati, con quanto è stato usato.

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

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Ciò che mostra la scheda Impegni della pagina Spesa: ogni condizione dei tuoi contratti attivi con una spesa impegnata o una capacità riservata, con quanto ne ha consumato l’utilizzo IA sincronizzato entro la sua durata, quanto resta e, per la spesa, il ritmo fino alla fine della condizione; e ogni riga d’ordine di crediti prepagati con quanto vi hanno imputato le sue fatture. Richiede l’accesso 'view' ai fornitori o alle fatture.

Campi della risposta

  • committednumber

    spend: l’importo impegnato, in currency. capacity: le unità riservate moltiplicate per le ore della condizione trascorse finora. prepaid_credit: quanto ha acquistato la riga d’ordine.

  • usednumber

    spend: gli importi delle voci di IA sincronizzate coperte dalla condizione, nella sua valuta. capacity: le ore usate. prepaid_credit: quanto le fatture hanno imputato sulla riga.

  • projectednumber

    Solo spend: quanto la condizione avrà consumato alla sua scadenza al ritmo attuale.

Errori

  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/commitments
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/commitments" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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"
   }
]

Ottenere la regola di rinnovo IA

La regola che crea in bozza gli ordini IA del mese successivo.

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

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Se gli ordini IA del mese successivo vengono creati in bozza dalla previsione, da quale giorno del mese, e cosa ha creato la sua ultima esecuzione. Disattivata finché qualcuno non la attiva. Richiede l’accesso 'view' agli ordini d’acquisto.

Campi della risposta

  • ownerSubstring

    Chi l’ha attivata: le bozze vengono create a suo nome, finché è ancora membro del workspace.

  • draftedForstring

    L’ultimo mese per cui sono state create bozze, YYYY-MM: ogni mese viene elaborato una sola volta.

Errori

  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/renewal-rule
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/renewal-rule" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
{
   "enabled": boolean,
   "dayOfMonth": number,
   "ownerSub": "string",
   "updatedAt": "string",
   "draftedFor": "string",
   "lastRun": { "at": "string", "period": "string", "drafts": [ { "poId": "string", "draftId": "string" } ] }
}

Impostare la regola di rinnovo IA

Attiva o disattiva la regola di rinnovo degli ordini IA.

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

Corpo

  • enabledbooleanObbligatorio

    Se gli ordini IA del mese successivo vengono creati in bozza.

  • dayOfMonthnumber

    Da 1 a 28: il giorno da cui vengono create le bozze. 25 se omesso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

A partire da dayOfMonth, una volta al mese, Pleaxy crea in bozza l’ordine del mese successivo per ogni ordine aperto con righe di IA valide questo mese, come fa RaiseNextAiPeriod, a nome di chi ha attivato la regola. La regola viene eseguita alla successiva lettura della spesa in IA del workspace (la dashboard e la pagina Spesa la leggono). Le bozze non vengono mai emesse senza la normale approvazione.

Sessione con accesso effettuato con accesso 'create' agli ordini d’acquisto; una chiave API riceve 403.

Errori

  • 400 Bad Request - dayOfMonth non è un numero intero da 1 a 28.
  • 403 Forbidden - Il chiamante è una chiave API o non ha l’accesso 'create' agli ordini d’acquisto.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
PUT /v1/workspaces/{regionId}/ai-spend/renewal-rule
Richiesta
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
}
Risposta · 200 OK
The rule, as GetAiRenewalRule returns it

Ottenere l’attribuzione IA

Le regole che attribuiscono la spesa in IA ai centri di costo.

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

Parametri

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Le tue regole di attribuzione in ordine - vince la prima che corrisponde a una voce - con quanto ciascuna ha intercettato nel periodo, quanto nessuna regola ha intercettato e i valori di dimensione dietro la spesa non intercettata (dal più grande), da cui scrivere la regola successiva. Una regola associa una dimensione del provider a un centro di costo: tag (tag di allocazione dei costi AWS) o label (Google Cloud), con la sua chiave; project (OpenAI, Google Cloud), workspace (Anthropic), resource_group (Azure), compartment (OCI), cluster (cloud GPU), api_key o inference_profile. Una voce che nessuna regola intercetta è non attribuita: mostrata, mai nascosta. Richiede l’accesso 'view' ai fornitori o alle fatture.

Campi della risposta

  • versionnumber

    Rimandala con SetAiAttribution, così un salvataggio non può sovrascrivere quello di qualcun altro.

  • rules[].invoicerIdstring

    Solo le voci di quell’emittente; tutti gli emittenti se assente.

  • rules[].matchedArray<object>

    Quanto la regola ha intercettato nel periodo, una voce per valuta.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/attribution
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/attribution" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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 } ]
}

Impostare l’attribuzione IA

Sostituisce le regole di attribuzione.

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

Corpo

  • rulesArray<{ id?, invoicerId?, dimension, key?, value, costCenter }>Obbligatorio

    Tutte le regole, dalla prima che corrisponde. Al massimo 200. Mantieni l’id di una regola per conservarla; una regola nuova ne riceve uno.

  • versionnumberObbligatorio

    La versione restituita da GetAiAttribution; 0 per il primo salvataggio.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Sostituisce tutte le regole, in ordine, a partire dalla versione che hai letto. Una regola tag o label richiede la sua chiave; il centro di costo deve essere uno di quelli del workspace. Una regola su un tag AWS o un’etichetta Google Cloud fa sì che la sincronizzazione successiva legga anche in base a essa le voci di IA di quell’account (una chiave di tag AWS per account). Restituisce le regole come GetAiAttribution. Richiede l’accesso 'edit' agli ordini d’acquisto.

Errori

  • 400 Bad Request - Una regola tag o label non ha la chiave, oppure un centro di costo non è uno di quelli del workspace.
  • 409 Conflict - Qualcuno ha salvato le regole dopo che le hai lette; rileggile.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
PUT /v1/workspaces/{regionId}/ai-spend/attribution
Richiesta
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
}
Risposta · 200 OK
The rules, as GetAiAttribution returns them

Elencare i centri di costo IA

Budget dei centri di costo con la spesa in IA in maturazione.

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

Parametri

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Il budget di ogni centro di costo, committed (ordini approvati) e actual (fatture approvate) dal controllo del budget, con l’utilizzo IA attribuito di questo mese come accruing - una terza cifra, non ancora fatturata - e la sua previsione, nella valuta del budget; la percentuale del budget con la previsione; e l’avviso inviato. Quando la previsione, sommata all’impegnato e al fatturato, raggiunge l’80% o il 100% di un budget, Pleaxy invia una notifica ai_forecast_over_budget una volta per soglia al mese, tramite i canali del workspace. Nulla viene bloccato. Richiede l’accesso 'view' agli ordini d’acquisto.

Campi della risposta

  • budgetModestring

    La modalità del controllo del budget. off: non si tengono budget, le righe riportano solo le cifre IA e non viene inviato alcun avviso.

  • rows[].pctWithForecastnumber

    (committed + actual + forecast) / budget, in percentuale. Assente senza budget.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/cost-centers
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/cost-centers" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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 } ]
}

Elencare i limiti di spesa IA

I tetti di spesa impostati presso i provider, e le loro credenziali.

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

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Su attivazione: i tetti di spesa che Pleaxy ha impostato presso i provider dalle tue righe d’ordine approvate, e quali emittenti hanno una credenziale per i limiti (mai la chiave). Un tetto è il tuo limite presso il provider - un budget AWS, un limite di progetto OpenAI, un limite di workspace Anthropic, un budget o uno spend cap Google Cloud, un budget Azure - impostato con una credenziale che crei separatamente dalla connessione in sola lettura, e che rimuovi quando vuoi. Richiede l’accesso 'view' agli ordini d’acquisto.

Campi della risposta

  • limits[].enforcementstring

    deny: il provider ferma la spesa al tetto (un limite OpenAI o Anthropic, uno spend cap Google Cloud, un’azione di budget AWS che collega la tua policy di negazione - AWS aggiorna i budget poche volte al giorno, quindi con ore di ritardo). alert: invia solo una notifica (Azure, o un budget Google Cloud o AWS senza di essa).

  • limits[].readBackobject

    Cosa ha restituito la rilettura del tetto presso il provider, e quando.

  • limits[].historyArray<object>

    Ogni scrittura che Pleaxy ha fatto per la riga presso il provider, le ultime 20.

Errori

  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/limits
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limits" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 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" } ]
      }
   ]
}

Impostare un limite di spesa IA

Imposta l’importo di una riga d’ordine approvata come tetto del provider.

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

Parametri

  • poIdstringObbligatorio

    L’ordine approvato.

  • lineNonumberObbligatorio

    La riga d’ordine il cui importo è il tetto.

Corpo

  • invoicerIdstringObbligatorio

    L’account o il provider IA coperto dall’ordine, con una credenziale per i limiti.

  • targetstring

    OpenAI: il progetto (proj_...). Anthropic: il workspace (wrkspc_...). Google Cloud: il progetto, per uno spend cap.

  • denyboolean

    Ferma la spesa al tetto dove il provider lo consente. true se omesso; false invia solo un avviso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Scrive l’importo della riga come tetto di spesa del suo emittente per il mese (il primo mese della riga, se inizia più tardi), lo rilegge e registra la scrittura. Solo per un ordine approvato e aperto emesso a quell’emittente, con una credenziale per i limiti. Rifiutato se inferiore alla spesa del mese in corso, con le cifre. Aumentare la riga (una nuova versione) alza il tetto; chiudere l’ordine lo rimuove. Pleaxy non modifica né elimina mai presso il provider nulla che non abbia creato. Richiede l’accesso 'edit' agli ordini d’acquisto.

Con accesso effettuato tramite un agente, è una richiesta dell’agente che la persona conferma in Pleaxy; una chiave API con 'edit' sugli ordini d’acquisto agisce subito.

Errori

  • 400 Bad Request - L’ordine non è approvato e aperto, o non è emesso a quell’emittente; non c’è una credenziale per i limiti; il tetto sarebbe inferiore alla spesa del mese in corso; oppure il provider l’ha rifiutato (il motivo spiega perché: la credenziale, un progetto o workspace mancante, una valuta che non accetta).
  • 404 Not Found - Nessun ordine, riga o emittente di questo tipo, oppure i limiti non sono attivi in questa regione.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
PUT /v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}
Richiesta
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"
}
Risposta · 200 OK
The limit, as an entry of ListAiSpendLimits' limits

Rimuovere un limite di spesa IA

Rimuove il tetto che Pleaxy ha impostato per una riga d’ordine.

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

Parametri

  • poIdstringObbligatorio

    L’ordine.

  • lineNonumberObbligatorio

    La riga d’ordine.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Elimina il tetto che Pleaxy ha impostato per la riga presso il provider (solo uno a cui Pleaxy ha dato il nome) e lo registra. Richiede l’accesso 'edit' agli ordini d’acquisto.

Errori

  • 404 Not Found - Nessun tetto per quella riga.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
DELETE /v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}
Richiesta
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limits/{poId}/{lineNo}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
The limit, as an entry of ListAiSpendLimits' limits, with state removed

Impostare la credenziale per i limiti IA

Aggiunge la credenziale separata con cui si impostano i tetti di un emittente.

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

Parametri

  • invoicerIdstringObbligatorio

    L’id della connessione cloud o del provider IA.

Corpo

  • roleArnstring

    AWS: l’ARN del ruolo PleaxyAiLimits.

  • executionRoleArnstring

    AWS, per fermare la spesa: l’ARN del ruolo di esecuzione del template.

  • denyPolicyArnstring

    AWS, per fermare la spesa: l’ARN della policy di negazione del template.

  • roleNamesArray<string>

    AWS, per fermare la spesa: i nomi dei ruoli a cui è collegata la policy di negazione.

  • serviceAccountEmailstring

    Google Cloud: il service account per i limiti.

  • clientIdstring

    Azure: il client ID dell’app per i limiti.

  • keystring

    OpenAI o Anthropic: una chiave di amministrazione separata per i limiti.

  • notifyEmailstring

    A chi scrive il provider al raggiungimento di un tetto: necessario per Azure e per un tetto AWS che ferma la spesa.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

La credenziale di scrittura per i tetti di un emittente, separata dalla sua connessione in sola lettura, che non viene mai ampliata: un ruolo per i limiti AWS (dal template CloudFormation aws-ai-limits di Pleaxy: solo AWS Budgets e, facoltativamente, una policy di negazione sulle chiamate ad Amazon Bedrock che il budget collega al 100%), un service account per i limiti Google Cloud nel pool di identità della connessione, un’app per i limiti Azure con la credenziale federata della connessione, oppure una chiave di amministrazione OpenAI o Anthropic separata (memorizzata cifrata, mai restituita). Verificata con una lettura prima di essere salvata. Rimuovila per terminare la funzionalità per quell’emittente.

Sessione con accesso effettuato con accesso 'edit' ai fornitori; una chiave API riceve 403.

Errori

  • 400 Bad Request - Manca un campo richiesto dal provider; è la credenziale stessa della connessione in sola lettura; oppure il provider l’ha rifiutata, e non è stato salvato nulla.
  • 403 Forbidden - Il chiamante è una chiave API o non ha 'edit' sui fornitori.
  • 404 Not Found - Nessun emittente di questo tipo, oppure i limiti non sono attivi in questa regione.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
PUT /v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}
Richiesta
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"
}
Risposta · 200 OK
The credential, as an entry of ListAiSpendLimits' credentials

Rimuovere la credenziale per i limiti IA

Rimuove la credenziale per i limiti di un emittente.

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

Parametri

  • invoicerIdstringObbligatorio

    L’id della connessione cloud o del provider IA.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Pleaxy non imposta più tetti presso quell’emittente; la connessione in sola lettura resta com’era. Elimina anche il ruolo, il service account, l’app o la chiave presso il provider.

Sessione con accesso effettuato con accesso 'edit' ai fornitori; una chiave API riceve 403.

Errori

  • 403 Forbidden - Il chiamante è una chiave API o non ha 'edit' sui fornitori.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
DELETE /v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}
Richiesta
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/limit-credentials/{invoicerId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
{
   "invoicerId": "string"
}

Elencare i conteggi delle licenze IA

Utenti attivi in un mese dei prodotti IA a licenza per utente.

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

Parametri

  • periodstring

    Il mese, YYYY-MM. Per impostazione predefinita, il mese in corso.

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

L’IA a licenza per utente (ChatGPT Enterprise, Claude Enterprise, Microsoft 365 Copilot, GitHub Copilot, Cursor) è fatturata per licenza. Questi sono gli utenti attivi registrati per ogni prodotto in un mese, e da dove proviene ogni conteggio. Una riga di fattura con contatore seats che fattura più licenze del conteggio del mese è un rilievo ai_seats_above_active; una condizione contrattuale che impegna licenze compare nella scheda Impegni rispetto al conteggio più recente. Richiede l’accesso 'view' ai fornitori o alle fatture.

Errori

  • 400 Bad Request - period non è un mese nel formato YYYY-MM.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
GET /v1/workspaces/{regionId}/ai-spend/seats
Richiesta
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/ai-spend/seats" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Risposta · 200 OK
[
   { "invoicer": "string", "product": "string", "period": "string", "activeUsers": number, "source": "okta" | "entra" | "google_workspace" | "jumpcloud" | "provider_console" | "manual", "recordedAt": "string", "recordedBy": "string" }
]

Impostare il conteggio delle licenze IA

Registra gli utenti attivi in un mese di un prodotto a licenza.

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

Corpo

  • invoicerstringObbligatorio

    Chi fattura le licenze: openai, anthropic, microsoft, github, cursor, ...

  • productstringObbligatorio

    Il prodotto a licenza come lo indica la riga d’ordine (il suo ai.model), ad es. chatgpt-enterprise.

  • periodstringObbligatorio

    Il mese, YYYY-MM.

  • activeUsersnumberObbligatorio

    Utenti con una licenza che hanno effettuato l’accesso in quel mese.

  • sourcestringObbligatorio

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

Restituisce

200 OK con l’oggetto mostrato nella risposta.

Più dettagli

Registra quanti utenti di un prodotto a licenza sono stati attivi in un mese, come li riporta il tuo identity provider (Okta, Microsoft Entra, Google Workspace, JumpCloud) o la console di amministrazione del provider, sostituendo il conteggio di quel mese. Pleaxy non legge da sé il tuo identity provider: invia il conteggio da uno script, da un agente o a mano. Richiede l’accesso 'edit' alle fatture.

Errori

  • 400 Bad Request - Un campo manca o è fuori intervallo.
  • 401 Unauthorized - Non è stata presentata alcuna credenziale, oppure il token Bearer o il valore di X-Api-Key è mancante, non valido, scaduto o revocato.
  • 403 Forbidden - Il token Bearer o la chiave API del chiamante non dà accesso a questo workspace (regionId), oppure non ha il ruolo richiesto.
PUT /v1/workspaces/{regionId}/ai-spend/seats
Richiesta
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"
}
Risposta · 200 OK
The count, as an entry of ListAiSeatCounts
Contattaci