WebSim API

v1.0.1

Access WebSim's REST API to retrieve user profiles, projects, comments, trending feeds, social graphs, and search public project assets.

0· 270·0 current·0 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (read public profiles, projects, comments, trending, search) align with the endpoints listed in SKILL.md. No unrelated capabilities (cloud access, filesystem access, or extraneous credentials) are requested.
Instruction Scope
SKILL.md defines only API endpoints under the base URL https://websim.com and directs using GET endpoints for reads and one POST for comments. This stays within the stated purpose. Note: the post_comment endpoint shows an Authorization header template (Bearer {token}), so the skill expects an auth token when creating comments; the skill does not itself declare how that token is supplied (see environment_proportionality). No instructions in the visible content instruct the agent to read arbitrary local files or transmit data to third-party endpoints beyond the declared base_url.
Install Mechanism
There is no install spec and no code files — this is instruction-only, so nothing is written to disk or installed by the skill.
Credentials
The skill declares no required environment variables or primary credential, which is reasonable for read-only public endpoints. However, post_comment requires an Authorization: Bearer {token} header; SKILL.md does not declare a primaryEnv or required env var for that token. This is not necessarily malicious (the token can be provided interactively at runtime), but it's a small inconsistency worth noting: the skill expects an auth token for write operations but doesn't declare how the agent should obtain/store it.
Persistence & Privilege
always is false and the skill has no install or system persistence. The skill does not request system-wide config changes or access to other skills' credentials.
Assessment
This skill is an instruction-only adapter for WebSim's public API and appears coherent. Before using it: (1) verify the domain (https://websim.com) and that you trust the skill source, since the package lists no homepage or publisher information; (2) if you plan to post comments, the skill will need your WebSim auth token — provide it only when you trust the skill and avoid reusing high-privilege tokens (use limited-scope or revocable tokens if possible); (3) because the skill can be invoked by the agent, be cautious about giving persistent credentials to an unfamiliar skill; otherwise, read-only queries are low-risk.

Like a lobster shell, security has layers — review code before you run it.

latestvk97b05wrx9zsphj7hmfk1zcd2x82bjqnwebsimvk97b05wrx9zsphj7hmfk1zcd2x82bjqn
270downloads
0stars
2versions
Updated 1mo ago
v1.0.1
MIT-0
---
name: websim-api
description: Access WebSim's public REST API to retrieve users, projects, comments, trending feeds, social graphs, and searchable assets. Supports reading platform data for discovery, analysis, and community interaction. WebSim is a popular platform for AI generated websites, with a community similar to Scratch.
author: upintheairsheep
version: 1.0.1
base_url: https://websim.com
endpoints:

  - name: get_user
    url: /api/v1/users/{username}
    method: GET
    description: Retrieve detailed profile information for a specific WebSim user.
    params:
      - name: username
        type: string
        in: path
        description: The exact WebSim username (case-sensitive).
        required: true

  - name: get_user_projects
    url: /api/v1/users/{username}/projects
    method: GET
    description: Get a paginated list of projects created by a specific user.
    params:
      - name: username
        type: string
        in: path
        description: The exact WebSim username.
        required: true
      - name: first
        type: integer
        in: query
        description: Number of projects to return per page (default 10).
        required: false
      - name: posted
        type: boolean
        in: query
        description: Filter to only posted/published projects when true.
        required: false
      - name: after
        type: string
        in: query
        description: Cursor string for fetching the next page of results.
        required: false

  - name: get_project
    url: /api/v1/projects/{id}
    method: GET
    description: Retrieve complete information about a single project including its current revision, site data, and metadata.
    params:
      - name: id
        type: string
        in: path
        description: The project ID (alphanumeric slug, e.g. "n9gw5x7w6rlcl48m2aks").
        required: true

  - name: get_project_comments
    url: /api/v1/projects/{id}/comments
    method: GET
    description: Fetch comments on a project with pagination and sorting.
    params:
      - name: id
        type: string
        in: path
        description: The project ID.
        required: true
      - name: sort_by
        type: string
        in: query
        description: "Sort order for comments. Known values: 'best', 'newest', 'oldest'."
        required: false
      - name: first
        type: integer
        in: query
        description: Number of comments to return per page (default 20).
        required: false
      - name: after
        type: string
        in: query
        description: Cursor string for pagination.
        required: false

  - name: post_comment
    url: /api/v1/projects/{id}/comments
    method: POST
    description: Create a new comment on a project. Requires authentication.
    params:
      - name: id
        type: string
        in: path
        description: The project ID to comment on.
        required: true
      - name: content
        type: string
        in: body
        description: The text content of the comment.
        required: true
      - name: parent_comment_id
        type: string
        in: body
        description: ID of the comment to reply to. Set to null for a top-level comment.
        required: false
    headers:
      - name: Authorization
        value: "Bearer {token}"
        description: User authentication token. Required.
      - name: Content-Type
        value: application/json

  - name: get_trending
    url: /api/v1/feed/trending
    method: GET
    description: Get trending projects and sites with various sorting options.
    params:
      - name: feed
        type: string
        in: query
        description: "Feed type. Known values: 'hot', 'new', 'top'."
        required: false
      - name: limit
        type: integer
        in: query
        description: Number of items to return (default 12).
        required: false
      - name: range
        type: string
        in: query
        description: "Time range filter. Known values: 'day', 'week', 'month', 'all'."
        required: false

  - name: get_user_following
    url: /api/v1/users/{username}/following
    method: GET
    description: Get the list of users that a specific user is following.
    params:
      - name: username
        type: string
        in: path
        description: The exact WebSim username.
        required: true
      - name: first
        type: integer
        in: query
        description: Number of results per page (default 50).
        required: false
      - name: after
        type: string
        in: query
        description: Cursor string for pagination.
        required: false

  - name: search_assets
    url: /api/v1/search/assets
    method: GET
    description: Search uploaded assets (images, audio, models) across all public projects.
    params:
      - name: q
        type: string
        in: query
        description: Search query string (matched against filenames and metadata).
        required: true
      - name: limit
        type: integer
        in: query
        description: Maximum number of results to return (default 20).
        required: false
      - name: offset
        type: integer
        in: query
        description: Offset for pagination (default 0).
        required: false
      - name: mime_type_prefix
        type: string
        in: query
        description: "Filter by MIME type prefix, e.g. 'image', 'audio', 'video', 'model'."
        required: false
---

WebSim API — Agent Instructions

Use this skill whenever a user asks about WebSim projects, users, trending content, community comments, or uploaded assets. All endpoints are read-only except post_comment, which requires authentication.


General Rules

  1. Base URL: All endpoints are relative to https://websim.com. Always prepend this to every path.
  2. No Authentication Required for all GET endpoints. Only POST /api/v1/projects/{id}/comments requires a Bearer token.
  3. Pagination: Many endpoints use cursor-based pagination. Look for a cursor field in each result item and pass it as the after query parameter to fetch the next page.
  4. Rate Limiting: Be respectful. Do not fire rapid sequential requests. One request at a time is sufficient.

Endpoint Usage Guide

1. Look Up a User — get_user

When to use: The user asks "who is [username] on WebSim?", "does this user exist?", or "show me their profile."

Request:

GET https://websim.com/api/v1/users/{username}

Key response fields:

FieldTypeMeaning
idstring (UUID)Unique user identifier
usernamestringDisplay username
avatar_urlstringURL to user's profile image
is_adminbooleanWhether the user is a WebSim admin
created_atISO 8601Account creation date
discord_usernamestring or nullLinked Discord handle

Example:

GET https://websim.com/api/v1/users/sean

2. Browse a User's Projects — get_user_projects

When to use: The user asks "what has [username] built?", "show me their projects", or "find projects by [username]."

Request:

GET https://websim.com/api/v1/users/{username}/projects?first=10&posted=true

Key response fields (each item in the array):

Field PathTypeMeaning
project.idstringProject identifier (use for other endpoints)
project.titlestringHuman-readable project title
project.slugstringURL-safe project slug
project.stats.viewsintegerTotal view count
project.stats.likesintegerTotal like count
project.stats.commentsintegerTotal comment count
project.visibilitystring"public" or "private"
project.postedbooleanWhether the project has been published
project.descriptionstring or nullAuthor-written description
project.generated_descriptionstring or nullAI-generated description
project.domainsarrayCustom domains (e.g. "emoji-merger.on.websim.ai")
project.current_versionintegerLatest version number
site.link_urlstringRelative public URL (prepend base_url to open)
site.modelstringAI model used (e.g. "gemini-3-pro", "gpt-5")
site.prompt.textstringThe last prompt used to generate/edit the project
cursorstringPagination cursor — pass as after for next page

Pagination: If the array length equals your first value, there may be more pages. Take the cursor from the last item and pass it as ?after={cursor}.


3. Get Project Details — get_project

When to use: The user gives you a specific project ID and asks for details, or you need full metadata on a single project.

Request:

GET https://websim.com/api/v1/projects/{id}

Key response fields:

Field PathTypeMeaning
project.titlestringProject title
project.created_by.usernamestringCreator's username
project.statsobject{ views, likes, comments }
project.parent_idstring or nullIf remixed, the original project ID
project_revision.versionintegerCurrent version number
project_revision.current_screenshot_urlstringURL to a screenshot of the current version
site.modelstringAI model used
site.prompt.textstringGeneration prompt
site.link_urlstringRelative link to view the project
site.yappingstringThe AI's internal reasoning/thinking log

Constructing a viewable URL:

https://websim.com{site.link_url}

For example: https://websim.com/p/n9gw5x7w6rlcl48m2aks


4. Read Project Comments — get_project_comments

When to use: The user asks "what are people saying about this project?", "show me comments", or "read the feedback."

Request:

GET https://websim.com/api/v1/projects/{id}/comments?sort_by=best&first=20

Key response fields (each item in the array):

Field PathTypeMeaning
comment.idstring (UUID)Comment identifier
comment.raw_contentstringPlain text content of the comment
comment.contentobjectRich text document structure (has children with type and text)
comment.author.usernamestringCommenter's username
comment.author.avatar_urlstringCommenter's avatar
comment.created_atISO 8601When the comment was posted
comment.reply_countintegerNumber of replies to this comment
comment.parent_comment_idstring or nullnull if top-level; otherwise the parent comment ID
comment.reactionsarrayEmoji reactions with emoji.name and user_ids
comment.pinnedbooleanWhether the comment is pinned
comment.card_dataobject or nullSpecial data (e.g. tip comments with credits_spent)

Reading comment text: Use comment.raw_content for plain text. The comment.content field contains a structured document — iterate content.children[].children[].text to extract text segments.


5. Post a Comment — post_comment

When to use: The user explicitly asks you to leave a comment on a project. Requires authentication.

Request:

POST https://websim.com/api/v1/projects/{id}/comments
Content-Type: application/json
Authorization: Bearer {token}

{
  "content": "Great project!",
  "parent_comment_id": null
}

Set parent_comment_id to a comment ID string to reply to a specific comment, or null for a top-level comment.

⚠️ Only use this when the user explicitly requests it. Never post comments autonomously.


6. Discover Trending Projects — get_trending

When to use: The user asks "what's popular on WebSim?", "show me trending projects", or "what's new?"

Request:

GET https://websim.com/api/v1/feed/trending?feed=hot&limit=12&range=week

Key response fields (each item in the feed.data array):

Field PathTypeMeaning
site.titlestringProject/site title
project.titlestringProject title
project.idstringProject ID (for deeper lookup)
project.created_by.usernamestringCreator
viewsintegerView count in the time range
likesintegerLike count
active_playersintegerCurrent multiplayer player count

Feed types:

  • hot — Currently popular (engagement-weighted)
  • new — Most recently published
  • top — Highest overall stats

Range values: day, week, month, all


7. View a User's Social Graph — get_user_following

When to use: The user asks "who does [username] follow?" or "show me their connections."

Request:

GET https://websim.com/api/v1/users/{username}/following?first=50

Key response fields (each item in the following.data array):

Field PathTypeMeaning
follow.user.usernamestringUsername of the followed account
follow.user.avatar_urlstringTheir avatar
follow.user.is_adminbooleanWhether they're an admin
follow.created_atISO 8601When the follow relationship began

8. Search for Assets — search_assets

When to use: The user asks "find me images of X", "search for audio files", "find assets for my project", or any asset discovery request.

Request:

GET https://websim.com/api/v1/search/assets?q={query}&limit=20

Optional filters:

  • mime_type_prefix=image — Only images (PNG, JPEG, WebP, etc.)
  • mime_type_prefix=audio — Only audio files (MP3, WAV, etc.)
  • mime_type_prefix=video — Only video files
  • mime_type_prefix=model — Only 3D models

Key response fields (each item in the data array):

FieldTypeMeaning
idstring (UUID)Asset identifier
asset_urlstringDirect download URL for the asset
content_typestringFull MIME type (e.g. "image/png", "audio/mpeg")
filenamestringOriginal filename
project_idstringThe project this asset belongs to
created_atISO 8601Upload date
scoreintegerRelevance score (higher = better match)

Pagination: Use offset and limit. Check meta.offset and meta.limit in the response to calculate the next page:

next_offset = meta.offset + meta.limit

The asset URL is directly usable. For example (an image of a retro-Roblox-themed white bunny rabbit):

https://project-assets.websim.com/0196c3b6-c5fc-7bbf-b59b-a53857ec2fa8

Output Formatting Guidelines

Present your findings in a clear, structured, and user-friendly manner:

  • User lookups: Show username, avatar (as a link or image), join date, and admin status.
  • Project lists: Use a numbered or bulleted list with title, view/like counts, and a direct link (https://websim.com/p/{project_id}).
  • Comments: Quote the comment text, attribute the author, and note any reactions or reply counts.
  • Trending: Present as a ranked list with title, creator, and engagement stats.
  • Assets: Show filename, type (image/audio/etc.), a direct link to the asset, and which project it came from.
  • Pagination: If more results are available, inform the user and offer to fetch the next page.

Common Patterns

Constructing project URLs:

View:       https://websim.com/p/{project_id}
Versioned:  https://websim.com/p/{project_id}/{version}

Constructing user profile URLs:

https://websim.com/@{username}

Chaining requests: To give a full picture of a user's work, you may:

  1. Call get_user to confirm they exist and get profile data.
  2. Call get_user_projects to list their published work.
  3. Call get_project on a specific project for deep details.
  4. Call get_project_comments to read community feedback.

Comments

Loading comments...