---
title: "List guild audit logs"
method: GET
path: "/guilds/{guild_id}/audit-logs"
tags: ["Guilds"]
---

# List guild audit logs

`GET /guilds/{guild_id}/audit-logs`

List guild audit logs. Requires view_audit_logs permission. Returns guild activity history with pagination and action filtering.

## Path parameters

- `guild_id` union, required
  - string, snowflake
  - integer

## Query parameters

- `limit` integer
- `before` union
  - string, snowflake
  - integer
- `after` union
  - string, snowflake
  - integer
- `user_id` union
  - string, snowflake
  - integer
- `action_type` 1 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 40 | 41 | 42 | 50 | 51 | 52 | 60 | 61 | 62 | 90 | 91 | 92 | 72 | 73 | 74 | 75 — The type of action that occurred

## Response `200`

Success

- GuildAuditLogListResponse
  - `audit_log_entries` GuildAuditLogEntryResponse[], required — Array of audit log entries
    - `id` string, snowflake, required
    - `action_type` 1 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 30 | 31 | 32 | 40 | 41 | 42 | 50 | 51 | 52 | 60 | 61 | 62 | 90 | 91 | 92 | 72 | 73 | 74 | 75, required — The type of action that occurred
    - `user_id` string, snowflake
    - `target_id` string, nullable — The ID of the affected entity (user, channel, role, invite code, etc.)
    - `reason` string — The reason provided for the action
    - `options` object — Additional options depending on action type
      - `channel_id` string — Channel ID for relevant actions
      - `count` number — Count of items affected
      - `delete_member_days` string — Number of days of messages to delete on member ban
      - `id` string — ID of the affected entity
      - `integration_type` number — Type of integration
      - `message_id` string — Message ID for relevant actions
      - `members_removed` number — Number of members removed
      - `role_name` string — Name of the role
      - `type` number — Type identifier
      - `inviter_id` string — ID of the user who created the invite
      - `max_age` number — Maximum age of the invite in seconds
      - `max_uses` number — Maximum number of uses for the invite
      - `temporary` boolean — Whether the invite grants temporary membership
      - `uses` number — Number of times the invite has been used
    - `changes` AuditLogChangeSchema[] — Changes made to the target
      - `key` string, required — The field that changed
      - `old_value` union — Value before the change
        - string
        - number
        - boolean
        - string[]
        - number[]
        - object
          - `added` string[], required
          - `removed` string[], required
      - `new_value` union — Value after the change
        - string
        - number
        - boolean
        - string[]
        - number[]
        - object
          - `added` string[], required
          - `removed` string[], required
  - `users` UserPartialResponse[], required — Users referenced in the audit log entries
    - `id` string, snowflake, required
    - `username` string, required — The username of the user, not unique across the platform
    - `discriminator` string, required — The four-digit discriminator tag of the user
    - `global_name` string, nullable, required — The display name of the user, if set
    - `avatar` string, nullable, required — The hash of the user avatar image
    - `avatar_color` integer, required
    - `bot` boolean — Whether the user is a bot account
    - `system` boolean — Whether the user is an official system user
    - `flags` integer, required — The public flags on the user account
    - `mention_flags` 0 | 1 | 2 — Reply mention preference
  - `webhooks` AuditLogWebhookResponse[], required — Webhooks referenced in the audit log entries
    - `id` string, snowflake, required
    - `type` 1 | 2, required — The type of webhook
    - `guild_id` string, snowflake
    - `channel_id` string, snowflake
    - `name` string, required — The name of the webhook
    - `avatar_hash` string, nullable — The hash of the webhook avatar

## Other responses

- `400` — Bad Request - The request was malformed or contained invalid data
- `401` — Unauthorized - Authentication is required or the token is invalid
- `403` — Forbidden - You do not have permission to perform this action
- `429` — Too Many Requests - You are being rate limited
- `500` — Internal Server Error - An unexpected error occurred

## Changes

> 9 revisions in range; 1 not diffed.

- **2026-09-06** `a52a2cf49d9b` — 32 warning
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `400`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `401`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `403`
  - added the new `IP_BAN_DECLINED` enum value to the `code` response property for the response status `500`
  - …28 more
  - …this revision’s changelog is incomplete
- **2026-09-05** `4dbb738a3e22` — 4 info
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `400`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `401`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `403`
  - removed the `NSFW_EMOJI_STICKER_BLOCKED` enum value from the `code` response property for the response status `500`
- …earlier changes not shown

[Full history](https://skmtc.dev/fluxer/apis/fluxer-api/changes/guilds/:guild_id/audit-logs/get.md)

---

[API](https://skmtc.dev/fluxer/apis/fluxer-api.md) · [All operations](https://skmtc.dev/fluxer/apis/fluxer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/fluxer/apis/fluxer-api/revisions/964e23cbdfa5?raw)
