Media Vault Lists

List Vault Lists

Changed on

List your Vault lists (categories).

Every response carries an ETag computed over the data payload. Send it back as If-None-Match on your next call and you will get a 304 Not Modified with an empty body when nothing changed, so you can keep serving your cached copy instead of re-parsing the full list. Credits are debited either way — we still have to ask OnlyFans for the current state to know whether it changed.

The ETag covers data only, never _meta — your credits balance changes on every call, so including it would mean the ETag never matches. Because a 304 has no body, it also has no _meta: read the current credits and rate-limit counters from the X-OFAPI-Credits-Used, X-OFAPI-Credits-Balance, X-Rate-Limit-Limit-Minute and X-Rate-Limit-Remaining-Minute response headers, which are sent on 304 responses too. The _meta inside a body you cached earlier is stale by definition.

get/api/{account}/media/vault/lists

Request

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

Query parameters

querystring

Optionally, find a list by its name.

Example:My list name
limitinteger

Number of media to return per page. Default: 24

Example:24
offsetinteger

The offset used for pagination. Default 0

lightweightboolean

Set to true to return only id, name, type, canUpdate and a rolled-up mediaCount per list, dropping the medias previews. Much smaller payload — ideal for rendering a folder picker. Default: false

Example:true

Response

OR

Example response

{
  "data": {
    "list": [
      {
        "id": 123,
        "type": "stories",
        "name": "Stories",
        "hasMedia": false,
        "canUpdate": false,
        "canDelete": false,
        "videosCount": 0,
        "photosCount": 0,
        "gifsCount": 0,
        "audiosCount": 0,
        "medias": []
      },
      {
        "id": 123,
        "type": "streams",
        "name": "Streams",
        "hasMedia": false,
        "canUpdate": false,
        "canDelete": false,
        "videosCount": 0,
        "photosCount": 0,
        "gifsCount": 0,
        "audiosCount": 0,
        "medias": []
      },
      {
        "id": 123,
        "type": "media_stickers",
        "name": "Uploads",
        "hasMedia": false,
        "canUpdate": false,
        "canDelete": false,
        "videosCount": 0,
        "photosCount": 0,
        "gifsCount": 0,
        "audiosCount": 0,
        "medias": []
      },
      {
        "id": 123,
        "type": "posts",
        "name": "Posts",
        "hasMedia": true,
        "canUpdate": false,
        "canDelete": false,
        "videosCount": 0,
        "photosCount": 5,
        "gifsCount": 0,
        "audiosCount": 0,
        "medias": [
          {
            "type": "photo",
            "url": "https://cdn2.onlyfans.com/files/..."
          }
        ]
      },
      {
        "id": 123,
        "type": "custom",
        "name": "custom category",
        "hasMedia": false,
        "canUpdate": true,
        "canDelete": true,
        "videosCount": 0,
        "photosCount": 0,
        "gifsCount": 0,
        "audiosCount": 0,
        "medias": []
      },
      {
        "id": 123,
        "type": "messages",
        "name": "Messages",
        "hasMedia": true,
        "canUpdate": false,
        "canDelete": false,
        "videosCount": 1,
        "photosCount": 4,
        "gifsCount": 0,
        "audiosCount": 2,
        "medias": [
          {
            "type": "photo",
            "url": "https://cdn2.onlyfans.com/files/..."
          }
        ]
      }
    ],
    "all": {
      "videosCount": 1,
      "photosCount": 9,
      "gifsCount": 0,
      "audiosCount": 2,
      "medias": [
        {
          "type": "photo",
          "url": "https://cdn2.onlyfans.com/files/..."
        }
      ]
    },
    "hasMore": false,
    "canCreateVaultLists": true,
    "order": "asc",
    "sort": "default"
  },
  "_meta": {
    "_credits": {
      "used": 1,
      "balance": 999999945,
      "note": "Always"
    },
    "_cache": {
      "is_cached": false,
      "note": "Cache disabled for this endpoint"
    },
    "_rate_limits": {
      "limit_minute": 1000,
      "limit_day": 50000,
      "remaining_minute": 998,
      "remaining_day": 49968
    }
  }
}

Changes

    • breaking

      added subschema #1 subschema #2 to the response body oneOf list for the response status

    • breaking

      the response's body type changed from object to no type for status

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • info

      added the new optional query request parameter lightweight

    • info

      added the non-success response with the status