API reference

Custom Slime API

Create your own custom slime by choosing a color palette, equip it as your display avatar, and share it in the public gallery.

Section 01 — Authentication

API Key

All endpoints require a Bearer token. Your API key is available in the VibeMon app under Profile > Setup Guide > API Key.

authentication
# Include in every request
$ curl -H "Authorization: Bearer YOUR_API_KEY" ...

Section 02 — Create

POST/api/custom-slime

Create a new custom slime by choosing a color palette. Slimes are palette-only — the shape comes from VibeMon's built-in rig, not custom sprite art.

Request Body

namestringSlime name (1-30 chars)required
paletteobject5 required keys "1"-"5" + 3 optional keys "6"-"8", values #RRGGBBrequired
descriptionstring?Optional description (max 200 chars)
is_publicbooleanShow in public gallery (default: false)

Example

create custom slime
curl -X POST https://sirpdtcwawcidhgtltps.supabase.co/functions/v1/api/custom-slime \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "My Slime",
    "palette": {
      "1": "#1a1a2e",
      "2": "#e94560",
      "3": "#533483",
      "4": "#0f3460",
      "5": "#ffcc00"
    },
    "is_public": true
  }'
Response example
response — 201 Created
{
  "ok": true,
  "custom_slime": {
    "id": "a1b2c3d4-...",
    "name": { "en": "My Slime", "ko": "My Slime" },
    "palette_override": { "1": "#1a1a2e", ... },
    "sprites": null,
    "is_public": true,
    "like_count": 0,
    "created_at": "2026-04-14T..."
  }
}

Section 03 — Palette keys

Palette Keys

Custom slimes are palette-only — the shape is VibeMon's shared rig, not per-slime pixel art. Keys "1"–"5" are required; "6"–"8" are optional (derived automatically if omitted):

  • "1"Outline
  • "2"Highlight
  • "3"Body
  • "4"Eyes
  • "5"Blush
  • "6"Dark (optional)
  • "7"Shine (optional)
  • "8"Mouth (optional)

Default palette

palette structure
{
  "1": "#1a1a2e",   // outline — required
  "2": "#e94560",   // highlight — required
  "3": "#533483",   // body — required
  "4": "#0f3460",   // eyes — required
  "5": "#ffcc00",   // blush — required
  "6": "#0d0d1a",   // dark — optional, derived if omitted
  "7": "#f0f0ff",   // shine — optional, derived if omitted
  "8": "#1a1a2e"    // mouth — optional, derived if omitted
}
Custom sprite uploads are not supported. The API still accepts a sprites field on older clients for compatibility, but it is validated only and never stored — every custom slime renders through the same shared rig.

Section 04 — Equip & gallery

Use Your Slime

Equip as display avatar

Equipping a custom slime overrides your visual in social contexts (live feed, profile, share cards). Your garden slime continues unaffected.

equip
curl -X POST https://sirpdtcwawcidhgtltps.supabase.co/functions/v1/api/custom-slime/SLIME_ID/equip \
  -H "Authorization: Bearer YOUR_API_KEY"

Browse the gallery

Public custom slimes are available in the gallery. Cursor-based pagination.

gallery
curl "https://sirpdtcwawcidhgtltps.supabase.co/functions/v1/api/custom-slime/gallery?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

Section 05 — Endpoints

All Endpoints

POST/custom-slime

Create a custom slime

GET/custom-slime

List your custom slimes

GET/custom-slime/:id

Get one by ID

PUT/custom-slime/:id

Update (owner only)

DELETE/custom-slime/:id

Delete (owner only)

POST/custom-slime/:id/equip

Equip as display avatar

DELETE/custom-slime/equip

Unequip display avatar

GET/custom-slime/gallery

Public gallery (paginated)

POST/custom-slime/:id/like

Toggle like (public only)

Base URL: https://sirpdtcwawcidhgtltps.supabase.co/functions/v1/api

Section 06 — Limits

Rules & Limits

Free Plan

  • Up to 1 custom slime
  • +1 more per 200 XP slot purchase
  • Public gallery access
  • Like other slimes

Pro Plan

  • Up to 20 custom slimes
  • +1 more per 200 XP slot purchase
  • Public gallery access
  • Like other slimes
  • Sprites: not customizable — every custom slime shares VibeMon's built-in rig
  • Palette: 5 required keys ("1"-"5") + 3 optional keys ("6"-"8"), hex format #RRGGBB
  • Name: 1-30 characters
  • Description: optional, max 200 characters
  • Max payload: 50KB