Dropfans API
One endpoint, one API key. Publish text and image posts to your Dropfans feed from a script, a scheduler, or an AI assistant — content runs the same moderation as the composer, so nothing skips review.
Generate a key in the dashboard under Vault → API Connect, then send it on every request. A key is bound to one creator account — posts are always authored by that creator.
Authorization: Bearer dpfn_your_key_hereTreat it like a password. Anyone holding it can post as you. Revoke a leaked key from the same screen.
The smallest useful call is a text post.
curl -X POST https://www.dropfans.io/api/external/posts \
-H "Authorization: Bearer $DROPFANS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "caption": "im 5 min away, wyd?" }'| Field | Type | Description |
|---|---|---|
| caption | string | Post text, up to 2000 characters. Required for a text post. |
| kind | string | "TEXT" (default), "MEDIA", "SUBSCRIPTION" or "COMMUNITY". |
| media[] | array | Required for MEDIA. Up to 10 items: { vaultItemId, isPaid, price, order }. |
| productId | string | Attach one of your approved drops. Forces kind DROP. |
| scheduledAt | ISO date | Publish later — at least 1 minute ahead, at most 30 days. |
Image posts reference content already in your vault, so nothing is uploaded twice. List the vault, pick an item whose moderationStatus is APPROVED, and reference its id. Mark an item paid to turn it into a blurred PPV unlock (minimum $5).
# 1. find an approved image in your vault
curl https://www.dropfans.io/api/external/vault?limit=5 \
-H "Authorization: Bearer $DROPFANS_API_KEY"
# 2. post it — free teaser first, paid unlock second
curl -X POST https://www.dropfans.io/api/external/posts \
-H "Authorization: Bearer $DROPFANS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "MEDIA",
"caption": "can i show you??",
"media": [
{ "vaultItemId": "VAULT_ITEM_A", "isPaid": false, "order": 0 },
{ "vaultItemId": "VAULT_ITEM_B", "isPaid": true, "price": 10, "order": 1 }
]
}'Paid images posted through the API get a standard blur. To hand-tune the teaser blur, use the composer in the dashboard.
Nothing here bypasses review. Captions run the prohibited-word filter on the way in, and images ride the NSFW pipeline. Post from vault content that is already APPROVED and the response comes back APPROVED — live immediately. Anything still in review comes back PENDING and goes live by itself once it clears, which is a normal outcome rather than an error. Poll the post until it flips.
curl https://www.dropfans.io/api/external/posts?status=PENDING \
-H "Authorization: Bearer $DROPFANS_API_KEY"| Code | Meaning |
|---|---|
| 201 | Created. Read status — APPROVED means it is already live; PENDING means it is waiting on review. |
| 401 | Missing or invalid API key. |
| 403 | That key is not on a creator account. |
| 422 | Caption contains a prohibited word — matchedWord tells you which. Rewrite and retry. |
| 429 | Daily cap of 5 posts reached. The Retry-After header tells you how long to wait. |
Rate limit: 5 posts per creator per rolling 24 hours — the same cap the composer enforces. Posting them back-to-back is fine; only the daily volume is capped.
The API is described by a machine-readable OpenAPI spec. Give an assistant that URL and your key and it can drive the whole thing. Paste this to get started:
You can post to my Dropfans For You feed.
The API contract is at https://www.dropfans.io/api/external/openapi.json —
fetch it first and follow it exactly.
Authenticate with: Authorization: Bearer <my key>
House rules:
- Captions must be short (under ~80 characters), lowercase, second person,
present tense. Almost never use emoji. Ending on a cheap question works best.
- To post an image, list my vault and pick an item whose moderationStatus is
APPROVED, then create a MEDIA post with that vaultItemId.
- A PENDING response is normal, not a failure. Poll GET /api/external/posts/{id}
until it turns APPROVED.
- A 422 means the caption tripped the word filter — rewrite it and retry once.
- A 429 means we hit the daily cap of 5 posts — stop, don't retry in a loop.Never paste your API key into a shared or public chat. Use an assistant that keeps secrets in its own environment.
Base URL https://www.dropfans.io. Questions? Help centre.