---
title: "Get User Worlds"
method: GET
path: "/v2/users/{route_users_id}/worlds"
tags: ["UserWorlds"]
---

# Get User Worlds

`GET /v2/users/{route_users_id}/worlds`

## Request

- Base URL: `https://api.sidequestvr.com`
- URL: `https://api.sidequestvr.com/v2/users/{route_users_id}/worlds`
- Auth: none declared

Lists the worlds owned by a user. Public callers see the user's Public worlds only; the user themselves (or an admin) also see their non-Public worlds -- the same semantics as GET /v2/worlds?users_id=N.

## Path parameters

- `route_users_id` string, required

## Query parameters

- `skip` integer
- `limit` integer
- `users_id` integer
- `status` integer: * 100 - Only the world owner can join * 200 - The owner and the owner's accepted friends can join * 250 - Friends+: the owner, the owner's accepted friends, and their accepted friends can join * 300 - The owner plus owners/moderators of communities the world is attached to (Approved attachments only) * 400 - The owner plus any non-blocked member of communities the world is attached to (Approved attachments only) * 1000 - Anyone can join, including anonymous users
- `name` string
- `is_space_external` boolean
- `staff_pick` boolean
- `community_pick` boolean
- `sortOn` string
- `descending` string

## Response `200`

Success

- World[]
  - `worlds_id` integer, required: The unique ID of the world
  - `users_id` integer, required: The ID of the user that owns the world
  - `name` string, required: The name of the world
  - `description` string: The description of the world
  - `image_url` string: A URL to the world's icon/preview image
  - `banner_url` string: A URL to the world's banner image
  - `space_slug` string: The world's subdomain slug when SideQuest-hosted
  - `space_url` string: The canonical joinable URL of the world
  - `space_hash` string: The runtime hash of the world's canonical URL. This is the room identity used by the realtime layer.
  - `player_counts` PacketPartyRoomPlayerCounts: Cached PacketParty player counts across all instances of a space
    - `status` string, required: current, stale, unavailable, or ambiguous when multiple exact rooms map to this space
    - `instances` PacketPartyInstancePlayerCounts[], required: Current instance counts; empty when counts are not current
      - `instance` string, required: Instance identifier, for example a0000
      - `totals` PacketPartyPlayerCountTotals, required: Deduplicated active PacketParty players and connected sessions
        - `playerCount` integer, required: Unique authenticated accounts plus anonymous client identities
        - `accountCount` integer, required: Unique authenticated accounts
        - `guestCount` integer, required: Unique anonymous client identities
        - `sessionCount` integer, required: Connected fresh sessions before account/client deduplication
    - `totals` PacketPartyPlayerCountTotals: Deduplicated active PacketParty players and connected sessions
      - `playerCount` integer, required: Unique authenticated accounts plus anonymous client identities
      - `accountCount` integer, required: Unique authenticated accounts
      - `guestCount` integer, required: Unique anonymous client identities
      - `sessionCount` integer, required: Connected fresh sessions before account/client deduplication
    - `revision` integer: App-wide count snapshot revision
    - `observedAtEpochMs` integer: Source snapshot observation time in epoch milliseconds
    - `staleAfterMs` integer: Maximum snapshot age before counts become stale
  - `is_space_external` boolean, required: True when the world is hosted on a third-party URL (verified via the sidequest-space-verification meta tag) instead of SideQuest hosting
  - `max_occupancy` integer: The per-instance player cap used by instance allocation. Falls back to the scraped sq-maxoccupancy, then 20.
  - `status` integer, required: The world's access level * 100 - Only the world owner can join * 200 - The owner and the owner's accepted friends can join * 250 - Friends+: the owner, the owner's accepted friends, and their accepted friends can join * 300 - The owner plus owners/moderators of communities the world is attached to (Approved attachments only) * 400 - The owner plus any non-blocked member of communities the world is attached to (Approved attachments only) * 1000 - Anyone can join, including anonymous users
  - `block_guests` boolean: Blocks joiners who are not signed in. Does NOT block an unauthenticated bot or AI agent: those classify as bot/agent rather than guest, and are governed by their own flags.
  - `block_bots` boolean: Blocks clients declaring themselves driven by automation tooling (sq_client_kind=mcp). The world owner, sq_admins, managers of the Approved-attached community, and accounts on the world's bot allowlist are exempt.
  - `block_ai_agents` boolean: Blocks headless AI agents (sq_client_kind=agent). Same exemptions as block_bots.
  - `upvotes` integer: The number of discovery upvotes
  - `hot_score` integer: The discovery hot score
  - `attendance_count` integer: The number of recorded visits
  - `time_spent_seconds` integer: The total recorded visit duration in seconds
  - `staff_pick` boolean: Whether this is a staff pick
  - `community_pick` boolean: Whether this is a community pick
  - `categories` string[]: Discovery category tags
  - `user_vote_status` object: The caller's vote status
  - `avg_fps` object: Sample-weighted average FPS
  - `fps_sample_count` integer: Number of FPS reporters represented by the aggregate
  - `fps_reset_at` object: When the world's FPS telemetry was last reset, or null if never
  - `fps_reset_available_at` object: When the owner may next reset FPS telemetry, or null if they may reset now. sq_admins are exempt. Only populated on the single-world read.
  - `attached_community` object: The community this world is attached to (Approved attachment), or null when standalone. At most one by product rule. Only populated on the single-world read.
  - `created_at` string, date-time, required: A timestamp indicating when the world was created
  - `last_modified` string, date-time, required: A timestamp indicating the last time the world was modified

## Other responses

- `400`: The data provided to the call was incorrect or incomplete.
- `403`: Access denied- the authorization token provided does not have access to the resource.

## Changes

- **2026-10-13** `41d187b01c77`: 2 info
  - added the optional property `items/fps_reset_at` to the response with the `200` status
  - added the optional property `items/fps_reset_available_at` to the response with the `200` status
- **2026-10-12** `5f62fe19531f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sidequestvr/apis/sidequest-api/changes/v2/users/:route_users_id/worlds/get.md)

---

[API](https://skmtc.dev/sidequestvr/apis/sidequest-api.md) - [All operations](https://skmtc.dev/sidequestvr/apis/sidequest-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sidequestvr/apis/sidequest-api/revisions/015df326911c?raw)
