Skip to content
Fluxer API

Admin API overview

The Admin API is the privileged surface for administering an instance: its accounts, guilds, messages, and configuration. Every route sits below /v1/admin and shares the JSON framing and error envelope of the HTTP API. It applies its own credential policy, ACL evaluation, and rate limit buckets.

Every Admin operation accepts a user session token as a bare Authorization value, an access token issued by Fluxer’s built-in Admin OAuth2 application as Bearer <token>, or an Admin API key as Admin <token>. Fluxer resolves a value in the user session token form as a session token even under the Bearer prefix. HTTP authentication defines the credential syntax.

Fluxer evaluates the credential in a fixed order. A request that resolves no account is refused with 401 UNAUTHORIZED, as is a credential presented with the Bot scheme. An access token issued to any OAuth2 application other than the built-in Admin application is refused with 403 ACCESS_DENIED. An account holding neither admin:authenticate nor the wildcard * is refused with 403 MISSING_PERMISSIONS. An account that clears both gates but satisfies none of the ACLs the operation names is refused with 403 MISSING_ACL.

No Admin operation declares an OAuth2 scope, an MFA requirement, or a sudo requirement, so none consumes the X-Fluxer-Sudo-Mode-JWT header. An accepted credential together with the required ACLs is the complete authorisation boundary.

An Admin API key authenticates as the account that created it, and Fluxer reads it only on a path below /v1/admin. A request presenting a key on any other path continues with no credential resolved. Fluxer authorises a key-authenticated request twice. The key’s own ACL set must satisfy the operation, and unless the owning account holds * that account must itself hold one of the ACLs the operation names. Removing an ACL from either side narrows every existing key at once, with no rotation.

Initial setup is the single exception. While the instance reports its setup as unconfigured, a session credential reaches the instance configuration operations without holding any ACL. The session that switches setup to configured is granted * immediately. Once setup is configured those operations apply the boundary above.

Admin authorisation runs before request validation on every operation except Queue bulk job, whose body is validated first because its ACL is selected from that body. An account lacking the required ACL is therefore refused with 403 even when its query string or body is also malformed.

An operation names one or more ACLs and admits the request when the caller holds at least one of them. The wildcard * satisfies every requirement on its own.

An operation can stack several requirements, each evaluated separately, and the caller must satisfy all of them. Create NCMEC report is the widest example and stacks csam:submit_ncmec, message:delete, user:delete, and archive:trigger:user as four independent requirements.

The effective ACL set of a session or an Admin OAuth2 bearer credential is the set stored on the account. The effective set of an Admin API key is the set stored on the key, subject to the owner check above. Set user ACLs writes an account’s set. Holding admin:authenticate or * is the whole definition of an account that can reach the Admin API.

Two operations derive their required ACLs from the validated request body.

Update guild maps each present body field to one ACL and requires every ACL in that set. name maps to guild:update:name, vanity_url_code maps to guild:update:vanity, new_owner_id maps to guild:transfer_ownership, add_features and remove_features map to guild:update:features, and fields together with every remaining setting maps to guild:update:settings. A body with none of those fields resolves to no ACL at all and applies no change. The route also names those five ACLs as an ordinary any-of requirement, evaluated before the body is read.

Queue bulk job maps its task discriminator to one ACL and requires that one. update_user_flags maps to bulk:update:user_flags, update_suspicious_activity_flags maps to bulk:update:suspicious_activity, update_guild_features maps to bulk:update:guild_features, add_guild_members maps to bulk:add:guild_members, and schedule_user_deletion maps to bulk:delete:users.

Fluxer bounds every grant separately. Set user ACLs and Create Admin API key both refuse to write an ACL the acting Admin does not itself hold, with 403 MISSING_ACL. A wildcard holder is exempt. Set user ACLs additionally refuses the acting Admin’s own account with 403 ACCESS_DENIED, and it resolves the target before the bound is evaluated, so an unknown ID fails first with 404 UNKNOWN_USER.

Set user ACLs, Create Admin API key, and Update Admin API key each accept at most 111 ACLs and validate every entry against the registry, so a value outside it returns 400 INVALID_FORM_BODY.

The ACL registry below lists every value the instance recognises.

An Admin audit entry records one Admin action against one target.

Not every Admin operation records an entry. Each Admin resource page states, per operation, whether it records one and what that entry stores.

A request refused by authentication, ACL evaluation, rate limiting, or body validation records nothing.

Fluxer can record more than one entry for one request. Update guild records one entry for each mapped field group it applies. A queued bulk job records one summary entry when it finishes, with the creating Admin and that request’s audit reason. The update_user_flags, update_guild_features, and schedule_user_deletion tasks also record one ordinary entry for each account or guild the worker changes, with audit_log_reason null.

An entry stores an acting Admin, a target type, a target ID, an action name, an optional audit reason, and a string metadata map. Fluxer resolves every other member at read time.

FieldTypeDescription
log_idsnowflakeThe ID of the audit entry
admin_user_idsnowflakeThe ID of the account that performed the action
admin_user1?Admin user summary objectThe resolved acting Admin, or null when the account no longer resolves
target_typestringThe audit target type the entry was recorded against (1-256 characters)
target_id2stringThe target ID in decimal, which is the literal 0 for a target that has no snowflake
target_user3?Admin user summary objectThe resolved target account, or null when the entry names no account target
target_guild4?Admin guild summary objectThe resolved target guild, or null when the entry names no guild target
target_channel5?Admin channel summary objectThe resolved target channel, or null when the entry names no channel target
related_users6map[snowflake, Admin user summary object]The accounts the entry references, keyed by ID
related_guilds6map[snowflake, Admin guild summary object]The guilds the entry references, keyed by ID
related_channels6map[snowflake, Admin channel summary object]The channels the entry references, keyed by ID
actionstringThe audit action the service recorded (1-256 characters)
audit_log_reason?stringThe normalised audit reason (1-4,000 characters), or null when the request supplied none
metadata7map[string, string]The additional values the operation recorded
created_atISO8601 timestampThe time the entry was recorded

1 Resolved from admin_user_id at read time, so an account deleted after the entry was written reports null while admin_user_id still has the ID

2 Serialised as a decimal string, like a snowflake. A blocklist entry, a voice region, and a voice server record 0 here and their textual identity in metadata

3 Resolved only when target_type is user, guild_member, message_deletion, or message_shred

4 Resolved only when target_type is guild

5 Resolved when target_type is channel, and otherwise from a channel_id metadata key

6 Resolved once for the whole page and then repeated identically on every entry in it

7 Keys are 1 to 256 characters and values are 0 to 4,000 characters. The keys an operation records are stated by that operation

Fluxer populates the three related_ maps from the acting Admin, from the resolved target, and from the metadata. A metadata key contributes when its value is a decimal integer and its name is user_id, guild_id, channel_id, target_user_id, or admin_user_id, or ends in _user_id, _guild_id, or _channel_id. An identifier that no longer resolves is omitted from the map.

An entry has no request method, request path, status, duration, IP address, or field change list. An entry is never redacted on read, so a caller holding audit_log:view reads audit_log_reason and every metadata value in full.

{
"log_id": "1501314428688998182",
"admin_user_id": "1489200013322551296",
"admin_user": {
"id": "1489200013322551296",
"username": "operator",
"discriminator": "0042",
"global_name": "Operator"
},
"target_type": "user",
"target_id": "1493004551122763776",
"target_user": {
"id": "1493004551122763776",
"username": "subject",
"discriminator": "0007",
"global_name": null
},
"target_guild": null,
"target_channel": null,
"related_users": {},
"related_guilds": {},
"related_channels": {},
"action": "change_username",
"audit_log_reason": "Impersonation report 4821",
"metadata": {
"old_username": "subj3ct",
"new_username": "subject",
"discriminator": "7"
},
"created_at": "2026-05-14T09:12:44.183000+00:00"
}
FieldTypeDescription
idsnowflakeThe ID of the account
usernamestringThe username of the account
discriminator1stringThe four-digit discriminator of the account
global_name?stringThe display name of the account, or null when none is set

1 Left-padded with zeroes to four digits, unlike the unpadded integer discriminator of the Admin user object

FieldTypeDescription
idsnowflakeThe ID of the guild
namestringThe name of the guild
FieldTypeDescription
idsnowflakeThe ID of the channel
name?stringThe name of the channel, or null for a direct message channel
typeintegerThe channel type
guild_id?snowflakeThe ID of the owning guild, or null for a direct message channel
ValueDescription
userUser account
guildGuild
guild_memberGuild membership
guild_emojiGuild emoji asset
guild_stickerGuild sticker asset
messageMessage
message_deletion1Bulk deletion of every message one account sent
message_shred1Message shred job for one account
assetStored media asset
applicationOAuth2 application
reportUser report
search_indexSearch index
system_dmSystem DM broadcast
voice_region2Voice region
voice_server2Voice server registration
ip2IP blocklist entry or suspicious IP marker
email2Exact email blocklist entry
email_domain2Suspicious email domain entry
phrase2Phrase blocklist entry
url2Exact URL blocklist entry
url_domain2URL domain blocklist entry
file_sha2File SHA-256 blocklist entry
avatar_hash2Avatar hash blocklist entry
profile_substring2Profile substring blocklist entry

1 The target ID is the account the job acts on, and the entry resolves that account into target_user

2 The target has no snowflake, so target_id is 0 and the entry’s textual identity is in metadata

The field is a free-form string, so a client MUST tolerate a value outside this table.

An operation records one of the following actions. The field is a free-form string of 1 to 256 characters, so a client MUST tolerate a value outside this table.

ValueDescription
NCMEC ReportAn attachment was submitted through the NCMEC reporting integration
add_suspicious_email_domainA domain was added to the suspicious email domain list
approve_registrationA pending registration was approved
auto_resolve_reports_on_deletionReports against an account were resolved automatically as part of its deletion
ban_avatar_hashAn avatar hash was added to the avatar blocklist
ban_emailAn address was added to the email blocklist
ban_file_shaA file hash was added to the attachment blocklist
ban_ipAn address was added to the IP blocklist
ban_ip_skipped_exemptAn IP blocklist entry was declined by the instance exemption list
ban_ip_skipped_cgnatAn IP blocklist entry was declined by the carrier-grade NAT blast-radius guard
ban_memberAn account was banned from a guild
ban_phraseA phrase was added to the message phrase blocklist
ban_profile_substringA substring was added to the profile substring blocklist
ban_urlA URL was added to the URL blocklist
ban_url_domainA domain was added to the URL domain blocklist
bulk_add_guild_membersA bulk guild member addition was queued or applied
bulk_ban_file_shasA queued bulk file hash blocklist job was applied
bulk_schedule_deletionA bulk account deletion schedule was queued or applied
bulk_update_guild_featuresA bulk guild feature change was queued or applied
bulk_update_suspicious_activity_flagsA bulk suspicious activity flag change was queued or applied
bulk_update_user_flagsA bulk account flag change was queued or applied
cancel_bulk_message_deletionA bulk message deletion an account scheduled for itself was cancelled
cancel_deletionA scheduled account deletion was cancelled
change_dobA date of birth was changed
change_emailAn email address was changed
change_usernameA username or discriminator was changed
clear_fields1Profile fields of an account, or fields of a guild, were cleared
create_voice_regionA voice region was created
create_voice_serverA voice server was registered
delete_all_user_messagesDeletion of every message an account sent was queued
delete_all_user_messages_dry_runThe same operation was run with dry_run set, so no message was deleted
delete_guildA guild was deleted
delete_messageOne message was deleted
delete_voice_regionA voice region was deleted
delete_voice_serverA registered voice server was deleted
delete_webauthn_credentialA WebAuthn credential was removed from an account
disable_mfaMulti-factor authentication was disabled on an account
disable_suspicious_activityAn account flagged for suspicious activity was disabled
force_add_to_guildAn account was added to a guild while bypassing the ban check
kick_memberA member was removed from a guild
list_user_sessionsAn account’s login sessions were read
list_webauthn_credentialsAn account’s WebAuthn credentials were read
mark_suspicious_ipAn IP address was marked as suspicious
mark_suspicious_ip_skipped_invalidThe address could not be parsed, so no marker was written
mark_suspicious_ip_skipped_ipinfo_unavailableIP intelligence was unavailable, so no marker was written
mark_suspicious_ip_skipped_trusted_commercial_privacy_providerThe address belongs to a trusted commercial privacy provider, so no marker was written
mark_suspicious_ip_skipped_high_blast_radiusThe address failed the blast-radius guard, so no marker was written
purge_assetA stored media asset was purged
purge_guild_emoji_assetA guild emoji asset was purged
purge_guild_sticker_assetA guild sticker asset was purged
queue_message_shredA message shred job was queued
queue_refresh_indexA search index rebuild was requested
reject_registrationA pending registration was rejected
reload_guildOne guild was reloaded on the main Gateway
remove_relationshipOne relationship was removed from an account
remove_relationships_by_categoryEvery relationship in one category was removed from an account
remove_suspicious_email_domainA domain was removed from the suspicious email domain list
resend_verification_emailAn email verification message was requested again for an account
resolve_reportA report was updated or resolved
schedule_deletionAccount deletion was scheduled
send_password_resetA password reset message was requested for an account
set_aclsThe Admin ACL set of an account was replaced
set_bot_statusThe bot flag of an account was changed
set_system_statusThe system flag of an account was changed
set_traitsAccount traits were replaced
shutdown_guildOne guild was stopped on the main Gateway
system_dm.sendA system DM broadcast was created
temp_banA temporary or permanent account ban was applied
terminate_sessionsEvery login session of an account was revoked
transfer_ownership1Guild ownership or OAuth2 application ownership was transferred
trigger_user_archiveA user archive was created
unbanAn account ban was lifted
unban_avatar_hashAn avatar hash was removed from the avatar blocklist
unban_emailAn address was removed from the email blocklist
unban_file_shaA file hash was removed from the attachment blocklist
unban_ipAn address was removed from the IP blocklist
unban_phraseA phrase was removed from the message phrase blocklist
unban_profile_substringA substring was removed from the profile substring blocklist
unban_urlA URL was removed from the URL blocklist
unban_url_domainA domain was removed from the URL domain blocklist
update_featuresGuild features were added or removed
update_flagsAccount flags were changed
update_has_verified_phoneVerified phone state was changed
update_nameA guild name was changed
update_premium_flagsPremium flags were changed
update_settingsGeneral guild settings were changed
update_suspicious_activity_flagsSuspicious activity flags were replaced
update_vanityA guild custom invite code was changed
update_voice_regionA voice region was updated
update_voice_serverA registered voice server was updated
verify_emailAn email address was marked verified

1 The same action name is recorded for two different resources, so target_type disambiguates the entry

Fluxer reads the X-Audit-Log-Reason header once at the boundary, on every request to the API, Admin or not. The header is read raw and never percent-decoded, so a client that URI-encodes the value has the encoded form stored.

Fluxer normalises the value by stripping control and format characters and trimming surrounding whitespace. An absent header, a blank value, and a value whose normalised length exceeds 512 characters all resolve to null. Fluxer never fails a request during this normalisation, so an over-long reason is dropped silently.

Fluxer writes the resolved value to audit_log_reason on every entry the request records. An operation that records no entry accepts the header and does nothing with it. An Admin resource page marks an operation with the audit reason capability only where an entry stores the value.

An Admin failure uses the same envelope as the HTTP API error response. The HTTP status is in the status line, and the request identifier in the X-Request-ID response header.

FieldTypeDescription
codestringThe stable machine-readable API error code
message1stringThe human-readable description of this failure
errors?2array[validation error object]The request fields that failed validation

1 The wording varies by locale and is not a stable value for programmatic matching

2 Present on an INVALID_FORM_BODY response, and on any other failure that has field detail

Structured detail sits at the top level of the object. A client MUST treat a member it does not recognise as absent, and MUST NOT assume that two failures with the same code have the same extra members.

Every Admin response follows the shared response header contract. An HTTP 401 has no challenge header, as described under failed authentication. Admin authentication lists the credential types each Admin operation accepts.

StatusBodyCondition
400error responsePath, query, or body validation fails
401error responseAdmin credential is missing or unresolvable
403error responseCredential type or ACL evaluation denies the request
404error responseA referenced resource does not exist
429error responseRoute or global rate limit denies the request
500error responseAn unexpected server error occurs
503error responseThe in-flight request ceiling of the instance is exceeded

A 429 has Retry-After, X-RateLimit-Scope, and the route bucket headers described in rate limit headers. A 503 has Retry-After: 1. Fluxer applies the concurrency ceiling before routing, so a 503 can answer any Admin path with SERVICE_UNAVAILABLE regardless of credentials.

An Admin route bucket is keyed by the authenticated account and the credential type together, and no Admin bucket name has a path parameter. Every operation naming one bucket shares one allowance for each account, and an Admin API key draws on a separate allowance from its owner’s session.

Every Admin operation declares a route bucket, and each Admin resource page names the one its operations use.

The global user bucket permits 50 requests per second, rising to 1,200 for an account that has the HIGH_GLOBAL_RATE_LIMIT flag. An account with the RATE_LIMIT_BYPASS flag is evaluated against no bucket at all. Instance configuration can change route and global limits as described in rate limits.

Fluxer classifies a successful Admin request from an ordinary account as a user request, and the response has no informational rate limit headers.

GET/v1/admin/acls

Returns every Admin permission string the instance recognises, in ACL registry order. Requires admin:authenticate.

FieldTypeDescription
acls1array[string]The permission strings the Admin API recognises (at most 111 entries)

1 The response is the registry itself and does not vary with the caller’s own ACL set

StatusBodyCondition
200response bodyACL registry was returned
403error responseCredential type is refused, or the account holds neither admin:authenticate nor *

200 requests per minute for each authenticated user, on the admin:lookup bucket.

The registry is returned in this order by List ACLs. A value outside it authorises nothing.

ValueDescription
*1Satisfies every Admin permission, including permissions introduced later
acl:set:userReplaces the Admin ACL set held by an account
admin_api_key:manageCreates, reads, renames, and revokes Admin API keys
application:lookupReads Admin application resources, including the applications owned by one account
application:list:by_owner2Reads the two application listings
application:transfer_ownershipTransfers OAuth2 application ownership
archive:trigger:guildCreates guild archives
archive:trigger:userCreates user archives
archive:view_all3Reads and downloads archives
asset:purgeReads a guild’s emojis and stickers, and purges guild media assets
audit_log:viewReads the Admin audit log
admin:authenticatePermits the account to reach the Admin API at all, and admits List ACLs and Get current Admin user
jobs:viewReads background job state
jobs:cancelRequests background job cancellation
ban:email:addAdds and updates email blocklist entries
ban:email:checkReads the email blocklist
ban:email:removeRemoves email blocklist entries
suspicious_email_domain:addAdds and updates email-domain-suspicious blocklist entries
suspicious_email_domain:checkReads the email-domain-suspicious blocklist
suspicious_email_domain:removeRemoves email-domain-suspicious blocklist entries
ban:phrase:addAdds and updates phrase blocklist entries
ban:phrase:checkReads the phrase blocklist
ban:phrase:removeRemoves phrase blocklist entries
ban:ip:addAdds and updates ip blocklist entries
ban:ip:checkReads the ip blocklist
ban:ip:removeRemoves ip blocklist entries
ban:url:addAdds and updates url blocklist entries
ban:url:checkReads the url blocklist
ban:url:removeRemoves url blocklist entries
ban:url_domain:addAdds and updates url-domain blocklist entries
ban:url_domain:checkReads the url-domain blocklist
ban:url_domain:removeRemoves url-domain blocklist entries
ban:file_sha:addAdds and updates file-sha blocklist entries
ban:file_sha:checkReads the file-sha blocklist
ban:file_sha:removeRemoves file-sha blocklist entries
ban:avatar_hash:add 4Adds and updates avatar-hash blocklist entries
ban:avatar_hash:checkReads the avatar-hash blocklist
ban:avatar_hash:removeRemoves avatar-hash blocklist entries
ban:profile_substring:addAdds and updates profile-substring blocklist entries
ban:profile_substring:checkReads the profile-substring blocklist
ban:profile_substring:removeRemoves profile-substring blocklist entries
bulk:add:guild_membersQueues the bulk guild member addition task
bulk:delete:usersQueues the bulk account deletion task
bulk:update:guild_featuresQueues the bulk guild feature task
bulk:update:suspicious_activityQueues the bulk suspicious activity flag task
bulk:update:user_flagsQueues the bulk account flag task
csam:submit_ncmecSubmits an attachment through the NCMEC reporting integration
discovery:removeRemoves a guild from discovery
discovery:reviewReads, reviews, and edits discovery applications, categories, and listings
gateway:memory_statsReads main Gateway statistics, memory statistics, and voice state counts
gateway:reload_allReloads guilds across the main Gateway
gift_codes:generateGenerates gift codes
guild:audit_log:viewReads a guild’s ordinary audit log
guild:ban_memberBans a guild member
guild:deleteDeletes a guild
guild:force_add_memberAdds an account to a guild
guild:kick_memberRemoves a guild member
guild:list:membersReads guild member resources
guild:lookupReads and searches Admin guild resources, and queues and reads search index rebuilds
guild:reloadReloads one guild on the main Gateway
guild:shutdownStops one guild on the main Gateway
guild:transfer_ownership5Transfers guild ownership
guild:update:features5Adds and removes guild features
guild:update:name5Updates a guild name
guild:update:settings5Updates general guild settings and clears guild fields
guild:update:vanity5Updates a guild custom invite code
instance:config:updateUpdates instance configuration, branding assets, SMTP tests, registration URLs, and pending registrations
instance:config:viewReads instance configuration
instance:limit_config:updateReplaces the instance-wide limit configuration
instance:limit_config:viewReads the instance-wide limit configuration
message:delete_allQueues deletion of every message one account sent
message:deleteDeletes one message
message:lookupReads, browses, and searches messages through the Admin API
message:shredQueues an explicit message shred job and reads its state
report:resolveUpdates and resolves reports
report:viewReads and searches reports
report:view:reporter_pii6Unredacts the contact fields a reporter supplied
system_dm:sendSends an official direct message from the instance to one or many accounts
system:heap_snapshotCaptures a heap snapshot of a running process
user:cancel:bulk_message_deletionCancels the bulk message deletion an account scheduled for itself
user:deleteSchedules or cancels account deletion
user:disable:suspiciousApplies the suspicious account disable operation
user:list:dm_channelsReads a user’s direct message and group direct message channels
user:list:guildsReads a user’s guild memberships
user:list:relationshipsReads a user’s relationships
user:list:sessionsReads a user’s login sessions
user:lookupReads and searches the base Admin user resource
user:remove:relationshipRemoves one relationship or every relationship in one category
user:view:contact_logReads a user’s identity and contact change log
user:view:dob6Unredacts user dates of birth
user:view:email6Unredacts user email addresses and email verification state
user:view:ip6Unredacts the last active IP address and the location derived from it
user:temp_banApplies and lifts an account ban
user:update:bot_statusUpdates bot and system account state
user:update:dobUpdates dates of birth
user:update:emailUpdates the email address, marks the address verified, resends verification, and sends a password reset
user:update:flagsUpdates account flags and premium flags, and terminates every login session of an account
user:update:mfaReads and removes a user’s WebAuthn credentials, and removes MFA state
user:update:phoneUpdates verified phone state
user:update:profileClears profile fields
user:update:suspicious_activityReplaces suspicious activity flags
user:update:traitsReplaces account traits
user:update:usernameUpdates usernames and discriminators
voice:region:createCreates voice regions
voice:region:deleteDeletes voice regions
voice:region:listReads voice regions
voice:region:updateUpdates voice regions
voice:server:createRegisters a voice server in a region
voice:server:deleteDeletes a registered voice server
voice:server:listReads registered voice servers
voice:server:updateUpdates a registered voice server

1 The first entry of the registry. An ACL set can contain it alongside named permissions

2 List applications and List user applications accept it in place of application:lookup, and no other operation reads it

3 The three archive reads accept archive:view_all, archive:trigger:user, or archive:trigger:guild, so an Admin who can create archives can also read them

4 Block a user’s current avatar requires it as well

5 Update guild names all five of these as one any-of requirement and then requires every one that the submitted body maps to

6 The permission admits no operation of its own. It only widens what an already admitted read returns

List ACLs returns these permission strings alone, with no description attached.

GET/v1/admin/audit-logs

Returns a page of Admin audit entry objects with their resolved user, guild, and channel summaries. Requires audit_log:view.

Reading the log records no entry of its own.

FieldTypeDescription
q?1stringThe free-text query (1-1,024 characters)
admin_user_id?snowflakeReturn only entries recorded for this acting Admin
target_type?stringReturn only entries recorded against this audit target type (1-64 characters)
target_id?stringReturn only entries recorded against this target ID
sort_by?2stringcreatedAt or relevance (default createdAt)
sort_order?2stringasc or desc (default desc)
limit?integerThe maximum number of entries to return (1-200, default 50)
offset?integerThe number of entries to skip (minimum 0, default 0)

1 Supplying it runs a full-text search over the indexed action, target_type, target_id, and audit_log_reason of each entry. Omitting it pages the log in order with the same filters applied

2 Honoured only when q is supplied, and without q the listing is ordered newest first. relevance orders by search score and ignores sort_order

FieldTypeDescription
logsarray[Admin audit entry object]The entries in this page
total1integerThe number of entries the query matched

1 The index reports the full match count. The table fallback reports only the matches inside the rows it scanned

StatusBodyCondition
200response bodyAudit page was returned
403error responseCredential type is refused, or the account holds neither audit_log:view nor *

100 requests per minute for each authenticated user, on the admin:audit_log bucket.

GET/v1/admin/audit-logs/{log_id}

Returns one Admin audit entry object with the same resolved summaries the listing returns. Requires audit_log:view.

FieldTypeDescription
log_idsnowflakeThe ID of the audit entry
StatusBodyCondition
200Admin audit entry objectAudit entry was returned
403error responseCredential type is refused, or the account holds neither audit_log:view nor *
404error responseNo entry has that identifier and the request returns NOT_FOUND

100 requests per minute for each authenticated user, on the shared admin:audit_log bucket.