Manage OnlyFans vault folders from the panel
Create, rename, or delete a folder, or add/remove media in it — mirrored back once the engine confirms.
Who this is for: a workspace owner or operator with the folders_write grant
(folders_delete for the two irreversible actions).
These are Level-2
actions — real writes to OnlyFans, routed through the engine as an asynchronous job. Every one
of them answers {"status": "pending", "nonce": "..."} immediately; see
Pending-nonce job durability
for why, and async engine write gotchas
for what to do when the engine hasn't checked in.
Check what's live right now
Folder operations are gated per-op by the engine's own manifest — check before you build a UI around one:
curl "https://app.tease.link/api/admin/vault/ops/enabled" \
-H "Authorization: Bearer $TEASE_API_KEY"{ "create_list": true, "rename_list": true, "add_media": true, "remove_media": false, "delete_list": false }Create, rename, delete
curl -X POST "https://app.tease.link/api/admin/vault/folders" \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "New shoot"}'curl -X PUT "https://app.tease.link/api/admin/vault/folders/{list_id}" \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Renamed folder"}'curl -X DELETE "https://app.tease.link/api/admin/vault/folders/{list_id}" \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'Deleting a folder is irreversible on OnlyFans and requires the folders_delete grant plus
"confirm": true in the body — omit it and you get a 400, not a silent no-op. Its files aren't
deleted; once confirmed by a rescan, they simply become unfiled again.
Add or remove media
curl -X POST "https://app.tease.link/api/admin/vault/folders/{list_id}/media" \
-H "Authorization: Bearer $TEASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"media_ids": ["88120", "88121"]}'Up to 100 digit-only media ids per call — OnlyFans' own per-operation ceiling; anything beyond
that is trimmed rather than rejected outright, and a request with zero valid ids after cleanup is
a 400. Removing media (DELETE on the same path) also requires "confirm": true and the
stronger folders_delete grant, not folders_write — pulling files out of a folder is treated
with the same weight as deleting the folder itself.
What the response means
Every write returns one of three shapes:
| Response | Meaning |
|---|---|
{"status": "pending", "nonce": "..."} | Queued. Poll GET /vault/ops/{nonce} for queued / done / failed / stale. |
{"enabled": false, "staged": true, "op": "..."} | The engine isn't reporting live for this operation right now — nothing was sent. See the troubleshooting page. |
409 already_applying | An operation on the same target (same op, same folder) is already in flight — wait for it to settle instead of resubmitting. |
Retry with the SAME nonce
If an operation comes back stale or failed and you believe it should be retried, use
POST /vault/ops/{nonce}/retry — not a fresh call to create_list/add_media/etc. A
fresh call mints a brand-new nonce, and if the original request actually reached OnlyFans
before the engine lost contact, you'll end up with a duplicate folder or media entry.
What's next
Once a folder is confirmed, pull it as a drop or find it in search.