🎮 MeesaJarJar Asset Library every approved upload, searchable

Uploads land here automatically once committed — no review gate. New arrivals show as untested until the AI test pass (or admin check) fills in full captions. Drop your own files at ingest.html.

📡 API — upload, catalog & download programmatically

Base: https://meesajarjar.com/. Uploads are chunked (4MB); manifests are JSON. Everything below works with curl, Python, or any AI agent. Bulk agents: add your admin token (from ingest_store/.admin_token over FTP) as the token upload field to skip the 20/hour IP rate limit.

1 · Search (public, no key)

curl "https://meesajarjar.com/ingest-search.php?q=tavern+wood&type=prop&limit=24&offset=0"
# type: image | audio | video | model3d | archive | other — plus category= and tag= filters

2 · Download (public for approved rows)

curl -OJ "https://meesajarjar.com/ingest-get.php?sha256=<sha256>"

3 · Upload a file (chunked)

ID=$(openssl rand -hex 12)   # 24 lowercase hex chars
split -b 4M "$FILE" /tmp/chunk_      # or any 4MB splitter
i=0; N=$(ls /tmp/chunk_* | wc -l)
for c in /tmp/chunk_*; do
  curl -s -X POST https://meesajarjar.com/ingest-upload.php \
    -F upload_id=$ID -F index=$i -F total=$N -F chunk=@$c -F token=$ADMIN_TOKEN
  i=$((i+1))
done
SHA=$(sha256sum "$FILE" | cut -d' ' -f1)

4 · Optional: AI-catalog it before commit (same analyzer the page uses)

curl -s -X POST https://meesajarjar.com/ingest-analyze.php \
  -H 'Content-Type: application/json' \
  -d '{"kind":"image","image":"data:image/jpeg;base64,...(≤768px)","context":{"filename":"cabinet.png"}}'
# → {"ok":true,"title":"…","category":"prop","tags":[…],"description":"…","notes":"…"}

5 · Commit (required fields per type + title + category)

typemanifest must include
imagewidth, height, caption, phash (64 hex, zeros ok for agents)
audioduration, sampleRate, loudness, transcript ("", ok) + speechy (bool)
videoduration, width, height, poster (dataURL ok), transcript + speechy
model3dtriangles, materials, caption
archivechildren[]
othernote
curl -s -X POST https://meesajarjar.com/ingest-commit.php \
  -H 'Content-Type: application/json' \
  -d "{\"manifest\":{\"type\":\"image\",\"width\":1024,\"height\":1024,\"caption\":\"…\",\"phash\":\"000…0\",\"title\":\"Rusty cabinet\",\"category\":\"prop\",\"tags\":[\"wooden\"],\"license\":\"\",\"notes\":\"\"},\"sha256\":\"$SHA\",\"upload_id\":\"$ID\"}"
# → {"ok":true,"status":"approved",...} — untested until the AI test pass runs

6 · Admin: untested list + on-demand AI test

curl "https://meesajarjar.com/ingest-review.php?action=untested&token=$ADMIN_TOKEN"
curl -s -X POST https://meesajarjar.com/ingest-review.php \
  -F action=test -F sha256=$SHA [-F token=$ADMIN_TOKEN]
# token optional for test (public quota: 10/hour/IP); with token the quota is skipped.
# test fills title/category/tags/caption server-side and flips tested=true (one sha per call — free models are slow)
# fix fields without AI (token required):
curl -s -X POST https://meesajarjar.com/ingest-review.php \
  -F token=$ADMIN_TOKEN -F action=update -F sha256=$SHA -F title="Better title" -F tags="wooden,tavern"