Albums
WIP. No idea what SpankBank, pressie albums and paywalled albums are.
Get my albums
Requires Authorization.
GET /v1/albumsResponse:
albums— array of MyAlbum
Get an album
Requires Authorization.
GET /v2/albums/{albumId}Response:
Errors:
403— if you don't have access to album or it doesn't exist
Rename an album
Requires Authorization.
PUT /v2/albums/{albumId}Body:
albumName— string ornull
Response:
albumId— integeralbumName— string ornull
Get an album media poster
Requires Authorization.
GET /v1/albums/{albumId}/content/{contentId}/posterResponse:
blurredPosterUrl— URLposterUrl— URL
Record view of an album
GET /v3/albums/{albumId}/viewErrors:
403— Repeated requests after invoking this endpoint on view ONCE albums cause HTTP status 403 Forbidden andAction not permittederror.
Record view of media in an album
Requires Authorization.
Repeated requests after reaching remainingViews=0 do not cause any errors.
POST /v1/albums/{albumId}/view/content/{contentId}Response:
remainingViews— integer
Get info about profile's album
Requires Authorization.
POST /v2/albums/sharesBody:
profileId— long integer
Response:
profileId— long integerhasAlbum— booleanhasSharedWithMe— boolean
Get albums shared by a profile
Requires Authorization.
GET /v2/albums/shares/{profileId}Response:
albums— array of objects- everything from AlbumMin
- everything from AlbumExpiration
content— AlbumContentMincontentCount— objectimageCount— integervideoCount— integer
Create an album
Requires Authorization.
POST /v2/albumsBody:
albumName— string ornull
Response:
albumId— long integer
Errors:
402— Payment required if you reached limit for number of created albums
Delete an album
Requires Authorization.
DELETE /v1/albums/{albumId}Response:
Empty
Errors:
403— Repeated requests cause 403 Forbidden andAction not permittederror.
Upload media to an album
Requires Authorization.
Repeated requests with the same file (its contents) are skipped and a cached result from the first upload request is returned.
POST /v1/albums/{albumId}/contentQuery (optional):
width— number, optional, doesn't affect the resulting image, optionalheight— number, optional, doesn't affect the resulting image, optionalisFresh— boolean, optional, unknown how it affects the resulting image, WIP, optional
Body:
Content-Type: multipart/form-data
content— binary
Response:
contentId— long integercontentUrl— string ornull
Reorder media in an album
Requires Authorization.
POST /v1/albums/{albumId}/content/orderBody:
contentIds— array of long integers, each Media file ID must appear exactly once
Delete media from an album
Requires Authorization.
Technically, this does not delete the media from CDN. All signed URLs will continue to work until expired. Uploading same file will result in getting it assigned the same contentId.
DELETE /v1/albums/{albumId}/content/{contentId}Response:
Empty
Albums content processing, WIP
This endpoint hasn't been researched yet
GET /v1/albums/{albumId}/content/{contentId}/processingResponse:
processing— boolean
Pics, WIP, WIP
This endpoint hasn't been researched yet
GET /v1/pics/limited/statusResponse:
available— integertotal— integer
Pics expiring, WIP
This endpoint hasn't been researched yet
POST /v4/pics/expiringPics expiring status, WIP
This endpoint hasn't been researched yet
GET /v4/pics/expiring/statusVideos expiring status, WIP
This endpoint hasn't been researched yet
GET /v4/videos/expiring/statusGet album shares
Requires Authorization.
Returns profiles the album was shared with.
GET /v1/albums/{albumId}/sharesResponse:
profileIds— array of integers
Share an album
Requires Authorization.
Automatically sends the shared album to chat with all listed profiles.
POST /v4/albums/{albumId}/sharesBody:
profiles— array of objectsexpirationType— AlbumExpirationTypeprofileId— integer
Response:
Empty
Unshare an album
Requires Authorization.
PUT /v1/albums/{albumId}/unsharesBody:
profiles— array of objectsprofileId— long integershareId— integer
Response:
Empty
Unshare an album from everybody, WIP
This endpoint hasn't been researched yet
Unknown, returns 403
PUT /v1/albums/{albumId}/shares/removeAlbums content chat list-by-id, WIP
This endpoint hasn't been researched yet
Requires Authorization.
Unknown, {"ids":[852120758]} returns 400
POST /v1/albums/{albumId}/content/chat/list-by-idQuery:
isFresh— boolean
Body:
ids— array of long integers
Get album limits
Requires Authorization.
Interestingly, /v2/albums/storage appears to exist, though not used in current version of APK.
GET /v1/albums/storageResponse:
subscriptionType— string, e.g.FreeAlbumsmaxAlbums— integermaxContentItemsPerAlbum— integermaxShares— integermaxViewableAlbums— integermaxViewableVideos— integermaxContentSize— long integer, size in bytesmaxContentSizeHumanReadable— string, incorrectly uses decimal multiples notation (MB) when in fact calculates binary notation (MiB), so API's120.00 MBis actually 120 MiB or 125.8291 MBmaxVideoLength— long integer, length in milliseconds (1/1000th of a second)minVideoLength— long integer, length in milliseconds (1/1000th of a second)maxShareableAlbums— integermaxVideosPerAlbum— integer
Albums red dot, WIP
This endpoint hasn't been researched yet
This may just be tracking but could also be related to something else
PUT /v1/albums/red-dotResponse:
Empty.
Gets albums shared with us
Requires Authorization.
POST /v3/pressie-albums/feedBody (optional):
isFavorite— boolean, optional, only albums shared by favorite usersisOnline— boolean, optional, only albums shared by currently online usersonlyVideo— boolean, optional, only albums with at least one videoblur— boolean, optional, blur media urls in response
Response:
profileFeeds— array of objectsprofileId— integerpaywallStatus— stringseen— booleancontent— objectprofile— PressieProfileMini
sharedAlbums— array of objects- everything from AlbumPreview
albumViewable— booleanalbumVersion— integerexpiresat— unix timestamp in milliseconds ornullexpiresAt— unix timestamp in milliseconds ornullname— string ornullownerProfileId— integerimageCount— integervideoCount— integercoverContent— objectid— long integercontentType— stringcoverContent— string ornullstatus— string
profile— PressieProfileMini
experimentStatus— numbernonEmptyPersonalAlbumCount— numberemptyAlbumId— unknown ornull
Pressie albums feed paywall
POST /v3/pressie-albums/feed/paywall/Response:
albumPaywallContent— array of objectsalbumId— long integerprofile— PressieProfileMinipaywallCoverUrl— stringpaywallUrls— array of stringsalbumsItemCount— integer
Pressie albums feed profile ID, WIP
This endpoint hasn't been researched yet
GET /v3/pressie-albums/feed/{profileId}Pressie albums feed update read, WIP
This endpoint hasn't been researched yet
POST /v3/pressie-albums/feed/update/readAlbumExpirationType
Album expiration type.
Previously shared albums in chat inherit new expirationType settings from newer sharings of the album.
"INDEFINITE"or0— "Indefinitely""ONCE"or1— "View Once", limited by 30 minutes from request"TEN_MINUTES"or2— "For 10 Minutes""ONE_HOUR"or3— "For 60 Minutes""ONE_DAY"or4— "For 24 Hours"
AlbumPreview
albumId— long integeralbumNumber— integer ornullif album has expired or was lockedtotalAlbumsShared— integer ornullif album has expired or was lockedhasUnseenContent— boolean
AlbumMin
- everything from AlbumPreview
albumName— string, appears to always benullprofileId— integeralbumViewable— boolean
AlbumDetails
sharedCount— integercreatedAt— string, date formatted as ISO 8601, e.g.2026-03-27T20:39:00updatedAt— string, date formatted as ISO 8601, e.g.2026-03-27T20:39:00
AlbumExpiration
expiresAt— unix timestamp in milliseconds ornullexpirationType— AlbumExpirationType
AlbumContentMin
contentId— long integercontentType— stringcoverUrl— AlbumCoverUrlstatusId— unknown integer, WIP
AlbumContent
- everything from AlbumContentMin
thumbUrl— string, unblurred preview, see Media -> Signed CDN filesurl— string, original file, see Media -> Signed CDN files, may be""ifremainingViewsis 0processing— booleanrejectionId— unknown, unknown ornull
MyAlbum
- everything from AlbumDetails
albumId— long integeralbumName— see Album name ornullprofileId— integerversion— integercontent— AlbumContentisShareable— boolean
AlbumContentWithRemainingViews
- everything from AlbumContent
remainingViews— integer
AlbumDetailsResponse
- everything from AlbumMin
- everything from AlbumDetails
content— array of AlbumContentWithRemainingViews
AlbumShareInfo
profileId— long integerhasAlbum— booleanhasSharedWithMe— boolean
AlbumsSharedByProfileResponse
albums— array of objects- everything from AlbumMin
- everything from AlbumExpiration
content— AlbumContentMincontentCount— objectimageCount— integervideoCount— integer
Album name
String, may be empty ("") or null, non-string values are coerced into string.
Maximum length: 255 UTF-8 bytes, which is 255 characters for ASCII strings (1 ASCII character is encoded as 1 byte) but less if you include emojis or non-ascii characters (2+ bytes/one codepoint).
albumName— string ornull
AlbumRenameResponse
albumId— integeralbumName— string ornull
AlbumShareRequest
profiles— array of objectsexpirationType— AlbumExpirationTypeprofileId— integer
AlbumUnshareRequest
profiles— array of objectsprofileId— long integershareId— integer
AlbumStorageLimits
subscriptionType— string, e.g.FreeAlbumsmaxAlbums— integermaxContentItemsPerAlbum— integermaxShares— integermaxViewableAlbums— integermaxViewableVideos— integermaxContentSize— long integer, size in bytesmaxContentSizeHumanReadable— string, incorrectly uses decimal multiples notation (MB) when in fact calculates binary notation (MiB), so API's120.00 MBis actually 120 MiB or 125.8291 MBmaxVideoLength— long integer, length in milliseconds (1/1000th of a second)minVideoLength— long integer, length in milliseconds (1/1000th of a second)maxShareableAlbums— integermaxVideosPerAlbum— integer
PressieProfileMini
profileId— long integername— stringprofileUrl— string ornullonlineUntil— unknown ornulldistanceKm— number ornull
PressieAlbumsFeedResponse
profileFeeds— array of objectsprofileId— integerpaywallStatus— stringseen— booleancontent— objectprofile— PressieProfileMini
sharedAlbums— array of objects- everything from AlbumPreview
albumViewable— booleanalbumVersion— integerexpiresat— unix timestamp in milliseconds ornullexpiresAt— unix timestamp in milliseconds ornullname— string ornullownerProfileId— integerimageCount— integervideoCount— integercoverContent— objectid— long integercontentType— stringcoverContent— string ornullstatus— string
profile— PressieProfileMini
experimentStatus— numbernonEmptyPersonalAlbumCount— numberemptyAlbumId— unknown ornull
PressieAlbumsPaywallResponse
albumPaywallContent— array of objectsalbumId— long integerprofile— PressieProfileMinipaywallCoverUrl— stringpaywallUrls— array of stringsalbumsItemCount— integer
AlbumCoverUrl
String with URL or null, blurred downscaled preview.
JPEG photo with the first frame of video in case of video files.
Becomes unavailable (AccessDenied) after album has expired.