# Slack Notification Sender (`automation-lab/slack-notification`) Actor

Send messages to Slack channels via incoming webhooks. Supports plain text, Slack mrkdwn formatting, and Block Kit blocks for rich interactive notifications. Ideal for automated alerts, monitoring pipelines, and workflow integrations. No API credentials needed.

- **URL**: https://apify.com/automation-lab/slack-notification.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Developer tools, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Slack Notification Sender

Send messages to any Slack channel using **Incoming Webhooks** — no bot tokens, no OAuth flows, no Slack app maintenance. One webhook URL, one message, done.

Built for developers, data teams, and automation engineers who want Slack notifications as a step in their Apify workflows. Trigger it from the Apify Scheduler, chain it after a scraper, or call it via the API whenever something interesting happens.

---

### What Does It Do?

This actor sends a Slack message to a channel of your choice via an Incoming Webhook URL. You can send:

- **Plain text** — simple `Hello world` messages
- **Slack mrkdwn** — `*bold*`, `_italic_`, `` `code` ``, `<url|label>` links, `:emoji:` codes
- **Block Kit blocks** — rich interactive messages with headers, sections, buttons, images, and more

The actor pushes one dataset item per run with the result: success/failure, HTTP status code, channel name, and delivery timestamp.

---

### Who Is It For?

#### Developers running scrapers on a schedule
You scrape product prices every morning. Instead of manually checking the dataset, connect this actor as a downstream task and get a Slack summary when new data arrives.

#### Data teams monitoring pipelines
Your ETL pipeline runs nightly. Use this actor to send a Slack alert when the pipeline finishes — or when it fails — so the team knows immediately without checking dashboards.

#### Ops teams building no-code alerting
You want uptime alerts, price drops, or news summaries sent to your #alerts channel. Chain this actor after the monitoring actor in a webhook chain — no code required.

#### Automation engineers
You need Slack as a sink in a multi-step workflow. This actor is an API-first, headless Slack sender that fits into any pipeline.

---

### Why Use It Instead of Calling the Webhook Directly?

| You have | Use |
|----------|-----|
| A cURL command or small script | Call the webhook directly — that's fine |
| An Apify workflow with multiple actors | Use this actor as a downstream notification step |
| Non-technical colleagues building automations in Apify Console | This actor provides a UI form with field descriptions |
| A need to log notification history in a dataset | This actor stores every send attempt with status |

---

### What Data Does It Output?

Each run pushes one item to the dataset:

| Field | Type | Description |
|-------|------|-------------|
| `success` | Boolean | Whether the message was delivered successfully |
| `statusCode` | Number | HTTP status code from Slack's webhook endpoint |
| `channel` | String | The channel name if overridden, otherwise `null` |
| `timestamp` | String | ISO 8601 timestamp of when the message was sent |
| `errorMessage` | String | Error message from Slack if the send failed, otherwise `null` |

---

### How Much Does It Cost?

Pricing is pay-per-event (PPE):

| Event | Price |
|-------|-------|
| Actor start | $0.01 (one-time per run) |
| Notification sent | $0.005 per message delivered |

**Typical cost per notification: $0.015** (start + one message).

Sending one Slack alert costs less than a fraction of a cent on the Apify platform compute costs alone. The PPE model means you only pay when a message is actually delivered.

**Free plan estimate:** Apify's free tier includes $5/month of compute. At $0.015 per notification, that covers ~333 notifications per month before any charges.

---

### How to Use It

#### Step 1: Create a Slack Incoming Webhook

1. Go to [api.slack.com/apps](https://api.slack.com/apps) and create a new app (or use an existing one).
2. Under **Features**, click **Incoming Webhooks** and toggle it on.
3. Click **Add New Webhook to Workspace** and select the channel.
4. Copy the webhook URL — it looks like: `https://hooks.slack.com/services/T.../B.../XXXX`

#### Step 2: Run the Actor

1. Open the actor in Apify Console.
2. Paste your webhook URL in the **Webhook URL** field.
3. Type your message in the **Message Text** field.
4. (Optional) Override the channel, bot name, or icon emoji.
5. Click **Start** and check your Slack channel.

#### Step 3: Automate It

Use the actor in a webhook chain:
1. In Apify Console, open any actor or task you want to trigger a notification from.
2. Under **Integrations**, add a webhook with event `ACTOR.RUN.SUCCEEDED`.
3. Set the webhook target to `https://api.apify.com/v2/acts/automation-lab~slack-notification/runs`.
4. Configure the `defaultInput` with your webhook URL and message template.

---

### Input Parameters

#### Required

| Parameter | Type | Description |
|-----------|------|-------------|
| `webhookUrl` | String | The Slack Incoming Webhook URL from your Slack app settings |
| `message` | String | The message text. Supports Slack mrkdwn formatting |

#### Optional

| Parameter | Type | Description |
|-----------|------|-------------|
| `channel` | String | Override the target channel (e.g. `#alerts` or `@username`) |
| `username` | String | Override the bot display name shown in Slack |
| `iconEmoji` | String | Override the bot icon with a Slack emoji (e.g. `:bell:`) |
| `blocks` | Array | Slack Block Kit blocks (JSON array) for rich message formatting |

---

### Slack mrkdwn Formatting Reference

Slack's mrkdwn syntax (not standard Markdown) is supported in the `message` field:

| Syntax | Result |
|--------|--------|
| `*bold text*` | **bold text** |
| `_italic text_` | *italic text* |
| `` `inline code` `` | `inline code` |
| `` ```code block``` `` | code block |
| `<https://example.com\|link text>` | clickable link |
| `:emoji_name:` | Slack emoji |
| `<!channel>` | @channel mention |
| `<!here>` | @here mention |
| `<@U12345678>` | mention a specific user |

---

### Block Kit Examples

For rich messages, use Slack's [Block Kit Builder](https://app.slack.com/block-kit-builder) to compose blocks visually, then paste the JSON into the `blocks` field.

#### Simple Header + Text Block

```json
[
    {
        "type": "header",
        "text": { "type": "plain_text", "text": "Scraper finished" }
    },
    {
        "type": "section",
        "text": { "type": "mrkdwn", "text": "*Results:* 1,234 items scraped\n*Duration:* 4m 12s" }
    }
]
````

#### Alert Block with Button

```json
[
    {
        "type": "section",
        "text": { "type": "mrkdwn", "text": ":red_circle: *Price Alert*\nProduct XYZ dropped to *$49.99* (was $79.99)" }
    },
    {
        "type": "actions",
        "elements": [
            {
                "type": "button",
                "text": { "type": "plain_text", "text": "View Product" },
                "url": "https://example.com/product/xyz"
            }
        ]
    }
]
```

***

### Integrations

#### Chain After a Scraper Run

Use Apify webhooks to fire this actor whenever a scraper completes:

```json
{
    "webhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK",
    "message": "Scraper finished. {{resource.defaultDatasetId}} items collected."
}
```

#### Zapier / Make.com

Call this actor via the Apify API from a Zapier "Run Actor" step. Pass dynamic values from previous Zap steps into the `message` field.

#### GitHub Actions

Trigger a Slack notification at the end of a CI/CD workflow:

```yaml
- name: Notify Slack
  run: |
    curl -s -X POST https://api.apify.com/v2/acts/automation-lab~slack-notification/runs \
      -H "Authorization: Bearer $APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{
        "webhookUrl": "${{ secrets.SLACK_WEBHOOK_URL }}",
        "message": "Deployment to production complete :white_check_mark:"
      }'
```

#### Monitoring Alerts

Combine with the [Website Uptime Checker](https://apify.com/automation-lab/website-uptime-checker) to get a Slack alert when your site goes down:

1. Schedule the uptime checker to run every 5 minutes.
2. On failure, fire a webhook that runs this actor with a `#alerts` channel message.

***

### API Usage

#### Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('automation-lab/slack-notification').call({
    webhookUrl: 'https://hooks.slack.com/services/YOUR/WEBHOOK',
    message: 'Hello from Node.js! :wave:',
    channel: '#notifications',
    username: 'My Bot',
});

console.log('Run status:', run.status);
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('automation-lab/slack-notification').call(run_input={
    'webhookUrl': 'https://hooks.slack.com/services/YOUR/WEBHOOK',
    'message': 'Hello from Python! :snake:',
    'channel': '#notifications',
})

print(f"Run status: {run['status']}")
```

#### cURL

```bash
curl -s -X POST \
  "https://api.apify.com/v2/acts/automation-lab~slack-notification/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "webhookUrl": "https://hooks.slack.com/services/YOUR/WEBHOOK",
    "message": "Hello from cURL! :terminal:",
    "channel": "#alerts",
    "username": "CurlBot"
  }'
```

***

### Use with Claude AI (MCP)

This actor is available as a tool in Claude AI through the Model Context Protocol (MCP). Add it to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

#### Setup for Claude Code

```bash
claude mcp add --transport http apify "https://mcp.apify.com"
```

#### Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

```json
{
    "mcpServers": {
        "apify": {
            "url": "https://mcp.apify.com"
        }
    }
}
```

#### Example prompts

- "Send a Slack notification to #alerts with the message: 'Server CPU is at 95%, investigate immediately'."
- "Use my Slack webhook to post a Block Kit message with header 'Scrape Complete' and body showing 1,234 results collected."
- "Send a Slack message to #dev-ops saying the nightly ETL pipeline finished successfully at 3:42 AM."

Learn more in the [Apify MCP documentation](https://docs.apify.com/platform/integrations/mcp).

***

### Legality and Slack ToS

This actor uses Slack's official **Incoming Webhooks** API, which is a first-party Slack feature designed for exactly this use case. There is no scraping, no reverse engineering, and no TOS violations.

Requirements:

- You must own or have permission to use the Slack workspace and channel.
- The webhook URL is tied to your Slack app — do not share it publicly.
- Usage must comply with [Slack's API Terms of Service](https://slack.com/intl/en-us/legal#terms-of-service).

***

### FAQ

#### How do I get a Slack webhook URL?

Go to [api.slack.com/apps](https://api.slack.com/apps), create a new app, enable Incoming Webhooks, add it to a workspace, and copy the generated URL. It takes about 2 minutes.

#### Can I send to multiple channels in one run?

No — this actor is designed to send one message per run. To send to multiple channels, create multiple tasks (one per channel) and run them concurrently, or call the actor multiple times via the API.

#### The actor says "no\_team" — what does that mean?

This error comes directly from Slack. It means the webhook URL is invalid or has been revoked. Double-check the URL by copying it fresh from your Slack app settings at [api.slack.com/apps](https://api.slack.com/apps).

#### The actor says "channel\_not\_found" — what does that mean?

The channel override you provided (`channel` field) does not exist in the workspace tied to the webhook, or the webhook's app has not been invited to that channel. Either use the webhook's default channel (leave `channel` blank) or invite the app to the target channel in Slack.

#### Can I send to a private channel?

Yes, but the webhook's Slack app must first be added to that private channel. Use `/invite @YourAppName` in the channel.

#### Does this actor support Slack threads?

Not currently. Thread support requires the Slack Web API (with a bot token), not Incoming Webhooks. If you need thread replies, contact us to discuss a feature request.

#### Why is my message showing raw emoji codes like `:wave:` instead of the emoji?

Slack renders emoji codes in `mrkdwn` text fields, but not in `plain_text` fields or in Block Kit `plain_text` elements. Make sure you are using mrkdwn formatting for emoji.

***

### Related Actors

- [Website Uptime Checker](https://apify.com/automation-lab/website-uptime-checker) — Monitor your websites and trigger Slack alerts on downtime
- [Broken Link Checker](https://apify.com/automation-lab/broken-link-checker) — Find broken links and notify your team via Slack
- [Google News Scraper](https://apify.com/automation-lab/google-news-scraper) — Monitor brand mentions and send Slack summaries

# Actor input Schema

## `webhookUrl` (type: `string`):

Enter the Slack Incoming Webhook URL. Create one at: Slack App > Incoming Webhooks > Add New Webhook.

## `message` (type: `string`):

Enter the message text. Supports Slack mrkdwn: *bold*, *italic*, `code`, and \<url|label> links.

## `channel` (type: `string`):

Override the default channel (e.g. #alerts or @username). Leave blank to use the webhook's default channel.

## `username` (type: `string`):

Override the bot display name shown in Slack (e.g. 'Apify Bot'). Leave blank to use the webhook app's name.

## `iconEmoji` (type: `string`):

Override the bot icon using a Slack emoji code (e.g. :robot\_face: or :bell:). Leave blank to use the default app icon.

## `blocks` (type: `array`):

Provide Slack Block Kit blocks as a JSON array for rich message formatting. See https://app.slack.com/block-kit-builder for a visual editor. When blocks are provided, the message field is used as fallback text.

## Actor input object example

```json
{
  "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
  "message": "Hello from Apify! :wave: This is a test notification."
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
    "message": "Hello from Apify! :wave: This is a test notification."
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/slack-notification").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
    "message": "Hello from Apify! :wave: This is a test notification.",
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/slack-notification").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "webhookUrl": "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX",
  "message": "Hello from Apify! :wave: This is a test notification."
}' |
apify call automation-lab/slack-notification --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/slack-notification",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Slack Notification Sender",
        "description": "Send messages to Slack channels via incoming webhooks. Supports plain text, Slack mrkdwn formatting, and Block Kit blocks for rich interactive notifications. Ideal for automated alerts, monitoring pipelines, and workflow integrations. No API credentials needed.",
        "version": "0.1",
        "x-build-id": "hDEcDHCpN1ezxaV3T"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/automation-lab~slack-notification/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-automation-lab-slack-notification",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/automation-lab~slack-notification/runs": {
            "post": {
                "operationId": "runs-sync-automation-lab-slack-notification",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/automation-lab~slack-notification/run-sync": {
            "post": {
                "operationId": "run-sync-automation-lab-slack-notification",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "webhookUrl",
                    "message"
                ],
                "properties": {
                    "webhookUrl": {
                        "title": "Webhook URL",
                        "type": "string",
                        "description": "Enter the Slack Incoming Webhook URL. Create one at: Slack App > Incoming Webhooks > Add New Webhook."
                    },
                    "message": {
                        "title": "Message Text",
                        "type": "string",
                        "description": "Enter the message text. Supports Slack mrkdwn: *bold*, _italic_, `code`, and <url|label> links."
                    },
                    "channel": {
                        "title": "Channel Override",
                        "type": "string",
                        "description": "Override the default channel (e.g. #alerts or @username). Leave blank to use the webhook's default channel."
                    },
                    "username": {
                        "title": "Bot Username Override",
                        "type": "string",
                        "description": "Override the bot display name shown in Slack (e.g. 'Apify Bot'). Leave blank to use the webhook app's name."
                    },
                    "iconEmoji": {
                        "title": "Icon Emoji Override",
                        "type": "string",
                        "description": "Override the bot icon using a Slack emoji code (e.g. :robot_face: or :bell:). Leave blank to use the default app icon."
                    },
                    "blocks": {
                        "title": "Block Kit Blocks (JSON)",
                        "type": "array",
                        "description": "Provide Slack Block Kit blocks as a JSON array for rich message formatting. See https://app.slack.com/block-kit-builder for a visual editor. When blocks are provided, the message field is used as fallback text.",
                        "items": {
                            "type": "object"
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
