---
title: "Raise Daily Cap"
method: POST
path: "/internal/service/raise_daily_cap"
tags: ["internal"]
---

# Raise Daily Cap

`POST /internal/service/raise_daily_cap`

Raise a conglomerate's daily credit cap — the internal platform's only write.

The decision is ``core.billing.resolve_support_daily_cap`` — the same function
``margot_actions.raise_daily_cap`` calls, not a copy of it, so the two surfaces
cannot drift: raise-only (never lowers), never re-imposes a finite cap on an
unlimited (0) conglomerate, clamped to ``SUPPORT_DAILY_CAP_CEILING``, and a
non-finite ask (NaN/±inf, which would defeat every comparison and land an
*uncapped* row) resolves to no change. Worst case for a compromised internal
service is therefore nudging a 24h *rate* limit up to the ceiling — real spend
stays bounded by the credit balance.

``clamped`` flags an ask above the ceiling so the caller can offer a human.
``changed`` reflects the value actually persisted, so it is False for every
no-op. Unknown conglomerate → 404.

## Request body

- RaiseDailyCapServiceRequest — Ask the main backend to raise one conglomerate's 24h credit cap. ``conglomerate_id`` is supplied by the caller, which has ALREADY resolved and verified the customer's scope on its side (it owns the identity-verified contact → conglomerate mapping). This endpoint trusts the id only as far as loading that row: what bounds the blast radius is not the id check but the action itself — raise-only, never unlimited, clamped to ``core.billing.SUPPORT_DAILY_CAP_CEILING``.
  - `conglomerate_id` string, uuid, required — The conglomerate whose daily credit cap to raise.
  - `target_daily_credits` number, nullable — Desired new daily credit cap. Omit to bump by a default step. Clamped to the support ceiling; never lowers the cap or sets it unlimited.

## Response `200`

Successful Response

- RaiseDailyCapServiceResponse — The outcome of a raise attempt — enough for the caller to explain itself. ``changed=False`` covers every no-op (already at/above the request, already at the ceiling, or already unlimited); ``clamped=True`` means the request was above the ceiling, which is the caller's cue to offer a human.
  - `changed` boolean, required
  - `clamped` boolean, required
  - `previous_max_daily_credits` number, required
  - `max_daily_credits` number, required
  - `ceiling` number, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/nanocorp/apis/nanocorp-api.md) · [All operations](https://skmtc.dev/nanocorp/apis/nanocorp-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nanocorp/nanocorp-api/revisions/f4f24ae2935f/schema)
