Sharing & feedback
Folders & filing rules
Organise drops into folders from the API, file them automatically with rules, and use smart views.
Folders keep your library tidy. They are personal: each folder belongs to you, and a drop sits in at most one folder. Folders hold the drops you sent, including drops you sent as a team (those stay in your own folders; team libraries don't have shared folders yet). Deleting a folder never deletes drops.
Folders from the API#
/foldersYour folders, in order, with how many drops each holds/foldersCreate a folder/folders/{id}Rename, recolour or reorder a folder/folders/{id}Delete a folder (its drops become unfiled)Create a folder#
namestringrequired- 1 to 60 characters.
colorstring- One of
slate,blue,violet,pink,red,orange,amber,green,teal. Defaults toslate.
curl https://api.slingdrop.my/v1/folders \
-H "Authorization: Bearer $SLINGDROP_API_KEY" \
-H "content-type: application/json" \
-d '{"name":"Invoices","color":"green"}'import { Slingdrop } from "@slingdrop/sdk";
const sd = new Slingdrop({ apiKey: process.env.SLINGDROP_API_KEY });
const invoices = await sd.folders.create("Invoices", "green");
const all = await sd.folders.list(); // [{ id, name, color, sortOrder, dropCount, createdAt }]{
"data": { "id": "…", "name": "Invoices", "color": "green", "sortOrder": 3, "dropCount": 0, "createdAt": "2026-10-21T09:30:00.000Z" }
}dropCount counts live drops only (not ones in Trash or expired). GET /folders returns { data: [...] } sorted by sortOrder. You can have up to 200 folders.
Rename, recolour or reorder#
PATCH /folders/{id} takes any of name, color and sortOrder (an integer from 0 to 10,000; lower comes first). The SDK has folders.list() and folders.create(); use sd.request() for the rest.
curl -X PATCH https://api.slingdrop.my/v1/folders/FOLDER_ID \
-H "Authorization: Bearer $SLINGDROP_API_KEY" \
-H "content-type: application/json" \
-d '{"name":"Invoices 2026","sortOrder":0}'
# Delete it: its drops become unfiled, and filing rules that pointed at it are removed
curl -X DELETE https://api.slingdrop.my/v1/folders/FOLDER_ID \
-H "Authorization: Bearer $SLINGDROP_API_KEY"await sd.request(`/folders/${invoices.id}`, { method: "PATCH", body: JSON.stringify({ name: "Invoices 2026", sortOrder: 0 }) });
await sd.request(`/folders/${invoices.id}`, { method: "DELETE" });File a drop#
Pass folderId when you create a drop, or move it later with PATCH /drops/{id}. null takes it out of its folder. A folder id that isn't yours returns 404 not_found.
# File it while creating it
curl https://api.slingdrop.my/v1/drops \
-H "Authorization: Bearer $SLINGDROP_API_KEY" -H "content-type: application/json" \
-d '{"title":"October invoice","folderId":"FOLDER_ID","files":[{"name":"invoice.pdf","size":48213,"type":"application/pdf"}]}'
# Move an existing drop, or unfile it with null
curl -X PATCH https://api.slingdrop.my/v1/drops/DROP_ID \
-H "Authorization: Bearer $SLINGDROP_API_KEY" -H "content-type: application/json" \
-d '{"folderId":null}'const { drop } = await sd.drops.create([{ name: "invoice.pdf", data: blob }], { folderId: invoices.id });
await sd.drops.update(drop.id, { folderId: null }); // unfileList a folder#
GET /drops?folderId=FOLDER_ID lists the drops in one folder; GET /drops?folderId=none lists unfiled drops. Every drop in a response carries its folderId and source.
curl "https://api.slingdrop.my/v1/drops?folderId=none" \
-H "Authorization: Bearer $SLINGDROP_API_KEY"Filing rules#
Rules file new drops for you. Set them up in the dashboard under Library → Rules. Each rule has one to five conditions and a target folder; a rule matches when all its conditions match, and the first enabled rule that matches wins, so order matters. You can have up to 50 rules.
| Condition | Matches when | Example |
|---|---|---|
| Source is | The drop came from upload (website or app), email, request (a file request), api, mcp (an AI agent) or cli. | mcp |
| Sender is | The email or file-request sender is this address, or any address at this domain or its subdomains. | client.com |
| Has tag | One of the drop's AI tags is this word (a leading # is ignored). | invoice |
| File type is | Any file is of this kind (pdf, image, video, audio, document, slides, sheet, code, archive) or has this extension. | pdf |
| Title contains | The title contains this text, ignoring case. | Q3 |
When rules run#
- When a drop is created without a folder. Passing a
folderIdfiles it there and skips the rules. - When files arrive through a file request, and through email to drop (before its default folder is used).
- Again when AI tags arrive after processing, so Has tag rules can file a drop a little later.
Rules only ever file a drop that is still unfiled: if you move a drop yourself, a rule never moves it back. Vault drops have encrypted titles and file names, so Title contains and File type is never match them.
Filing rules are managed in the app; the public API doesn't expose them. To steer drops from code, set source on POST /drops ("api", "cli" or "mcp"; anything else is recorded as api) and add a Source is rule, or pass a folderId directly.
Smart views#
Next to your folders, the library has views that need no setup. They cut across folders, so a drop can show up in a folder and a view at once.
| View | Shows |
|---|---|
| Drops created by email to drop. | |
| File requests | Drops people uploaded to your file requests. |
| From AI agents | Drops an AI agent made, over MCP or the review API. |
| Unfiled | Drops that aren't in any folder (the same as ?folderId=none). |