List your posts and their moderation status
API reference

List your posts and their moderation status

Your posts, newest first, plus the current posting limits — read `limits` from the response rather than hardcoding numbers.

View as MarkdownUpdated Aug 19, 2026
GET/api/external/posts

Your posts, newest first, plus the current posting limits — read limits from the response rather than hardcoding numbers.

The status filter takes one moderation state; unrecognised values are silently ignored (you get the unfiltered list, not an error).

Authentication

Send the creator's API key as a bearer token: Authorization: Bearer dpfn_…. See Authentication & API keys.

Query parameters

NameTypeRequiredDescription
pageintegerOptionalPage number, 1-based.
Default: 1
limitintegerOptionalPosts per page (default 20, cap 50 — larger values clamped).
Default: 20
Max: 50
statusstringOptionalFilter by moderation state (case-insensitive). Unrecognised values are ignored.
One of: PENDING, APPROVED, REJECTED, FLAGGED

Responses

200Your posts, newest first, plus the current limits.
NameTypeDescription
postsPost[]Your posts, newest first.
Show child attributes
idstringPost id.
kindstringPost shape. DROP is derived from productId at creation — it is not an accepted request value.
One of: TEXT, DROP, SUBSCRIPTION, COMMUNITY, MEDIA
captionstring | nullPost text. Null for caption-less media posts.
statusstringModeration state. PENDING is normal for media posts and is not an error — poll until it becomes APPROVED.
One of: PENDING, APPROVED, REJECTED, FLAGGED
livebooleanTrue only when the post is APPROVED and its publish time has passed.
scheduledAtstring | nullWhen the post is scheduled to go live, or null for immediate posts.
Format: date-time
publishedAtstringEffective publish time.
Format: date-time
createdAtstringCreation time.
Format: date-time
productIdstring | nullThe attached drop, for kind=DROP. Null otherwise.
likesintegerLike count.
commentsintegerComment count.
mediaPostMedia[]Media entries in display order. Empty for TEXT posts.
Show child attributes
idstringPost-media row id.
vaultItemIdstringThe source vault item.
isPaidbooleanTrue for PPV items shown blurred until unlocked.
orderintegerDisplay position (0-based).
typestringMedia kind (image/video).
paginationPaginationPaging info (nested style — the vault list uses top-level fields instead).
Show child attributes
pageintegerEchoed page (1-based).
limitintegerEchoed page size.
totalintegerTotal rows matching the filter.
hasMorebooleanTrue when more pages exist.
limitsPostLimitsThe current posting limits, so a client never hardcodes them.
Show child attributes
postsPerDayintegerPosts per creator per rolling 24 hours (currently 5).
maxCaptionCharsintegerCaption length cap (currently 2000).
maxMediaPerPostintegerMedia items per post (currently 10).
maxScheduleDaysintegerHow far ahead a post can be scheduled, in days (currently 30).
minPaidPriceintegerMinimum USD price of a paid media item (currently 5).
Example response
{
  "posts": [
    {
      "id": "clxp0st000001feed",
      "kind": "MEDIA",
      "caption": "rate my fit 1-10",
      "status": "APPROVED",
      "live": true,
      "scheduledAt": null,
      "publishedAt": "2026-08-18T19:00:00.000Z",
      "createdAt": "2026-08-18T18:59:40.000Z",
      "productId": null,
      "likes": 14,
      "comments": 3,
      "media": [
        {
          "id": "clxpm3d1a0001post",
          "vaultItemId": "clxv1a2b30001item",
          "isPaid": false,
          "order": 0,
          "type": "image"
        }
      ]
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 63,
    "hasMore": true
  },
  "limits": {
    "postsPerDay": 5,
    "maxCaptionChars": 2000,
    "maxMediaPerPost": 10,
    "maxScheduleDays": 30,
    "minPaidPrice": 5
  }
}

Errors

StatusBodyWhen
401{"error":"Unauthorized","code":"unauthorized"}Missing or invalid API key.

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/posts" \
  -H "Authorization: Bearer $DROPFANS_API_KEY"

Questions? [email protected]