Skip to content
Fluxer API

Archives

An archive is a snapshot of one user account or one guild, built in the background. Create user archive and Create guild archive start one, and the routes below look it up and give you a download link.

The Admin API routes on this page need archive:view_all, or archive:trigger:user for user archives and archive:trigger:guild for guild archives. See ACL evaluation.

An archive is building while completed_at and failed_at are both null. It is complete once completed_at is set and failed once failed_at is set. A retry clears failed_at and error_message, so a failed archive can read as building again. An archive is deleted at expires_at, 365 days after it was requested.

FieldTypeDescription
archive_idsnowflakeThe ID of the archive
subject_typestringThe archive subject type
subject_idsnowflakeThe user or guild the archive was taken of
requested_bysnowflakeThe admin account that requested the archive
requested_atISO8601 timestampThe time the archive was requested
started_at?ISO8601 timestampThe time construction began
completed_at?ISO8601 timestampThe time construction completed
failed_at?ISO8601 timestampThe time construction failed
file_size?stringThe size of the archive in bytes, as a decimal string
progress_percentnumberThe construction progress from 0 to 100
progress_step?stringThe step the build last reported
error_message?stringThe failure text, if the build failed
download_url_expires_at?ISO8601 timestampSet when the build completes, to the same time as expires_at
expires_at?ISO8601 timestampThe time the archive is deleted
{
"archive_id": "1501314428688998182",
"subject_type": "user",
"subject_id": "1478812292088791040",
"requested_by": "1478812292088791041",
"requested_at": "2026-08-14T11:02:03.000Z",
"completed_at": "2026-08-14T11:06:41.000Z",
"file_size": "48211904",
"progress_percent": 100,
"progress_step": "Completed",
"expires_at": "2027-08-14T11:02:03.000Z"
}
ValueDescription
userThe archive captures one user account
guildThe archive captures one guild

This object uses camelCase field names.

FieldTypeDescription
downloadUrlstringThe time-limited URL the archive file is fetched from
expiresAtISO8601 timestampThe time the URL stops working, seven days after it was issued
{
"downloadUrl": "https://storage.example.com/harvests/1501314428688998182.zip?signature=abc123",
"expiresAt": "2026-09-07T11:06:41.000Z"
}
GET/v1/admin/archivesAudit reason

Returns archive objects, newest first, with no pagination. Use a narrower filter to find older archives. Without requested_by, the API narrows all to the subject types your ACLs cover. With it, you get that account's archives of both subject types, whatever subject_type says.

FieldTypeDescription
subject_type?stringuser, guild or all (default all)
subject_id?snowflakeThe subject whose archives are returned, with subject_type set to user or guild
requested_by?snowflakeThe admin account that requested the archives, ignored when subject_id is set
limit?integerThe maximum number of archives to return (1-200, default 50)
include_expired?booleanWhether to include archives past their expires_at (default false)
FieldTypeDescription
archivesarray[archive object]The archives matching the filters
StatusBodyCondition
200response bodyThe archives were returned
400error responseINVALID_FORM_BODY when subject_id is set while subject_type is all
403error responseMISSING_ACL when you don't have an ACL for this subject type

The rate limit is 200 requests per minute, on the admin:lookup bucket.

GET/v1/admin/archives/{subject_type}/{subject_id}/{archive_id}Audit reason

Returns one archive object, or null archive when nothing matches or the archive has expired.

FieldTypeDescription
archive?archive objectThe archive, or null when it was not found
StatusBodyCondition
200response bodyThe lookup ran, whether or not it found the archive
403error responseMISSING_ACL when you don't have an ACL for this subject type

The rate limit is 200 requests per minute, on the admin:lookup bucket.

GET/v1/admin/archives/{subject_type}/{subject_id}/{archive_id}/downloadAudit reason

Returns an archive download object for a completed archive. The URL points to Download signed file unless the instance uses presigned storage links.

StatusBodyCondition
200archive download objectThe link was issued
400error responseHARVEST_NOT_READY, HARVEST_FAILED or HARVEST_EXPIRED when the archive is not downloadable
403error responseMISSING_ACL when you don't have an ACL for this subject type
404error responseUNKNOWN_HARVEST when nothing matches or the archive has expired

The rate limit is 200 requests per minute, on the admin:lookup bucket.

GET/v1/signed-downloads/{filename}Unauthenticated

Streams an archive or a report file from a link the Admin API gave out. The token expires after seven days for an archive and five minutes for a report file. On an instance that uses presigned storage links, this route always returns 404.

FieldTypeDescription
tokenstringSigned download token from the link (1-2,048 characters)
FieldTypeDescription
Range?stringA byte range to fetch part of the file
StatusBodyCondition
200file bytesThe complete file was streamed
206file bytesThe requested byte range was streamed
404Not FoundThe token is missing, invalid or expired, or the file is gone
416Range Not SatisfiableThe range lies outside the file

The rate limit is 60 requests per minute, on the user:harvest:download_file bucket.