{
  "page": "limits",
  "title": "Spending limits for AI agents",
  "path": "/limits",
  "kind": "product",
  "description": "Every Arettic agent key has a monthly budget and an approval threshold, enforced on our side. Your agent can't change them, and big purchases wait for a person.",
  "updated": "2026-10-23",
  "blocks": [
    {
      "type": "p",
      "text": "An agent that buys things needs limits it can't change. On Arettic, every agent key has a monthly budget ($50 by default) and an approval threshold ($20 by default). Both are checked on our side, on every request, before any money is held. Going over either doesn't fail the purchase. It asks a person, and the agent carries on once they say yes."
    },
    {
      "type": "h2",
      "id": "limits",
      "text": "The limits"
    },
    {
      "type": "table",
      "caption": "Limits on every agent key",
      "head": [
        "Limit",
        "Default",
        "What it does"
      ],
      "rows": [
        [
          "Monthly budget",
          "$50 a month",
          "A purchase that would take the agent over it waits for approval. Owners get an email at 80%."
        ],
        [
          "Approval threshold",
          "$20 a request",
          "A request above it waits for approval. Choose $5, $20, $50 or never."
        ],
        [
          "IP allowlist",
          "Any IP",
          "Only these addresses or ranges can use the key."
        ]
      ]
    },
    {
      "type": "h2",
      "id": "approvals",
      "text": "How an approval works"
    },
    {
      "type": "list",
      "ordered": true,
      "items": [
        "Nothing runs and nothing is held. The agent gets `approval_required` and an `approval_id`.",
        "Every owner gets an email with a one-click approve or decline link. No sign-in needed.",
        "Once it's approved, the agent sends the same request with the `approval_id`. It runs for exactly that tool, input and amount.",
        "Approvals expire after 24 hours."
      ]
    },
    {
      "type": "h2",
      "id": "guards",
      "text": "Other guards"
    },
    {
      "type": "list",
      "items": [
        "**Revoke at once.** Revoking a key stops the agent on its next request.",
        "**Velocity alerts.** If an agent spends more than 3 times its usual hourly rate, owners get an email.",
        "**Free failures.** A failed call costs nothing, so a broken provider can't drain your balance.",
        "**One key per agent.** Give each agent its own key and its own limits. Agents are unlimited on every plan."
      ]
    },
    {
      "type": "h2",
      "id": "set",
      "text": "Set them"
    },
    {
      "type": "p",
      "text": "Set limits on the Agents page in the dashboard, or with the org API. An agent key can read its own limits but never change them."
    },
    {
      "type": "code",
      "title": "curl",
      "lang": "bash",
      "code": "curl -X PATCH https://api.arettic.com/v1/orgs/$ORG_ID/agents/$AGENT_ID \\\n  -H \"Authorization: Bearer $ARETTIC_ORG_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{ \"monthly_budget_credits\": 200000, \"approval_threshold_credits\": 50000 }'"
    },
    {
      "type": "p",
      "text": "Every field and status is on [Budgets and approvals](/docs/budgets-and-approvals)."
    }
  ],
  "questions": [
    {
      "question": "How do I stop an AI agent from overspending?",
      "answer": "Give it a key whose budget and approval threshold are enforced by the API, not by the agent's own code. On Arettic both are on by default."
    },
    {
      "question": "Can the agent raise its own limits?",
      "answer": "No. An agent key can read its limits but never change them. Only an owner, or an org key with write access, can."
    },
    {
      "question": "What happens when an agent hits its budget?",
      "answer": "The purchase waits for an owner to approve it. Nothing is charged until they do."
    },
    {
      "question": "Do endpoint calls count toward the budget?",
      "answer": "Yes. Endpoint calls and guaranteed jobs share the same monthly budget."
    },
    {
      "question": "Can I limit where a key is used from?",
      "answer": "Yes. Add IP addresses or CIDR ranges to the key's allowlist."
    }
  ]
}