Skip to content
Fluxer API

Jobs

Admin requests such as Queue bulk job, Bulk add blocklist entries, Create system DM broadcast, Refresh search index and archive requests return a job ID that you follow here. Fluxer deletes a job record about 90 days after the job was queued.

FieldTypeDescription
job_idsnowflakeThe ID of the job
task_typestringThe task type the job runs
statusstringThe latest recorded job status
progress_current?integerThe units of work completed
progress_total?integerThe total units of work
progress_message?stringThe latest progress message
error_message?stringThe failure reason
created_atISO8601 timestampThe time the job was recorded
started_at?ISO8601 timestampThe latest recorded start time
completed_at?ISO8601 timestampThe completion, cancellation or failure time
requested_by_user_id?snowflakeThe user who requested the job
audit_log_reason?stringThe audit log reason
jet_stream_lane?stringThe processing lane
jet_stream_seq?stringThe queue sequence as a decimal string
attemptsintegerThe number of attempts so far
max_attemptsintegerThe attempt limit recorded at queue time. Retries stop at the lane's delivery limit, which can differ
run_at?ISO8601 timestampThe earliest run time, or null for an immediate job
cancel_requestedbooleanWhether cancellation has been requested
context_link?stringAn Admin console path related to the job
payload?stringThe JSON-encoded job input
result?stringThe JSON-encoded result

payload can include user IDs and message text. Status and progress can lag a few moments behind the running task. Use the archive routes to track archive progress and failures.

{
"job_id": "1501314428688998182",
"task_type": "bulkUpdateUserFlags",
"status": "running",
"progress_current": 25,
"progress_total": 400,
"progress_message": "Updating flags",
"error_message": null,
"created_at": "2026-08-31T09:00:00.000Z",
"started_at": "2026-08-31T09:00:01.000Z",
"completed_at": null,
"requested_by_user_id": "1478812292088791040",
"audit_log_reason": null,
"jet_stream_lane": "lifecycle",
"jet_stream_seq": "4812",
"attempts": 0,
"max_attempts": 5,
"run_at": null,
"cancel_requested": false,
"context_link": null,
"payload": "{\"user_ids\":[\"1478812292088791040\"]}",
"result": null
}

To get the next page, pass all three next_cursor fields to List jobs as the matching cursor_* query parameters.

FieldTypeDescription
bucket_daystringThe cursor's UTC date as YYYY-MM-DD
created_atISO8601 timestampThe cursor's creation time
job_idsnowflakeThe cursor's job ID
ValueDescription
queuedThe job was recorded and has not started
runningThe job started
succeededThe job completed
cancelledThe task stopped after a cancellation request
deadletterThe job failed, including a failure to queue it

A job still queued or running after 8 days becomes deadletter with the error Expired from the job queue.

List jobs never returns realtime or unfurl work, because those tasks have no job record.

ValueDescription
realtimeMention processing
unfurlLink previews
lifecycleAccount, guild, moderation, archive and bulk work
batchScheduled maintenance, index work and thread maintenance
crosspostAnnouncement channel delivery, copy updates and follower cleanup

The table lists the task types that admin requests queue and the guild and thread work you are most likely to see. Other task types can also appear.

ValueDescription
bulkUpdateUserFlagsA bulk job
bulkUpdateGuildFeaturesA bulk job
bulkAddGuildMembersA bulk job
bulkScheduleUserDeletionA bulk job
bulkBanFileShasAdds entries from Bulk add blocklist entries
harvestUserDataBuilds a user archive
harvestGuildDataBuilds a guild archive
sendSystemDmDelivers a system DM broadcast
refreshSearchIndexRebuilds a search index
guildProcessDeletionRemoves the records of a deleted guild
removeChannelFollowersRemoves the follower webhooks of a deleted or converted announcement channel
deleteChannelThreadsDeletes the threads of a deleted parent channel
syncThreadSearchDocumentUpdates the thread search index
backfillThreadSearchBackfills the thread search index
repairThreadIndexesRebuilds thread list entries
seedThreadPermissionsAdds thread permissions to a guild's channel overwrites and @everyone role where Send Messages is set

bulkDeleteMessagesForUsers runs a bulk job that deletes users' messages, and removeThreadMembershipsForGuildMember removes the thread memberships of a user who is no longer a guild member.

GET/v1/admin/jobs

Returns Admin job objects, newest first. You need jobs:view.

FieldTypeDescription
limit?integerThe maximum number of jobs to return (1-200, default 50)
cursor_bucket_day?stringnext_cursor.bucket_day as a YYYY-MM-DD UTC date
cursor_created_at?stringnext_cursor.created_at as an ISO 8601 timestamp (1-64 characters)
cursor_job_id?snowflakeThe job ID from next_cursor.job_id
max_lookback_days?integerThe number of days before today to include (1-60, default 14)
status?stringFilter by job status
task_type?stringFilter by task type (1-128 characters)
requested_by_user_id?snowflakeFilter by requester

next_cursor is set whenever a page is full, and the next page can be empty. It is null when there are no more jobs in the lookback window.

FieldTypeDescription
jobsarray[Admin job object]The jobs in this page
next_cursor?job cursor objectThe cursor for the next request
StatusBodyCondition
200response bodyThe job page was returned
400error responseINVALID_FORM_BODY because a query parameter is invalid

The rate limit is 600 requests per minute, on the admin:jobs:view bucket.

GET/v1/admin/jobs/active

Returns the Admin job objects of queued and running jobs, with no filters or pagination. You need jobs:view.

FieldTypeDescription
jobsarray[Admin job object]The recorded active jobs
StatusBodyCondition
200response bodyThe active jobs were returned

The rate limit is 600 requests per minute, on the admin:jobs:view bucket.

GET/v1/admin/jobs/{job_id}

Returns one Admin job object. You need jobs:view.

FieldTypeDescription
jobAdmin job objectThe job
StatusBodyCondition
200response bodyThe job was returned
404{"error": "job_not_found"}No job record has this ID

The rate limit is 600 requests per minute, on the admin:jobs:view bucket.

PUT/v1/admin/jobs/{job_id}/cancellationAudit reason

Requests cancellation of a queued or running job. You need jobs:cancel.

FieldTypeDescription
cancelledbooleanWhether a cancellation request was recorded
StatusBodyCondition
200response bodycancelled is false when the job doesn't exist or has finished

Only sendSystemDm, bulkBanFileShas and the bulk job tasks check for the request. They stop at their next check, set the status to cancelled and keep the work already done. Other tasks run to the end.

Every request records an Admin audit entry with action cancel_job, target type bulk_job, target ID job_id and metadata key cancelled, even when cancelled is false.

The rate limit is 600 requests per minute, on the admin:jobs:view bucket.