---
title: "Badge-funded spend interlock: parsed flag/ceiling state + month-to-date"
method: GET
path: "/api/v1/admin/badge-funded-ceiling"
tags: ["admin"]
---

# Badge-funded spend interlock: parsed flag/ceiling state + month-to-date

`GET /api/v1/admin/badge-funded-ceiling`

## Request

- Base URL: `https://api.badgeia.com`
- URL: `https://api.badgeia.com/api/v1/admin/badge-funded-ceiling`
- Auth: none declared

Echo the PARSED state of the Badge-funded spend interlock.

This exists because ``BADGE_FUNDED_MONTHLY_CEILING_USD`` crosses the
three-hop CD env pipeline (cd.yml env block -> render() -> compose mapping)
and host access is forbidden (CLAUDE.md rule #13 / the diagnostic-endpoint
convention). Without an HTTP path, an operator who sets the GH Variable has
no way to tell "the ceiling is live" from "a hop is missing and the value
silently defaulted to 0" -- and 0 means REFUSE, so that failure presents as
a permanent 503 with no explanation. The pressured response to that is to
delete the interlock, which is the outcome it exists to prevent.

``effective_state`` is the point: it reports what the running process will
actually DO, not what an env var contains.

Admin-gated. The client-facing 503 is deliberately generic and names none
of this -- the specifics live here and in ``logger.error``.

## Response `200`

Successful Response

- object

---

[API](https://skmtc.dev/badgeia/apis/badge.md) · [All operations](https://skmtc.dev/badgeia/apis/badge/llms.txt) · [OpenAPI document](https://skmtc.dev/badgeia/apis/badge/revisions/7e7f7fee8b77?raw)
