> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openops.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CloudZero

> An overview of how CloudZero can be integrated with OpenOps

export const NarrowImage = ({src, alt, widthPercent}) => {
  const className = `narrow-image-${useId().replace(/:/g, '-')}`;
  const widthRule = widthPercent ? `width: ${widthPercent}%;` : '';
  return <>
      <style>{`
        .${className} {
          max-width: 75%;
          ${widthRule}
        }
        @media (max-width: 768px) {
          .${className} {
            max-width: 100%;
            width: auto;
          }
        }
      `}</style>

      <img className={className} src={src} alt={alt} />
    </>;
};

OpenOps integrates with [CloudZero](https://www.cloudzero.com/) to automate the exchange of cost data and insights between CloudZero and your workflows.

## Actions

OpenOps provides one [action](/workflow-management/actions) for interacting with CloudZero:

<NarrowImage src="/images/cloudzero-actions.png" alt="CloudZero actions" />

The CloudZero action is based on the [CloudZero API](https://docs.cloudzero.com/reference/introduction) and requires configuring a CloudZero [connection](/cloud-access/access-levels-permissions) with an API key. API keys are created in CloudZero under **Settings** > **API Keys**, and each key is only displayed once after creation.

<NarrowImage src="/images/cloudzero-connection.png" alt="Configuring a CloudZero connection" />

The following section describes the action available in the CloudZero block.

### Custom API Call

Allows making arbitrary calls to any [CloudZero API](https://docs.cloudzero.com/reference/introduction) endpoint:

* **URL**: Dynamic endpoint selection
* **Method**: `GET`, `POST`, `PATCH`, `PUT`, `DELETE`, or `HEAD`
* **Headers**: Optional (authorization auto-injected)
* **Query Parameters**: Optional
* **Body**: Optional JSON payload

## Designing a workflow

A typical CloudZero workflow detects an optimization opportunity using OpenOps actions for the [cloud platforms OpenOps supports](/cloud-access/supported-cloud-providers), and then records the finding in CloudZero so that it appears alongside the rest of your cost data. For example, a scheduled workflow can read the list of development accounts from an OpenOps table, look for resources that match a rule specific to your organization, call the [Create Insight](https://docs.cloudzero.com/reference/createinsight) endpoint through *Custom API Call* for each finding, and notify the relevant team in Slack with a link to the new insight. Because the block exposes the API through *Custom API Call*, any endpoint in the [CloudZero API reference](https://docs.cloudzero.com/reference/introduction) can be used in the same way, including reading cost data to decide which team to notify.

For an example of driving a workflow from an OpenOps table, see [Creating a workflow to fill the project-owner mapping table](/integrations/cloudhealth#creating-a-workflow-to-fill-the-project-owner-mapping-table) in the CloudHealth guide. For the patterns behind owner mapping and decision tracking, see [Designing Workflows with FinOps Platforms](/cookbook/designing-workflows-with-finops-platforms).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.