Costfluent Docs
  • Pricing
  • Changelog
  • costfluent.com
  • Documentation
  • Guides
  • API Reference
Product
  • Pricing
  • Security
  • Changelog
Developers
  • API reference
  • Terraform
  • llms.txt
Legal
  • Privacy
  • Terms
  • Imprint
Get started
Concepts
Connect a source
Reporting
Allocation
Planning
Optimization
Administration
Developers
    Public API authenticationPublic API versioningPublic API paginationPublic API errorsPublic API rate limitsPublic API data formatsWebhook notificationsTerraform
Information
Workspaces
    List workspacesgetCreate workspacepostGet workspacegetUpdate workspaceputDelete workspacedelete
Workspace Providers
    List workspace providersgetCreate workspace providerpostGet workspace providergetUpdate workspace providerputDelete workspace providerdelete
Virtual Tags
    List virtual tagsgetCreate virtual tagpostGet virtual taggetDelete virtual tagdeleteUpdate virtual tagpatch
Utility
    Get current token infogetHealth checkget
Tags
    Get tag keygetDelete tag keydeleteList tag keysget
Saved Filters
    List saved filtersgetCreate saved filterpostGet saved filtergetUpdate saved filterputDelete saved filterdelete
Providers
    List providersgetConnect providerpostGet providergetUpdate providerputDelete providerdeleteGet available providersgetGet the AWS connectorgetGet provider sync historygetProvision the GCP service accountpostTest provider connectionpostTrigger provider syncpost
Kubernetes
    Report Kubernetes usagepost
Folders
    List foldersgetCreate folderpostGet foldergetUpdate folderputDelete folderdelete
Exchange Rates
    Get available currenciesgetGet exchange rategetGet the workspace's exchange rate policygetList exchange ratesget
Dashboards
    List dashboardsgetCreate dashboardpostGet dashboardgetUpdate dashboardputDelete dashboarddelete
Custom Provider
    List uploadsgetUpload cost filespostGet uploadgetDelete uploaddeleteSubmit costs batchpost
Report Notifications
    Activate report notificationpostList report notificationsgetCreate report notificationpostDeactivate report notificationpostGet report notificationgetDelete report notificationdeleteUpdate report notificationpatch
Cost Reports
    List cost reportsgetCreate cost reportpostGet cost reportgetUpdate cost reportputDelete cost reportdeleteGet cost report dataget
Cost Filters
    Translate a cost filterget
Cost Data
    Get cost datagetGet cost forecastgetGet cost summaryget
Cost Alerts
    List cost alertsgetCreate cost alertpostGet cost alertgetUpdate cost alertputDelete cost alertdeleteGet cost alert eventsgetPause cost alertpostResume cost alertpost
Contracting
    Get the data processing agreement statusget
Budgets
    List budgetsgetCreate budgetpostGet budgetgetUpdate budgetputDelete budgetdelete
Billing
    Get the account's entitlementgetGet the account's metered usageget
Anomalies
    Acknowledge anomalypostList anomaliesget
Allocation
    List allocation rulesgetCreate an allocation rulepostUpdate an allocation ruleputDelete an allocation ruledeleteReorder the allocation rule setpostRead allocation coveragegetList segmentsgetCreate a segmentpostUpdate a segmentputDelete a segmentdeletePreview an allocation rulepost
Schemas
Developers

Webhook notifications

What a Costfluent webhook channel posts to your endpoint for each kind of notification, and how to tell the kinds and the repeats apart.

A webhook channel posts each notification to your endpoint as JSON. Notification channels owns adding the channel and choosing what goes to it; this page describes what your endpoint receives.

Before you start

Available on the Starter, Core, Optimize and Scale plans. Compare plans

  • Your endpoint is reached at a public address and answers within 10 seconds.

The request

Each notification is one POST with a JSON body:

Code
{ "event_type": "budget_alert", "schema_version": 1, "subject": "Budget 'Platform' reached 80% threshold", "content": "Current spend: EUR 825.00 of EUR 1,000.00", "html_content": "<p>Current spend: <b>EUR 825.00</b> of EUR 1,000.00</p>", "timestamp": "2026-10-12T09:00:00.0000000Z", "app_id": "app_Xk2pQ9vLr4mN8tY1wZ3aBc" }
FieldMeaning
event_typeWhat the notification is about; see the table below. Branch on it rather than on the subject.
schema_versionThe version of this body. It is 1, and rises only when a field changes meaning or goes away; a new field or event type does not raise it.
subject, content, html_contentThe notification as a person reads it, in plain text and in HTML. The wording can change.
timestampWhen this attempt was sent, in UTC.
app_idThe channel the notification was sent to.

The request carries two headers:

HeaderValue
X-Costfluent-EventThe event_type, so a router can dispatch without reading the body.
X-Costfluent-DeliveryThe same on every attempt at one notification, so your endpoint can drop a repeat. A channel test has none.

Event types

event_typeSent when
budget_alertA budget crosses one of its thresholds.
cost_alertA spend threshold, unusual change or tag coverage alert fires.
anomalyA cost anomaly is detected in a workspace whose anomaly notifications name the channel.
channel_testSomeone selects Test on the channel.

How it behaves

  • Any 2xx answer is a delivery. Another status, a redirect, or no answer within 10 seconds is a failed attempt, retried as Notification channels describes.
  • A redirect is never followed.
  • Scheduled cost reports are delivered by email only, so no webhook receives them.

Related

  • Notification channels
  • Alerts
  • Public API versioning
Public API data formatsTerraform
On this page
  • Before you start
  • The request
  • Event types
  • How it behaves
  • Related
JSON