Save a domain's banner to the library
Snapshots the domain's draft banner into a new library preset, including its avatar/sound files (copied into the preset's master folder at /notification/_preset_<id>/), and stamps the new preset_id onto the domain draft so its card shows the library binding. Requires a write-scoped key.
Authorization
bearerAuth Your al_live_<prefix>_<secret> API key. Mint and manage keys in the dashboard.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/api/admin/library/notifications/from-domain" \ -H "Content-Type: application/json" \ -d '{ "domain": "onlydasha.com", "name": "July drop" }'{ "id": 7, "creator_id": "dasha", "name": "July drop", "title": "New post is live", "body": "Tap to see what you've been missing", "link_text": "Open", "target_url": "https://onlyfans.com/dasha", "link_mode": "", "delay_ms": 2500, "avatar_filename": "avatar_9f2c1a7b3d4e5f60.webp", "sound_filename": null, "translations": null, "variants": null, "activity_source": null, "created_at": 1752537600, "updated_at": 1752537600}{ "detail": { "code": "notification_empty", "message": "The domain has no filled-in notification — nothing to save" }}{ "detail": { "code": "domain_not_found", "message": "Domain 'onlydasha.com' is not registered" }}{ "detail": { "code": "preset_name_taken", "message": "Preset 'July drop' already exists" }}Create a notification preset
Creates a reusable banner preset in the library. Texts and files can be filled in later (PATCH + the preset avatar upload), but only a complete preset (title, body, link_text, an avatar — plus target_url when link_mode is 'manual') can be enabled on a domain. Requires a write-scoped key.
Edit a notification preset
Partially updates a library preset; only supplied fields change. Edits propagate immediately: every domain whose assignment enables this preset is re-stamped and its draft re-baked, so the change reaches the drafts at once — going live stays an explicit /publish. Each re-stamp also derives the bound domains' enabled flag from the preset's readiness: the assignment checkbox is the intent to show, and the banner switches on automatically once the preset is complete (all texts, an avatar and — in the 'manual' link mode — the link) — and off when it stops being complete. Requires a write-scoped key.