Skip to content

SDK, CLI, and REST

Every WorldJen capability is exposed three ways: a REST endpoint, a Python SDK function, and a CLI subcommand. This page lists them side by side so you can pick the surface that fits your workflow.

For per-surface narrative, see Python SDK, CLI, and the REST API.

Score

Get the user's Score session

sh
curl -H "X-API-Key: $WORLDJEN_API_KEY" https://api.worldjen.com/api/v1/score
python
import worldjen
worldjen.score.get_or_create()
sh
worldjen score get

Reset the Score session

sh
curl -X POST -H "X-API-Key: $WORLDJEN_API_KEY" https://api.worldjen.com/api/v1/score/reset
python
worldjen.score.reset()
sh
worldjen score reset

Upload and score a clip

sh
# 1. Fetch upload URL
curl -X POST https://api.worldjen.com/api/v1/score/$RUN_ID/videos/upload-url \
  -H "X-API-Key: $WORLDJEN_API_KEY" \
  -d '{"fileName":"clip.mp4","contentType":"video/mp4","prompt":"a cat"}'

# 2. PUT the file to the returned uploadUrl
curl -X PUT --data-binary @clip.mp4 -H "Content-Type: video/mp4" "$UPLOAD_URL"

# 3. Confirm
curl -X POST https://api.worldjen.com/api/v1/score/$RUN_ID/videos/confirm-upload \
  -H "X-API-Key: $WORLDJEN_API_KEY" -d '{"videoId":"VID"}'
python
worldjen.score.upload("clip.mp4", prompt="a cat", wait=True)
sh
worldjen score upload clip.mp4 --prompt "a cat" --wait

Rank

Get the user's Rank session

sh
curl -H "X-API-Key: $WORLDJEN_API_KEY" https://api.worldjen.com/api/v1/rank
python
worldjen.rank.get_or_create()
sh
worldjen rank get

Reset the Rank session

sh
curl -X POST -H "X-API-Key: $WORLDJEN_API_KEY" https://api.worldjen.com/api/v1/rank/reset
python
worldjen.rank.reset()
sh
worldjen rank reset

Upload a candidate

prompt is optional once the session is locked. Passing a different prompt produces a 400 with code: "RANK_PROMPT_MISMATCH". See Rank prompt lock.

sh
curl -X POST https://api.worldjen.com/api/v1/rank/$RUN_ID/videos/upload-url \
  -H "X-API-Key: $WORLDJEN_API_KEY" \
  -d '{"fileName":"variant_a.mp4","contentType":"video/mp4","prompt":"a cat"}'
python
worldjen.rank.upload("variant_a.mp4", prompt="a cat", wait=True)
sh
worldjen rank upload variant_a.mp4 --prompt "a cat" --wait

Get the leaderboard

sh
curl -H "X-API-Key: $WORLDJEN_API_KEY" https://api.worldjen.com/api/v1/rank/$RUN_ID/ranked
python
worldjen.rank.get_ranked(run_id)
sh
worldjen rank current

Bench

Create a Bench run

sh
curl -X POST https://api.worldjen.com/api/v1/bench \
  -H "X-API-Key: $WORLDJEN_API_KEY" \
  -d '{"name":"n","dimensions":["aesthetic_quality"],"runner_id":"R","model_id":"M"}'
python
worldjen.bench.create(
    name="n",
    model_id="M",
    dimensions=["aesthetic_quality"],
    runner_id="R",
)
sh
worldjen bench create --name n --dimensions aesthetic_quality --runner-id R --model-id M

List Bench runs

sh
curl -H "X-API-Key: $WORLDJEN_API_KEY" "https://api.worldjen.com/api/v1/bench?page=1&limit=50"
python
worldjen.bench.list()
sh
worldjen bench list

Bench resource helpers

OperationcurlSDKCLI
GetGET /api/v1/bench/{id}worldjen.bench.get(id)worldjen bench get ID
CancelPOST /api/v1/bench/{id}/cancelworldjen.bench.cancel(id)worldjen bench cancel ID
DeleteDELETE /api/v1/bench/{id}worldjen.bench.delete(id)worldjen bench delete ID
VideosGET /api/v1/bench/{id}/videosworldjen.bench.videos(id)worldjen bench videos ID
CSVGET /api/v1/bench/{id}/csvworldjen.bench.csv(id)worldjen bench csv ID -o results.csv
LogsGET /api/v1/bench/{id}/logsworldjen.bench.logs(id)worldjen bench logs ID

Run a pipeline in-process

python
worldjen.bench.run_with_pipeline(
    my_pipeline,
    dimensions=["subject_consistency"],
    run_name="ltx2-motion-check",
    model_id="MODEL_ID",
)

No CLI equivalent — Python callables don't survive shell arguments. Use Bench's create flow plus a registered runner instead.

Parity matrix

Every capability across curl, Python SDK, CLI, and the auto-generated browser SDK.

CapabilitycurlPython SDKCLIBrowser SDK
Get Score sessionGET /api/v1/scoreworldjen.score.get_or_create()worldjen score getgetScoreSession()
Reset Score sessionPOST /api/v1/score/resetworldjen.score.reset()worldjen score resetresetScoreSession()
Score uploadPOST /api/v1/score/{id}/videos/{upload-url,confirm-upload}worldjen.score.upload(file, ...)worldjen score upload FILEuploadScore(file)
Get Rank sessionGET /api/v1/rankworldjen.rank.get_or_create()worldjen rank getgetRankSession()
Reset Rank sessionPOST /api/v1/rank/resetworldjen.rank.reset()worldjen rank resetresetRankSession()
Rank uploadPOST /api/v1/rank/{id}/videos/{upload-url,confirm-upload}worldjen.rank.upload(file, ...)worldjen rank upload FILEuploadRank(file)
Rank leaderboardGET /api/v1/rank/{id}/rankedworldjen.rank.get_ranked(id)worldjen rank currentgetRanked(id)
Create Bench runPOST /api/v1/benchworldjen.bench.create(...)worldjen bench create ...createBench(...)
List Bench runsGET /api/v1/benchworldjen.bench.list(...)worldjen bench listlistBench()
Get Bench runGET /api/v1/bench/{id}worldjen.bench.get(id)worldjen bench get IDgetBench(id)
Cancel Bench runPOST /api/v1/bench/{id}/cancelworldjen.bench.cancel(id)worldjen bench cancel IDcancelBench(id)
Delete Bench runDELETE /api/v1/bench/{id}worldjen.bench.delete(id)worldjen bench delete IDdeleteBench(id)
Bench videosGET /api/v1/bench/{id}/videosworldjen.bench.videos(id)worldjen bench videos IDbenchVideos(id)
Bench CSVGET /api/v1/bench/{id}/csvworldjen.bench.csv(id)worldjen bench csv IDbenchCsv(id)
Bench logsGET /api/v1/bench/{id}/logsworldjen.bench.logs(id)worldjen bench logs IDbenchLogs(id)
Pipeline runnot exposedworldjen.bench.run_with_pipeline(...)not exposed (Python callable)not exposed

Browser SDK function names follow @hey-api/openapi-ts generated from server/openapi.json; consult the generated client for the exact module path.