{
  "currency": "usd",
  "stripe_product_id": "prod_UagPL8Ak8EiG1i",
  "runtime_authority": "internal_credit_ledger",
  "payment_provider": "stripe",
  "portal_session_route": "POST /billing/portal/session",
  "checkout_session_route": "POST /billing/checkout/session",
  "plans": [
    {
      "name": "Free",
      "price_month": 0,
      "included_credits": 1000,
      "concurrency": 2,
      "checkout_url": "https://clawifi.dev/signup"
    },
    {
      "name": "Starter",
      "lookup_key": "clawifi_starter_monthly",
      "stripe_price_id": "price_1TbV2aFNXCvOa867NhJNzKae",
      "price_month": 19,
      "included_credits": 10000,
      "concurrency": 5,
      "checkout_url": "https://clawifi.dev/signup?plan=starter"
    },
    {
      "name": "Pro",
      "lookup_key": "clawifi_pro_monthly",
      "stripe_price_id": "price_1TbV2cFNXCvOa867a06LzrGB",
      "price_month": 99,
      "included_credits": 125000,
      "concurrency": 25,
      "checkout_url": "https://clawifi.dev/signup?plan=pro"
    },
    {
      "name": "Scale",
      "lookup_key": "clawifi_scale_monthly",
      "stripe_price_id": "price_1TbV2dFNXCvOa86703TTV7bu",
      "price_month": 299,
      "included_credits": 500000,
      "concurrency": 75,
      "checkout_url": "https://clawifi.dev/signup?plan=scale"
    }
  ],
  "credit_packs": [
    {
      "name": "120k credits",
      "lookup_key": "clawifi_pack_120k",
      "stripe_price_id": "price_1TbV2hFNXCvOa867Qh1pkgWd",
      "price": 99,
      "credits": 120000,
      "checkout_url": "https://clawifi.dev/account?pack=120k"
    },
    {
      "name": "500k credits",
      "lookup_key": "clawifi_pack_500k",
      "stripe_price_id": "price_1TbV2jFNXCvOa867fUexVZG7",
      "price": 349,
      "credits": 500000,
      "checkout_url": "https://clawifi.dev/account?pack=500k"
    }
  ],
  "credit_costs": [
    {
      "operation": "search",
      "credits": 1,
      "unit": "call",
      "notes": "search, plain fetch/scrape, article extract, package/dataset/code/archive/academic lookup, single OSINT lookup, social reads"
    },
    {
      "operation": "browser_render",
      "credits": 3,
      "unit": "call",
      "notes": "browser render, or a fetch/scrape that escalates to the browser; a Reddit thread the browser could not open and the Wayback Machine copy answered counts as rendered (the renders ran), while a page reached in the archive without a render costs the base call"
    },
    {
      "operation": "pdf",
      "credits": 2,
      "unit": "started 50 pages",
      "notes": "in place of the base call: 2 for 1-50 pages, 4 for 51-100"
    },
    {
      "operation": "llm_extract",
      "credits": 4,
      "unit": "call",
      "notes": "an extract that runs a language model; hosted extraction is deterministic today"
    },
    {
      "operation": "map",
      "credits": 1,
      "unit": "started 10 URLs returned",
      "notes": "at least 1"
    },
    {
      "operation": "crawl",
      "credits": 1,
      "unit": "page",
      "notes": "+2 per page that needed JS rendering; at least 1"
    },
    {
      "operation": "monitor_check",
      "credits": 1,
      "unit": "check",
      "notes": "3 with the browser"
    },
    {
      "operation": "osint_recon_bundle",
      "credits": 5,
      "unit": "call",
      "notes": "domain recon, email recon, username sweep"
    },
    {
      "operation": "research",
      "credits": 30,
      "unit": "call",
      "notes": "5 per source searched + 10 per page read, at least 30, at most 300"
    },
    {
      "operation": "research_plan",
      "credits": 5,
      "unit": "call",
      "notes": ""
    },
    {
      "operation": "cloud_render",
      "credits": 6,
      "unit": "started browser-minute",
      "notes": "Pro and Scale plans (500 and 2,500 minutes a month); at least 6. Renders JavaScript-heavy pages in a hosted browser. It does not bypass bot protection or CAPTCHAs."
    },
    {
      "operation": "passages",
      "credits": 0,
      "unit": "call",
      "notes": "query/top_k on fetch, scrape and browse add nothing"
    },
    {
      "operation": "playground",
      "credits": 0,
      "unit": "call",
      "notes": ""
    }
  ],
  "charging_rules": [
    "A call needs at least its minimum cost in balance to start (402 otherwise).",
    "A call is charged what it actually cost after the response, and never more than the balance left.",
    "Cache hits, our own failures and responses with status >= 400 cost 0.",
    "Nothing to read costs 0: a page that came back blocked, needing JavaScript, missing or title-only (content_status other than ok), a target's own error answer (for example 404), a search with no results and a map with no URLs."
  ],
  "renewal_rollover_cap_months": 3
}
