# Get public events or user-specific events

Returns public events for unauthenticated users, or events for a specific user/owner for authenticated users. Supports filtering by organizer or owner.

Endpoint: GET /api/v1/events
Version: 1.0
Security: 

## Query parameters:

  - `groupId` (string,null)
    List specific group's events
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `limit` (integer,null)
    Show no more than the given number of events

  - `offset` (integer,null)
    An offset to show events starting from

  - `organizerId` (string,null)
    List specific user's events
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `username` (string,null)
    List specific user's events

  - `withTranslation` (string,null)
    Include translation
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

## Response 200 fields (application/json):

  - `id` (string, required)
    Internal event id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `uri` (string, required)
    Unique event uri

  - `groupId` (string,null)
    Group id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `name` (string, required)
    Event's name

  - `startTime` (string, required)
    Event's start time
    Example: "2022-03-10T16:15:50Z"

  - `endTime` (string,null)
    Event's end time
    Example: "2022-03-10T16:15:50Z"

  - `ianaTimeZone` (string,null)
    Event's IANA time zone

  - `timeZoneOffsetSeconds` (integer, required)
    Event's time zone offset (in seconds)

  - `description` (string,null)
    Event's Markdown description (absent for non-local events)

  - `descriptionHtml` (string,null)
    Event's HTML description

  - `url` (string,null)
    Event's virtual location URL

  - `addressId` (integer,null)
    Event's address id

  - `tags` (array,null)
    Event's tags

  - `mentions` (array,null)
    Event's mentions

  - `stats` (object, required)
    Stats

  - `stats.interests` (integer, required)

  - `stats.joins` (integer, required)

  - `status` (string, required)
    Event status
    Enum: "CONFIRMED", "CANCELLED"

  - `attendeeStatus` (string,null)
    Viewer user's event attendance status
    Enum: "INVITED", "JOINED", "JOINED_TENTATIVELY", "REJECTED"

  - `commentCount` (integer,null)
    Event comment count

  - `privacy` (string, required)
    Privacy levels for posts:
      * PUBLIC - post is visible to anyone, including people who are not logged in and those who do not follow the user.
                 It appears in the public timelines (home, local, and federated).
      * UNLISTED - post is visible to anyone who visits the user's profile, but it does not appear in public timelines.
                 Only followers and those who visit the user's profile directly can see it.
      * PRIVATE - post is only visible to the user's followers. It does not appear in public timelines or on the user's profile for non-followers.
      * DIRECT - post is visible only to the mentioned users. It functions like a direct message and is not visible on public timelines, the user's profile, or to followers.
      * FOLLOW_POST - comment only. Follow parent post visibility
      * HIDDEN - post is visible only to the author. It is never federated on create/delete. Transitioning to a visible privacy sends
      *            Create for born-hidden posts and Update for re-unhide. Visible-to-HIDDEN is allowed only for personal root posts.
    Enum: "PUBLIC", "UNLISTED", "PRIVATE", "DIRECT", "FOLLOW_POST", "HIDDEN"

  - `translation` (object,null, required)
    Event translation

  - `translation.name` (string, required)

  - `translation.descriptionHtml` (string,null, required)

  - `createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `deletedAt` (string,null, required)
    Example: "2022-03-10T16:15:50Z"

  - `lang` (string,null, required)
    Enum: "BG", "CS", "DA", "DE", "EL", "EN", "ES", "ET", "FI", "FR", "HU", "ID", "IT", "JA", "KO", "LT", "LV", "NB", "NL", "PL", "PT", "RO", "RU", "SK", "SL", "SV", "TR", "UK", "ZH"

  - `organizer` (object, required)
    One of account's users.
       Can be multiple per account

  - `organizer.id` (string, required)
    internal id of this user
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.username` (string, required)
    unique user name
    Example: "john_smith"

  - `organizer.domain` (string, required)
    User's domain
    Example: "wlsly1.net"

  - `organizer.local` (boolean, required)
    Whether this user is local to this server

  - `organizer.displayName` (string, required)
    full name of the user
    Example: "John Smith"

  - `organizer.uri` (string, required)
    URI of this user
    Example: "https://wlsly1.net/users/john_smith"

  - `organizer.avatar` (object,null)
    User's avatar

  - `organizer.avatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.avatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.avatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.avatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.avatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `organizer.avatar.meta` (object)
    Meta data

  - `organizer.avatar.meta.blurhash` (string,null)

  - `organizer.avatar.meta.name` (string,null)

  - `organizer.avatar.meta.altText` (string,null)

  - `organizer.avatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `organizer.avatar.files` (array, required)
    List of all the files this upload has

  - `organizer.avatar.files.uri` (string,null, required)
    Full url of the file

  - `organizer.avatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.avatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `organizer.avatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `organizer.avatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `organizer.avatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `organizer.avatar.files.meta.width` (integer,null)
    Media width

  - `organizer.avatar.files.meta.height` (integer,null)
    Media height

  - `organizer.avatar.files.meta.codec` (string,null)
    Video codec

  - `organizer.avatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `organizer.avatar.files.size` (integer, required)
    File size in bytes

  - `organizer.avatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.avatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.avatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `organizer.avatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `organizer.avatar.error` (string,null)
    Upload processing error

  - `organizer.avatar.cached` (boolean)
    true if cached

  - `organizer.avatar.logs` (string,null)
    Logs

  - `organizer.avatar.remote` (boolean)
    true if this upload is remote

  - `organizer.avatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.avatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.createdAt` (string, required)
    User's creation time
    Example: "2022-03-10T16:15:50Z"

  - `organizer.state` (string, required)
    User's moderation state
    Enum: "REGULAR", "SENSITIVE", "LIMITED", "SUSPENDED"

  - `organizer.relationship` (object,null)
    Relationship with this user

  - `organizer.relationship.following` (string,null)
    Does the viewer follow the target?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `organizer.relationship.followed` (string,null)
    Does the target follow the viewer?
    Enum: "PENDING", "ACCEPTED", "REJECTED"

  - `organizer.relationship.blocked` (boolean,null)
    Viewer blocked the target

  - `organizer.relationship.blockedBy` (boolean,null)
    Target blocked the viewer

  - `organizer.relationship.muted` (object,null)
    Viewer mutes the target

  - `organizer.relationship.muted.state` (boolean, required)

  - `organizer.relationship.muted.expiresAt` (string,null)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.relationship.note` (string,null)
    Viewer's private note about the target

  - `organizer.entityType` (string)
    Entity type: USER, BOT, APPLICATION, GROUP_CHANNEL
    Enum: "USER", "BOT", "APPLICATION", "GROUP_CHANNEL"

  - `organizer.appMeta` (object)
    Structured metadata (channel flags, channel color, etc.)

  - `organizer.groupId` (string,null)
    Group ID if this is a group channel or group user.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupPrivacy` (string,null)
    Privacy of this channel in a group.
    Enum: "PUBLIC", "PRIVATE"

  - `organizer.groupUserName` (string,null)
    Name of the channel inside a group

  - `organizer.actorType` (string,null)
    Whether this user is a person, application or a service
    Enum: "Application", "Group", "Organization", "Person", "Service"

  - `organizer.deleted` (boolean,null)

  - `organizer.groupAvatar` (object,null)
    Group avatar (only present for group channels)

  - `organizer.groupAvatar.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupAvatar.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupAvatar.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupAvatar.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupAvatar.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `organizer.groupAvatar.meta` (object)
    Meta data

  - `organizer.groupAvatar.meta.blurhash` (string,null)

  - `organizer.groupAvatar.meta.name` (string,null)

  - `organizer.groupAvatar.meta.altText` (string,null)

  - `organizer.groupAvatar.size` (integer, required)
    Size in bytes of all the files in this upload

  - `organizer.groupAvatar.files` (array, required)
    List of all the files this upload has

  - `organizer.groupAvatar.files.uri` (string,null, required)
    Full url of the file

  - `organizer.groupAvatar.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `organizer.groupAvatar.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `organizer.groupAvatar.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `organizer.groupAvatar.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `organizer.groupAvatar.files.meta.duration` (number,null)
    Video duration in seconds

  - `organizer.groupAvatar.files.meta.width` (integer,null)
    Media width

  - `organizer.groupAvatar.files.meta.height` (integer,null)
    Media height

  - `organizer.groupAvatar.files.meta.codec` (string,null)
    Video codec

  - `organizer.groupAvatar.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `organizer.groupAvatar.files.size` (integer, required)
    File size in bytes

  - `organizer.groupAvatar.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.groupAvatar.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.groupAvatar.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `organizer.groupAvatar.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `organizer.groupAvatar.error` (string,null)
    Upload processing error

  - `organizer.groupAvatar.cached` (boolean)
    true if cached

  - `organizer.groupAvatar.logs` (string,null)
    Logs

  - `organizer.groupAvatar.remote` (boolean)
    true if this upload is remote

  - `organizer.groupAvatar.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.groupAvatar.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `organizer.groupName` (string,null)
    Group name (only present for group channels)

  - `organizer.groupDisplayName` (string,null)
    Group display name (only present for group channels)

  - `organizer.followApproval` (string, required)
    Follow approval mode: AUTO_APPROVE, MANUALLY_APPROVES, or UNKNOWN
    Enum: "AUTO_APPROVE", "MANUALLY_APPROVES", "UNKNOWN"

  - `organizer.groupPrimary` (boolean,null)
    true if this is primary group channel.

  - `organizer.groupAutoSubscribe` (boolean,null)
    true if this is auto-subscribe group channel.

  - `organizer.channel` (boolean, required)
    Whether this is a channel or a user. Deprecated: use 'entityType' instead.

  - `cover` (object,null, required)
    Uploaded file

  - `cover.uploadId` (string, required)
    Internal id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `cover.uploaderId` (string,null)
    User who physically uploaded this file. Null for platform-owned uploads (e.g., default covers). This is an audit/meta field — use ownerId for authorization.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `cover.ownerId` (string, required)
    Entity that owns this upload (user, channel/group, or event). TypeID prefix indicates the owner type.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `cover.attachedToId` (string,null)
    Entity this upload is attached to (e.g., a post or event). NULL for standalone uploads like avatars, covers, or media library items.
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `cover.uploadType` (string, required)
    Type of the upload
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `cover.meta` (object)
    Meta data

  - `cover.meta.blurhash` (string,null)

  - `cover.meta.name` (string,null)

  - `cover.meta.altText` (string,null)

  - `cover.size` (integer, required)
    Size in bytes of all the files in this upload

  - `cover.files` (array, required)
    List of all the files this upload has

  - `cover.files.uri` (string,null, required)
    Full url of the file

  - `cover.files.fileId` (string, required)
    File id
    Example: "us_01hxcvk1hjexere4pvtrj0ymqq"

  - `cover.files.extension` (string, required)
    File extension
    Example: "mp4"

  - `cover.files.original` (boolean, required)
    true if this file is original, false if it is a derivative

  - `cover.files.meta` (object, required)
    File metadata. Contains optional values for width, height etc.

  - `cover.files.meta.duration` (number,null)
    Video duration in seconds

  - `cover.files.meta.width` (integer,null)
    Media width

  - `cover.files.meta.height` (integer,null)
    Media height

  - `cover.files.meta.codec` (string,null)
    Video codec

  - `cover.files.meta.rotate` (integer,null)
    Rotation in degrees

  - `cover.files.size` (integer, required)
    File size in bytes

  - `cover.files.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `cover.files.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `cover.files.type` (string, required)
    File type
    Enum: "VIDEO", "IMAGE", "AUDIO", "DOCUMENT", "OTHER"

  - `cover.tags` (array, required)
    List of tags attached to upload
    Enum: "Post", "Avatar", "Header", "Album", "Emoji", "Event"

  - `cover.error` (string,null)
    Upload processing error

  - `cover.cached` (boolean)
    true if cached

  - `cover.logs` (string,null)
    Logs

  - `cover.remote` (boolean)
    true if this upload is remote

  - `cover.createdAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `cover.updatedAt` (string, required)
    Example: "2022-03-10T16:15:50Z"

  - `address` (object,null, required)
    Address variant

  - `address.formatted` (string, required)
    Formatted address
    Example: "Adriaen Van Ostadestraat 53, 4703 NT Roosendaal, Netherlands"

  - `address.name` (string,null)
    Name
    Example: "Casa Vacanze"

  - `address.country` (string,null)
    Country
    Example: "USA"

  - `address.countryCode` (string,null)
    Country two letter name
    Example: "us"

  - `address.region` (string,null)
    Region
    Example: "Massachusetts"

  - `address.regionCode` (string,null)
    Region Code
    Example: "MA"

  - `address.subRegion` (string,null)
    Sub-region
    Example: "Newton Heights"

  - `address.locality` (string,null)
    Locality
    Example: "Madrid"

  - `address.street` (string,null)
    Street
    Example: "Adriaen Van Ostadestraat"

  - `address.postalCode` (string,null)
    Address postal code
    Example: "4703 NT"

  - `address.houseNumber` (string,null)
    House number
    Example: "23"

  - `address.longitude` (number,null)
    Longitude
    Example: 4.437564

  - `address.latitude` (number,null)
    Latitude
    Example: 51.534581

  - `address.timeZone` (string,null)
    Time zone name
    Example: "Europe/Amsterdam"

  - `address.plusCode` (string,null)
    Short code
    Example: "9F36GCMQ+R2"

  - `address.serviceId` (string,null)
    Service ID
    Example: "geoapify"

  - `address.placeId` (string,null)
    Service place id

  - `emojis` (array,null)

  - `emojis.shortcode` (string, required)

  - `emojis.category` (string,null, required)

  - `emojis.url` (string, required)

  - `emojis.staticUrl` (string, required)

  - `emojis.visibleInPicker` (boolean, required)

## Response 400 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 404 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


