{
  "openapi": "3.0.1",
  "info": {
    "title": "Threads Brand Monitoring: AI Sentiment & Mention Alerts",
    "description": "First 25 mentions free. Threads brand monitoring: Threads mentions ranked with AI sentiment, priority and a reply draft — off-topic posts never billed by us. Spot Threads buying signals; MCP-ready. Free demo on any plan; live search runs on your Apify account, any plan that runs Store Actors.",
    "version": "0.1",
    "x-build-id": "LgLyaXbiHyTTp2NUD"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rich_minds~threads-brand-monitoring-ai/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rich_minds-threads-brand-monitoring-ai",
        "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/rich_minds~threads-brand-monitoring-ai/runs": {
      "post": {
        "operationId": "runs-sync-rich_minds-threads-brand-monitoring-ai",
        "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/rich_minds~threads-brand-monitoring-ai/run-sync": {
      "post": {
        "operationId": "run-sync-rich_minds-threads-brand-monitoring-ai",
        "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",
        "properties": {
          "brandTerms": {
            "title": "Your brand, product or domain names",
            "type": "array",
            "description": "The names to watch on Threads, e.g. <code>Acme</code> — searched and required in the post. Your brand replaces the sample: a live search on your account, capped at $0.50 (Max source spend), on any Apify plan that runs Store Actors — otherwise paste your posts under <b>Other sources</b>. Left as the sample, Start runs the free demo.",
            "items": {
              "type": "string"
            }
          },
          "preset": {
            "title": "Start from a ready niche search (one click)",
            "enum": [
              "custom",
              "saas-brand-watch",
              "support-complaint-queue",
              "competitor-buying-intent",
              "agency-watchlists",
              "busy-brand-daily",
              "crisis-watch",
              "competitor-leads"
            ],
            "type": "string",
            "description": "Pick a niche and press Start: it fills the fields you left empty and runs the live search (spend-capped by <code>maxDiscoveryChargeUsd</code>). Your own values always win. <b>Custom</b> = fill the fields yourself.",
            "default": "custom"
          },
          "brandBrief": {
            "title": "What is your brand? (one line, optional)",
            "type": "string",
            "description": "What the brand is, its products and its voice. The AI uses it to tell your brand from a homonym and to write reply drafts in your voice — only facts from here are ever used."
          },
          "minScore": {
            "title": "Minimum relevance (0–100)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "The field that decides what you pay: mentions scoring below this relevance are discarded and <b>not charged</b>. Raise it to pay only for posts clearly about you.",
            "default": 50
          },
          "maxQualified": {
            "title": "Max mentions to deliver",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Hard cap on results — and the ceiling of what <b>this Actor</b> charges: at most this many × $0.009 with AI on (× $0.0035 with AI off), e.g. 100 × $0.009 = $0.90; the source's own spend has its cap right below. The best mentions are delivered first.",
            "default": 100
          },
          "maxDiscoveryChargeUsd": {
            "title": "Max source spend (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Hard cap on what the Threads search may charge your account in <b>actor</b> mode — $0.50 in the form and for an API or agent call that leaves it out, so a first real search can never cost more. Raise it for more terms.",
            "default": 0.5
          },
          "enableAi": {
            "title": "AI assessment",
            "type": "boolean",
            "description": "The AI confirms each mention is about you, labels sentiment and type, quotes the proof and drafts a reply. <b>On = $0.009 per qualified mention + AI tokens; off = $0.0035</b> (rule-based relevance, sentiment, type and priority).",
            "default": true
          },
          "notifyEmail": {
            "title": "E-mail me the new mentions (optional)",
            "type": "string",
            "description": "After every run with at least one new mention, the digest (counts, share of voice, the 3 to act on first, links) is e-mailed here. Schedule it weekly and only new mentions reach your inbox. Never sent for the free demo."
          },
          "competitorTerms": {
            "title": "Competitor names",
            "type": "array",
            "description": "Competitors to watch too — searched like your brand. Their unhappy or shopping users become <code>sales_follow_up</code> mentions; the digest shows share of voice. Searched live on your Apify plan (the demo does not search it).",
            "items": {
              "type": "string"
            }
          },
          "handles": {
            "title": "Threads handles to watch",
            "type": "array",
            "description": "Your accounts, e.g. <code>@acme</code> — posts that @-tag them are mentions even when the brand name is not written out. Searched live on your Apify plan (the demo does not search it).",
            "items": {
              "type": "string"
            }
          },
          "hashtags": {
            "title": "Hashtags to watch",
            "type": "array",
            "description": "Campaign or brand hashtags, e.g. <code>#acmelaunch</code>. Searched live on your Apify plan (the demo does not search it).",
            "items": {
              "type": "string"
            }
          },
          "negativeTerms": {
            "title": "Exclude phrases (homonyms)",
            "type": "array",
            "description": "A post containing one of these is dropped free — e.g. <code>notion of</code>, <code>linear algebra</code> for a brand that is also a common word.",
            "items": {
              "type": "string"
            }
          },
          "contextTerms": {
            "title": "Product words (raise relevance)",
            "type": "array",
            "description": "Words that show a post is about your product, e.g. <code>app</code>, <code>template</code>, <code>workspace</code> — each adds relevance.",
            "items": {
              "type": "string"
            }
          },
          "mentionTypes": {
            "title": "Only these mention types",
            "type": "array",
            "description": "Keep only these types (empty = all): <code>complaint</code>, <code>question</code>, <code>buying_intent</code>, <code>praise</code>, <code>comparison</code>, <code>feature_request</code>, <code>news_share</code>, <code>other</code>.",
            "items": {
              "type": "string",
              "enum": [
                "complaint",
                "question",
                "buying_intent",
                "praise",
                "comparison",
                "feature_request",
                "news_share",
                "other"
              ],
              "enumTitles": [
                "Complaint",
                "Question",
                "Buying intent",
                "Praise",
                "Comparison",
                "Feature request",
                "News share",
                "Other"
              ]
            }
          },
          "sentiments": {
            "title": "Only these sentiments",
            "type": "array",
            "description": "Keep only these sentiments toward your brand (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "positive",
                "neutral",
                "negative",
                "mixed"
              ],
              "enumTitles": [
                "Positive",
                "Neutral",
                "Negative",
                "Mixed"
              ]
            }
          },
          "minPriority": {
            "title": "Minimum priority",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "type": "string",
            "description": "Keep mentions at or above this priority (type + sentiment + reach + recency).",
            "default": "low"
          },
          "languages": {
            "title": "Only these languages",
            "type": "array",
            "description": "Keep posts in these languages (empty = all). A post whose language the source did not report is kept.",
            "items": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "pt",
                "fr",
                "de",
                "it",
                "nl",
                "ja",
                "ko",
                "zh",
                "hi",
                "id",
                "tr",
                "pl"
              ],
              "enumTitles": [
                "English",
                "Spanish",
                "Portuguese",
                "French",
                "German",
                "Italian",
                "Dutch",
                "Japanese",
                "Korean",
                "Chinese",
                "Hindi",
                "Indonesian",
                "Turkish",
                "Polish"
              ]
            }
          },
          "maxAgeDays": {
            "title": "Only posts from the last N days",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Date window of the live search and the dataset (0 = no window). A scheduled run widens it to the days since its last run. Pasted posts are never dropped by it.",
            "default": 7
          },
          "postedAfter": {
            "title": "Only posts after this date (optional)",
            "type": "string",
            "description": "A fixed start date (YYYY-MM-DD) instead of the rolling window; applies to pasted posts too."
          },
          "minAuthorFollowers": {
            "title": "Minimum author followers",
            "minimum": 0,
            "type": "integer",
            "description": "Drop posts from accounts with fewer followers (0 = keep all). An author whose follower count is unknown is kept.",
            "default": 0
          },
          "excludeReposts": {
            "title": "Skip reposts",
            "type": "boolean",
            "description": "Reposts repeat someone else's post — skipped free.",
            "default": true
          },
          "excludeReplies": {
            "title": "Skip replies",
            "type": "boolean",
            "description": "Keep only top-level posts.",
            "default": false
          },
          "excludeOwnHandles": {
            "title": "Your own accounts (skip their posts)",
            "type": "array",
            "description": "Posts BY these accounts are not mentions — e.g. <code>@acme</code>, <code>@acme_support</code>.",
            "items": {
              "type": "string"
            }
          },
          "targetFlags": {
            "title": "Target flags (any of)",
            "type": "array",
            "description": "Only deliver mentions that have at least one of these flags, e.g. <code>complaint</code>, <code>high_reach</code> (<code>highReach</code> works too); an unknown name stops the run at once with the list of valid ones.",
            "items": {
              "type": "string"
            }
          },
          "suppressionList": {
            "title": "Exclude list",
            "type": "array",
            "description": "Post URLs, post ids or author handles to never output. Skipped before any processing and never charged.",
            "items": {
              "type": "string"
            }
          },
          "includeReplyDraft": {
            "title": "Draft a reply (AI)",
            "type": "boolean",
            "description": "For complaints, questions, buying-intent posts and comparisons the AI drafts a reply (≤ 280 characters) in your brand voice — from your brief only, never posted for you.",
            "default": true
          },
          "llmProvider": {
            "title": "AI model access",
            "enum": [
              "apify",
              "byok"
            ],
            "type": "string",
            "description": "<b>Apify (no keys)</b> — the AI runs through Apify's built-in OpenRouter proxy; tokens are billed to your Apify account at OpenRouter's rates. <b>My own key</b> — your OpenAI / Anthropic / Gemini / Groq key instead; a free-tier key assesses only a few mentions per run — expect 1–3 AI checks (2 calls at a time, one after a rate limit, then the 3 borderline mentions retried one by one) — and the rest keep their rule score; measured 2026-09-28: ≈ 12.9–62 s per mention (free Gemini key ≈ 12.9–39.6 s, free Groq openai/gpt-oss-120b key ≈ 62 s), so give 50 own-key mentions a <code>timeoutSecs</code> of ≈ 3300; a paid Groq / Gemini key (billing on) assesses every mention.",
            "default": "apify"
          },
          "llmModel": {
            "title": "AI model",
            "type": "string",
            "description": "Leave empty for the default (<code>anthropic/claude-haiku-4.5</code>). Apify mode takes an OpenRouter slug such as <code>openai/gpt-4.1-mini</code>; own-key mode takes <code>provider:model</code>, e.g. <code>anthropic:claude-haiku-4-5-20251001</code>."
          },
          "llmApiKey": {
            "title": "Your API key (own-key mode only)",
            "type": "string",
            "description": "Required when <b>AI model access</b> is <i>My own API key</i>. Stored encrypted by Apify, never logged."
          },
          "aiCandidateMultiplier": {
            "title": "AI candidate pool (× max mentions)",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "The best rule-scored candidates get the AI pass, best first, up to this multiple of <b>Max mentions to deliver</b>. Higher = more thorough, slower, more tokens.",
            "default": 2
          },
          "watchlists": {
            "title": "Watchlists — several brands / clients in one run",
            "type": "array",
            "description": "For agencies: one entry per client, e.g. <code>[{\"name\": \"Client A\", \"brandTerms\": [\"Acme\"], \"competitorTerms\": [\"Globex\"], \"negativeTerms\": [], \"brandBrief\": \"Acme — …\", \"webhookUrl\": \"https://…\", \"logoUrl\": \"https://…/logo.png\"}]</code>. Each gets its own digest record, webhook and memory; every post goes to the watchlist whose brand it names. Searched live on your Apify plan (the demo does not search it)."
          },
          "clientReports": {
            "title": "White-label report per client ($0.05 each)",
            "type": "boolean",
            "description": "On = every watchlist with new mentions gets its own client-ready page (<code>REPORT-&lt;client&gt;</code>: the client's name and <code>logoUrl</code>, counts, share of voice, negative spike, the 3 to act on first, the mentions — no Apify branding) to forward, <b>$0.05 per client per run with new mentions</b>. Off = one DIGEST per client, free. The free demo shows a sample (<code>REPORT-sample-client</code>).",
            "default": false
          },
          "slackWebhookUrl": {
            "title": "Post the digest to Slack (optional)",
            "type": "string",
            "description": "A Slack incoming-webhook URL (<code>https://hooks.slack.com/services/…</code>). After every run with at least one new mention, the digest is posted to that channel as a readable message. Never sent for the free demo."
          },
          "discordWebhookUrl": {
            "title": "Post the digest to Discord (optional)",
            "type": "string",
            "description": "A Discord channel webhook URL (<code>https://discord.com/api/webhooks/…</code>). The same digest as Slack. Never sent for the free demo."
          },
          "teamsWebhookUrl": {
            "title": "Post the digest to Microsoft Teams (optional)",
            "type": "string",
            "description": "A Teams Workflows webhook URL (channel ⋯ → Workflows → <i>Post to a channel when a webhook request is received</i>). The same digest as a card. Never sent for the free demo."
          },
          "googleChatWebhookUrl": {
            "title": "Post the digest to Google Chat (optional)",
            "type": "string",
            "description": "A Google Chat space webhook URL (<code>https://chat.googleapis.com/v1/spaces/…</code>). The same digest as Slack. Never sent for the free demo."
          },
          "webhookUrl": {
            "title": "Alert webhook URL (optional)",
            "type": "string",
            "description": "Mentions at or above <b>Alert priority</b> are POSTed here as JSON the moment they are ready (Zapier, Make, n8n, your helpdesk or CRM). Stored encrypted — Zapier / Make hook URLs carry their secret in the path."
          },
          "alertMinPriority": {
            "title": "Alert priority",
            "enum": [
              "low",
              "medium",
              "high"
            ],
            "type": "string",
            "description": "Which mentions the webhook receives: <b>high</b> (default) = urgent ones only, <b>low</b> = every delivered mention.",
            "default": "high"
          },
          "webhookHeaders": {
            "title": "Webhook headers (optional)",
            "type": "object",
            "description": "Extra HTTP headers for the webhook, e.g. <code>{\"Authorization\": \"Bearer …\"}</code>. Stored encrypted by Apify, never logged."
          },
          "webhookBatchSize": {
            "title": "Webhook batch size",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "1 = one POST per mention the moment it is ready. Higher = one POST per N mentions.",
            "default": 1
          },
          "dedupeAcrossRuns": {
            "title": "Never deliver the same mention twice",
            "type": "boolean",
            "description": "Remembers every mention you received (in a named key-value store on your account) and skips it in future runs — never re-delivered, never re-charged.",
            "default": true
          },
          "dedupeStoreName": {
            "title": "Memory store name",
            "type": "string",
            "description": "Key-value store for the cross-run memory. Left at the default, the memory is kept per watch term: adding a competitor or a handle to a scheduled search keeps every other term's memory (the new term starts its own, <code>OUTPUT.dedupeStore.newTerms</code>), and rewording <code>brandBrief</code> keeps it. Several clients on one account: use <code>watchlists</code>, or type one name per client.",
            "default": "threads-brand-monitoring-ai-seen"
          },
          "resetState": {
            "title": "Forget earlier runs (rebuild the baseline)",
            "type": "boolean",
            "description": "On = this run forgets the mentions this search already delivered and delivers (and charges) them again. Leave off for schedules.",
            "default": false
          },
          "historyDatasetName": {
            "title": "Keep a running log (dataset name)",
            "type": "string",
            "description": "Optional. Type a name (e.g. <code>threads-mentions-log</code>) and every run appends its new mentions with the date to that named dataset on your account — one list across months for Google Sheets or your BI tool. Empty = off.",
            "default": ""
          },
          "sourceMode": {
            "title": "Where do the posts come from?",
            "enum": [
              "actor",
              "dataset",
              "list"
            ],
            "type": "string",
            "description": "<b>actor</b> — search Threads live on your account. <b>dataset</b> — an existing post dataset. <b>list</b> — posts you paste in. The mode you choose always runs as chosen; only the untouched sample posts next to a brand you typed switch to the live search (spend-capped). <code>{}</code> over the API runs the free demo — nothing charged.",
            "default": "actor"
          },
          "datasetId": {
            "title": "Dataset",
            "type": "string",
            "description": "Only for <b>dataset</b> mode: a dataset of Threads posts from any of the three sources, or X / Reddit / Instagram posts. Pick it so the Actor is granted read access."
          },
          "itemsList": {
            "title": "Posts to process",
            "type": "array",
            "description": "Only for <b>list</b> mode. JSON array of posts with at least <code>url</code> and <code>text</code>, optionally <code>author</code>, <code>created_at</code>, <code>like_count</code>, <code>reply_count</code>, <code>view_count</code>, <code>follower_count</code> (see the README's List-mode rows)."
          },
          "discoveryActorId": {
            "title": "Threads source",
            "enum": [
              "automation-lab/threads-scraper",
              "watcher.data/search-threads-by-keywords",
              "futurizerush/meta-threads-scraper"
            ],
            "type": "string",
            "description": "The Store Actor that searches Threads in <b>actor</b> mode, on your account: <b>automation-lab Threads Scraper</b> (default — $0.005 per post + $0.02 per run, 0 % failed runs), <b>Search Threads by Keywords</b> (deep search — $0.008 per post, no start fee, up to 2,000 posts per keyword) or <b>futurizerush Threads Scraper</b> ($0.0025 per post + $0.02 per run — cheapest per post, 3 % failed runs). All three map to the same output.",
            "default": "automation-lab/threads-scraper"
          },
          "maxPostsPerTerm": {
            "title": "Posts to scan per term",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "How many posts the source returns per watch term — the main driver of the source cost (terms × posts × its price per post: 1 term × 80 on the default source ≈ $0.42, under the $0.50 spend cap, ≈ 27 qualified mentions — past your 25 free ones). A scheduled run doubles it unless you set it; a run that fills it says so (schedule it daily).",
            "default": 80
          },
          "sortBy": {
            "title": "Sort",
            "enum": [
              "recent",
              "top"
            ],
            "type": "string",
            "description": "<b>recent</b> — the newest posts (monitoring); <b>top</b> — the most relevant / popular.",
            "default": "recent"
          },
          "discoveryInput": {
            "title": "Source Actor input (advanced)",
            "type": "object",
            "description": "Only for <b>actor</b> mode: extra input for the source Actor, merged over the fields built from your watch terms (e.g. <code>{\"maxPosts\": 150}</code>). Runs on your Apify plan — if your plan cannot run Store Actors, paste your own posts in <b>list</b> mode (any plan); <b>dataset</b> only for a dataset you already have."
          },
          "maxToProcess": {
            "title": "Max candidates to process",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Upper bound on how many posts are scored in one run (controls run time). Default = 3 × max mentions."
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}