API reference
List vault folders
Every folder the creator has, alphabetically. **Unpaginated** — you always get the full list.
View as MarkdownUpdated Aug 19, 2026
GET
/api/external/vault/foldersEvery folder the creator has, alphabetically. Unpaginated — you always get the full list.
itemCount here counts every non-hidden item regardless of moderation status, so it can be higher than the count the vault list reports for the same folder (which respects the moderation filter).
Authentication
Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.
Responses
200All folders.
| Name | Type | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
folders | Folder[] | Every folder, A→Z.Show child attributes
|
Example response
{
"folders": [
{
"id": "clxf0ld3r0001abcd",
"name": "Beach set",
"itemCount": 14
}
]
}Errors
| Status | Body | When |
|---|---|---|
| 401 | {"error":"Unauthorized","code":"unauthorized"} | Missing or invalid API key. |
| 500 | {"error":"Failed to fetch vault folders"} | Query failed — retry later. |
Rate limiting
Every response carries the X-RateLimit-Tier header and, on limited tiers, the per-minute and per-day trios — read X-RateLimit-Remaining and X-RateLimit-Reset instead of hardcoding limits. Details in Rate limits.
Code samples
curl "https://www.dropfans.io/api/external/vault/folders" \
-H "Authorization: Bearer $DROPFANS_API_KEY"const res = await fetch(`https://www.dropfans.io/api/external/vault/folders`, {
headers: {
Authorization: `Bearer ${process.env.DROPFANS_API_KEY}`,
},
});
console.log(await res.json());import os
import requests
res = requests.get(
"https://www.dropfans.io/api/external/vault/folders",
headers={"Authorization": f"Bearer {os.environ['DROPFANS_API_KEY']}"},
)
print(res.json())Questions? [email protected]
