We just released our native n8n integration!ยป Try now
OnlyFans API
Media Vault

Upload Media to Vault

Upload a media file directly to your vault.

POST
/api/{account}/media/vault
AuthorizationBearer <token>

Get your API Key from OnlyFansAPI Console - https://app.onlyfansapi.com/api-keys

In: header

Path Parameters

account*string

The Account ID

Request Body

multipart/form-data

file?string

The file to upload. Required if file_url is not provided. Maximum file size: 100 MB (limited by Cloudflare).

file_url?string

A URL to download the file from. Required if file is not provided. Maximum file size depends on the subscription configuration.

async?boolean

Set to true to process uploads in the background. Returns a polling_url to check status. Recommended for large files.

Response Body

application/json

application/json

curl -X POST "https://app.onlyfansapi.com/api/acct_XXXXXXXXXXXXXXX/media/vault"
{
  "data": {
    "id": 1234567890,
    "type": "photo",
    "convertedToVideo": false,
    "canView": true,
    "hasError": false,
    "createdAt": "2026-04-03T16:16:36+00:00",
    "isReady": false,
    "files": {
      "full": {
        "url": null,
        "width": 0,
        "height": 0,
        "size": 0,
        "sources": []
      },
      "thumb": null,
      "preview": null,
      "squarePreview": null
    },
    "duration": 0,
    "releaseForms": [],
    "hasCustomPreview": false
  },
  "_meta": {
    "_credits": {
      "used": 3,
      "balance": 636132,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 5000,
      "limit_day": null,
      "remaining_minute": 4999,
      "remaining_day": null
    }
  }
}
{
  "status": "pending",
  "prefixed_id": "ofapi_media_abc123def456abc123def456abc123de",
  "polling_url": "https://app.onlyfansapi.com/api/acct_abc123def456/media/uploads/ofapi_media_abc123def456abc123def456abc123de/status"
}