curl --request PATCH \
--url https://breadbox.example.com/api/v1/series/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"expected_amount": 123,
"amount_tolerance": 123,
"currency": "<string>",
"expected_day": 123,
"category_id": "<string>",
"user_id": "<string>"
}
'{
"id": "<string>",
"short_id": "<string>",
"name": "<string>",
"merchant_key": "<string>",
"cadence": "<string>",
"expected_amount": 123,
"iso_currency_code": "<string>",
"status": "<string>",
"type": "<string>",
"confidence": "<string>",
"detection_source": "<string>",
"last_amount": 123,
"last_seen_date": "2023-12-25",
"next_expected_date": "2023-12-25",
"renewal_health": "<string>",
"days_until_renewal": 123,
"occurrence_count": 123,
"detection_signals": {},
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z"
}Requires full_access scope. Partial update. verdict (optional) adjudicates the lifecycle (confirm/reject/pause/cancel; a user’s confirmation outranks a later agent write). The remaining fields edit the series’ user-owned attributes — any subset may be present, omitted fields are unchanged. Edits apply first, then the verdict, so a caller can rename-and-confirm in one request. Editing cadence re-derives next_expected_date; changing currency or user_id is collision-guarded (they’re part of the dedup signature). An empty body is rejected. Detector-owned fields (merchant_key, confidence, rollups) are not editable here — use /rekey and the detection funnel; the type axis has its own /type endpoint.
curl --request PATCH \
--url https://breadbox.example.com/api/v1/series/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"expected_amount": 123,
"amount_tolerance": 123,
"currency": "<string>",
"expected_day": 123,
"category_id": "<string>",
"user_id": "<string>"
}
'{
"id": "<string>",
"short_id": "<string>",
"name": "<string>",
"merchant_key": "<string>",
"cadence": "<string>",
"expected_amount": 123,
"iso_currency_code": "<string>",
"status": "<string>",
"type": "<string>",
"confidence": "<string>",
"detection_source": "<string>",
"last_amount": 123,
"last_seen_date": "2023-12-25",
"next_expected_date": "2023-12-25",
"renewal_health": "<string>",
"days_until_renewal": 123,
"occurrence_count": 123,
"detection_signals": {},
"tags": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z"
}Authorizations
Breadbox API key with format bb_<base62>. Carries either read_only
or full_access scope. Write endpoints (and a handful of sensitive
reads — /api-keys, /users/{user_id}/login) require full_access;
endpoints that require it are flagged in their description.
Path Parameters
Body
confirm, reject, pause, cancel weekly, biweekly, monthly, quarterly, semiannual, annual, irregular, unknown Day-of-month / day-of-week anchor (1–31). Send 0 to clear the anchor; omit to leave unchanged.
Response
Updated series.
A detected recurring series (subscription).
weekly|biweekly|monthly|quarterly|semiannual|annual|irregular|unknown.
active|paused|cancelled|candidate.
Recurring-charge type: subscription|bill|loan|other. Inferred from the members' dominant category at first detection; user/agent-overridable + sticky.
auto|confirmed|rejected — the verdict axis.
deterministic|agent|user|rule.
Derived (active series only): active|due_soon|overdue|stale|unknown, from next_expected_date vs today.
Signed days to next_expected_date (negative = overdue). Omitted when no projection.