✦ Hathor · make with the Witness

Your data

Alpha. Formats may still change; templates and schemas here are the current ones.

Formats

KindTypesMaxTemplate
imageimage/jpeg, image/png, image/webp25 MB
texttext/plain, text/markdown2 MB
geojsonapplication/geo+json, application/json20 MBmap-territories.geojson · schema
csvtext/csv5 MBmap-route.csv
assetsapplication/json2 MBassets.json · schema
audioaudio/mpeg, audio/ogg, audio/wav, audio/x-wav, audio/flac100 MB
videovideo/mp4, video/webm2 GB

Every upload needs a licence: mine, cc0, public-domain, cc-by, cc-by-sa, permission, private-use-only. Up to 10 GB a day per visitor. Your files are used for your jobs only — nothing enters our public library unless you choose a licence we can accept and opt in.

Maps

GeoJSON FeatureCollection; each feature needs properties.name and properties.fromYear (negative = BC), optional toYear. Or a CSV route with columns place,lat,lon,year.

Asset packs

Upload the images first, then an assets.json listing each file with type (character, object, background, symbol, scene), people, era, region, licence and tags.

Film plans

film-plan.json — the same shape your own LLM returns (see Add your own API).

API

Jobs: job.schema.json. Check a file before uploading: POST /video-studio/api/validate {"kind":"geojson","data":"…"}.

curl -X POST https://hathor.soapbox.community/video-studio/api/keys -H 'content-type: application/json' -d '{"voter":"<your 16+ char visitor key>"}'
# → {"ok":true,"key":"vsk_…"}   (shown once — keep it)

curl -X PUT "https://hathor.soapbox.community/video-studio/api/uploads?kind=csv&licence=mine" -H "Authorization: Bearer vsk_…" -H 'content-type: text/csv' --data-binary @map-route.csv
# → {"ok":true,"id":"…","url":"/video-studio/u/…"}

curl -X POST https://hathor.soapbox.community/video-studio/api/jobs -H "Authorization: Bearer vsk_…" -H 'content-type: application/json' \
  -d '{"tool":"animate","params":{"title":"My gallery","secs":8},"inputs":["<upload id>","<upload id>"],"public":false}'
# → {"ok":true,"id":"…"}  then  POST https://hathor.soapbox.community/video-studio/api/jobs/<id>/render  and poll GET https://hathor.soapbox.community/video-studio/api/jobs/<id>