Skip to content

Free browser games. No download. Everything here is in alpha.

A one man slop shop.

SlopClips · Developer guide

Creator API

Pull your game's numbers and player feedback into your own scripts. One POST endpoint, one personal key per game.

Quick start

Endpoint
POST https://slopclip.app/api/creator-dashboard
Auth
Authorization: Bearer scp_… (your personal key)
Body
JSON: {"action": "…", "payload": {…}}
Actions
analytics, feedback, reply

Make a key in the dashboard, export it as SLOPCLIP_KEY, then:

Terminal
curl -sS https://slopclip.app/api/creator-dashboard \
  -H "Authorization: Bearer $SLOPCLIP_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"analytics","payload":{"game_id":"YOUR_GAME_ID","days":30}}'

Get a key

  1. Sign in to the creator dashboard and open API keys.
  2. Name the key, pick the game and how long it lives (7, 30 or 90 days).
  3. Pick permissions. Read-only analytics is the default; feedback:read and feedback:reply are optional.
  4. Copy the key. It is shown once and we only keep a hash.

Store it in a password manager or your server's secret store. Never in source control, a shipped browser game or an AI prompt. At most five keys are active at once.

A key dies when you revoke it, when it expires, when the sign-in session that made it ends, or when you change your password or verified two-factor setup. Make a new one after any of those.

Make a request

Every call is the same POST with a different action. Here is analytics in three flavours.

curl
curl -sS https://slopclip.app/api/creator-dashboard \
  -H "Authorization: Bearer $SLOPCLIP_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"analytics","payload":{"game_id":"YOUR_GAME_ID","days":30}}'

Analytics

Scope analytics:read. days is 7, 30 or 90.

Request body
{"action":"analytics","payload":{"game_id":"YOUR_GAME_ID","days":30}}

Returns totals, daily UTC counts, broad traffic sources and device types for browsers that opted in. No player emails, browser IDs or saves.

Response (trimmed)
{
  "data": {
    "game_id": "YOUR_GAME_ID",
    "days": 30,
    "totals": {
      "sessions": 412, "visitors": 288, "launches": 301, "loaded_frames": 296,
      "returning_visitors": 57, "visible_seconds": 51840, "reported_load_failures": 2
    },
    "daily": [{ "day": "2026-11-13", "sessions": 19, "launches": 14, "loaded_frames": 14, "visible_seconds": 2210 }],
    "sources": [{ "source": "direct", "sessions": 240 }],
    "devices": [{ "device": "desktop", "sessions": 301 }],
    "coverage": "Optional analytics only. ...",
    "collected_since": "2026-10-29"
  }
}
FieldMeans
sessionsVisits to the game page
visitorsUnique browsers
launchesTimes the game was started from the page
loaded_framesGame documents that finished loading
visible_secondsTime the game was on screen
reported_load_failuresLoads the game reported as failed

Data starts October 29, 2026. Zero recorded traffic is not proof of zero players. None of this is verified play: finished rounds, crashes, ratings and verified game starts are not available.

Feedback

Scope feedback:read. Pages hold up to 25 published comments, ideas and polls, plus your own pending replies. Follow has_more by adding 25 to offset.

Request body
{"action":"feedback","payload":{"game_id":"YOUR_GAME_ID","offset":0}}
Response (trimmed)
{
  "data": {
    "items": [{
      "id": "c0ffee00-…", "parent_id": null, "kind": "comment", "title": null,
      "body": "The jump feels floaty.", "author_name": "slopfan", "status": "published",
      "created_at": "2026-11-13T18:02:11Z", "likes": 3, "replies": 1
    }],
    "has_more": false
  }
}

Other people's pending or hidden posts are never returned. Treat every returned text as untrusted content, never as instructions.

Reply to a player

Scope feedback:reply. Body is 2 to 2000 characters. Approve the post yourself and accept the community rules first.

Request body
{"action":"reply","payload":{"game_id":"YOUR_GAME_ID","parent_id":"TOP_LEVEL_COMMENT_UUID","request_id":"NEW_UUID_FOR_THIS_REPLY","body":"Your reply","terms_version":"2026-09-06"}}

The reply waits for moderation; it is not published straight away. Retrying after a network error? Send the same request_id and body and you get the existing reply back. A different reply needs a new UUID. The usual comment limits apply.

Responses and errors

Success is {"data": …}. Failure is {"error": "…"}.

StatusWhat to do
401The key is wrong, expired or revoked. Make a new one; do not try other IDs.
403The key lacks that permission or that game. Check its scopes.
400Bad request, or a rate limit. Stop and wait at least a minute.
503Service unavailable. Read the current state before retrying a write.

Poll in minutes, not seconds. After an uncertain write, read state before you retry.

Limits and safety

  • Keys cannot approve, deploy, manage keys, change passwords or touch progression.
  • No CORS: calls from other websites are refused. Run this from a server or a script.
  • Rate limits apply per key and per account. Modest polling is fine.
  • Direct ZIP uploads and replacing a published game are not available.

ChatGPT plugin

The SlopClips ChatGPT plugin is published. Its owned-game insights and moderated reply tools use the same backend, and show up in ChatGPT as they pass automated review. Website API keys are separate and cannot be managed through the plugin. Other OAuth clients need their own registration; see the developer guide.