Media Vault

Upload Media to Vault

Changed on

Upload a media file directly to your vault.

post/api/{account}/media/vault

Request

  • Base URL
    https://app.onlyfansapi.com
  • URL
    https://app.onlyfansapi.com/api/{account}/media/vault
  • Auth
    HTTP bearer

Request body multipart/form-data

filestring binary

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

file_urlstring

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

asyncboolean

Set to true to process uploads in the background. Returns a polling_url to check status. Recommended for large files. Instead of polling, you can subscribe to the media_uploads.completed and media_uploads.failed webhook events — they only fire for async uploads.

rfTaginteger[]

OnlyFans creator user IDs to tag on the uploaded media. Maximum 100 unique IDs.

rfPartnerinteger[]

Existing document or link release form IDs to attach to the uploaded media. Maximum 100 unique IDs.

rfGuestinteger[]

Release form guest IDs to attach to the uploaded media. Maximum 100 unique IDs.

Example request

{
  "file_url": "https://example.com/media/photo.jpg",
  "async": true,
  "rfTag": [
    12345678
  ],
  "rfPartner": [
    123456
  ],
  "rfGuest": [
    123456
  ]
}

Response

Synchronous upload (default)

Example response

{
  "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
    }
  }
}

Changes