TEASEDocs
API ReferencePages & Publish

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
AuthorizationBearer <token>

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

POST
/api/admin/library/notifications/from-domain
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"  }}