Skip to navigation

Update a notification rule

Authentication

AuthorizationBearer

A secret key (rl_sk_test_..., rl_sk_live_...) or a restricted key with limited scopes (rl_rk_test_..., rl_rk_live_...). A restricted key can carry agent: true and an expires_at, and is what a coding agent should hold. Keys end in a checksum so secret scanners can recognize them. People create, roll and revoke keys in the dashboard; GET /v1/api_keys lists them, masked.

Path parameters

notification_rule_idstringRequired

The notification rule ID (nr_...).

Headers

Runledger-Dry-RunbooleanOptional

Send true to see what the write would do without doing it. The response is the normal body with dry_run: true, changes (path, before, after), warnings and errors added, and nothing is stored. Validation runs as it would for a real write. The request is kept in request logs, tagged Dry run. When the same change is then made for real, its audit event has dry_run_preceded: true.

Request

This endpoint expects an object.
recipientslist of stringsOptional
webhook_endpointstringOptional
lead_timestringOptional
thresholdobjectOptional

For topup_chargeback.threshold_exceeded. Send at least one. There is no default. Runledger applies no threshold you haven’t set, and you choose the level for your own history.

payment_providerstring or nullOptional

Response

The rule.
idstring
object"notification_rule"
eventenum

What can notify people. dispute.decision_due fires lead_time before a dispute’s deadline. proposal.pending fires when a config proposal needs approval. topup_chargeback.threshold_exceeded fires when the top-up chargeback rate or the credits at risk pass the rule’s threshold. margin_guardrail.breached fires when work falls below a margin guardrail’s floor. catalog.price_changed fires when Runledger publishes a new price version for a catalog model one of your cost models uses. auto_top_up.disabled fires when a customer’s auto top-up stops after repeated failed payments. Notification rules are for your team. Alerts about a customer’s own balance or limits (balance.low, usage.threshold_reached, spend_limit.threshold_reached) are webhook events sent to your endpoints, and Runledger never emails your end customers.

channelstring

email, webhook, or a channel added later. The set is open.

livemodeboolean
created_atdatetime
recipientslist of stringsOptional

email only.

webhook_endpointstringOptional

webhook only.

lead_timestringOptional
thresholdobjectOptional

For topup_chargeback.threshold_exceeded. Send at least one. There is no default. Runledger applies no threshold you haven’t set, and you choose the level for your own history.

payment_providerstringOptional
actorobjectOptional

Who made a change. Runledger fills it in from the credential, so a client can’t claim to be someone else: an API key always acts as itself, the dashboard calls the API as the signed-in person, and the MCP server passes the client’s name and the person it acts for. A request that sends a Runledger-Actor header is refused with 400 parameter_unknown.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
409
Conflict Error
429
Too Many Requests Error
500
Internal Server Error