{"id":50113648,"url":"https://github.com/shotstack/shotstack-cli","last_synced_at":"2026-05-23T13:36:20.166Z","repository":{"id":356525531,"uuid":"1224216163","full_name":"shotstack/shotstack-cli","owner":"shotstack","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-08T12:40:30.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-23T13:36:18.867Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shotstack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-29T04:19:20.000Z","updated_at":"2026-05-08T12:40:31.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shotstack/shotstack-cli","commit_stats":null,"previous_names":["shotstack/shotstack-cli"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/shotstack/shotstack-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shotstack%2Fshotstack-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shotstack%2Fshotstack-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shotstack%2Fshotstack-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shotstack%2Fshotstack-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shotstack","download_url":"https://codeload.github.com/shotstack/shotstack-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shotstack%2Fshotstack-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33398390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-23T13:36:17.960Z","updated_at":"2026-05-23T13:36:20.158Z","avatar_url":"https://github.com/shotstack.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shotstack CLI\n\nCommand-line interface for the [Shotstack](https://shotstack.io) video rendering API. Built for humans and AI agents.\n\n```sh\nshotstack render template.json\nshotstack status \u003crender-id\u003e --watch\n```\n\n## Install\n\n```sh\n# npm (global)\nnpm i -g @shotstack/cli\n\n# one-shot via npx\nnpx @shotstack/cli render template.json\n\n# one-shot via bun\nbunx @shotstack/cli render template.json\n```\n\nAll three install paths use the same `@shotstack/cli` package on npm.\n\n## Authentication\n\nSet your API key as an environment variable:\n\n```sh\nexport SHOTSTACK_API_KEY=...\n```\n\nGet a key at \u003chttps://shotstack.io\u003e.\n\n## Environments\n\nPick the API environment with `--env` or `SHOTSTACK_ENV`. Defaults to `v1` (production).\n\n| `--env` | Endpoint |\n|---|---|\n| `stage` | `https://api.shotstack.io/edit/stage` |\n| `v1` (default) | `https://api.shotstack.io/edit/v1` |\n\n```sh\nshotstack render template.json --env stage\nSHOTSTACK_ENV=stage shotstack render template.json\n```\n\n## Commands\n\n### `shotstack render \u003cfile\u003e`\n\nSubmits a Shotstack Edit JSON to the render API. Returns a render ID. With `--watch`, polls until the render reaches a terminal state and prints the output URL — equivalent to `render` followed by `status --watch` but in one command.\n\n```sh\nshotstack render my-template.json\nshotstack render my-template.json --output json\nshotstack render my-template.json --watch              # submit + poll until done\nshotstack render my-template.json --watch --output json\n```\n\n### `shotstack status \u003cid\u003e`\n\nPolls the render status. Use `--watch` to poll continuously until the render completes.\n\n```sh\nshotstack status 01ja7-x8m2k-...\nshotstack status 01ja7-x8m2k-... --watch\nshotstack status 01ja7-x8m2k-... --output json\n```\n\n### `shotstack studio \u003cfile\u003e`\n\nOpens a `shotstack.studio` URL that loads the Edit JSON in the browser-based editor. By default, posts the JSON to the share API and emits a short URL like `https://shotstack.studio/s/abc12345` — clean, shareable, expires in 30 days. Falls back to inline base64url encoding if the share API is unreachable.\n\nNo render API key required; no render credits charged. Use to hand a generated edit off to a human for review or quick tweaks before rendering.\n\n```sh\nshotstack studio my-template.json\n# → opens browser silently with https://shotstack.studio/s/\u003cslug\u003e\n\nshotstack studio my-template.json --copy        # also copies URL to clipboard\nshotstack studio my-template.json --no-open     # print URL, don't open browser\nshotstack studio my-template.json --no-shorten  # emit base64url inline (offline / debug)\nshotstack studio my-template.json --output json # emit {\"url\":\"...\",\"shortened\":true} on stdout\n```\n\nWhen a browser can be launched, the command is silent — the URL only opens in the browser. On a headless server (no `$DISPLAY`, no `xdg-open`), the URL is printed to stdout instead so you can copy it elsewhere.\n\n### `shotstack feedback`\n\nOpens a pre-filled GitHub issue with a sanitised dossier of your last 5 CLI invocations (render IDs, errors, exit codes). API keys and signed URLs are stripped at write time. You review and submit in your browser; nothing is transmitted automatically. Inspect the log at `~/.shotstack/log.jsonl`.\n\n## Output\n\nDefault is human-readable. Pass `--output json` for machine-readable output. Exit codes:\n\n- `0` success\n- `1` permanent error (4xx, validation, missing API key)\n- `2` transient/retryable error (5xx, network)\n\n## For AI agents\n\nThis repo ships a [`SKILL.md`](./SKILL.md) at the root, following the [Agent Skills open standard](https://agentskills.io). Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and 50+ other agents.\n\n```sh\nnpx skills add shotstack/shotstack-cli\n```\n\nThe skill loads at session start (~50-100 tokens metadata) and teaches the agent three things `--help` doesn't:\n\n- Always pass `--output json` when piping\n- Use `shotstack status --watch` instead of writing a polling loop\n- Fetch the current timeline schema from \u003chttps://shotstack.io/docs/llms.txt\u003e before submitting\n\n## Telemetry\n\nEvery API request includes two headers so we can split CLI traffic in dashboards:\n\n- `x-shotstack-origin: cli`\n- `x-shotstack-environment: stage | v1`\n\nNo other data is sent. The CLI never phones home; it only talks to the Shotstack API.\n\n## Licence\n\nApache 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshotstack%2Fshotstack-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshotstack%2Fshotstack-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshotstack%2Fshotstack-cli/lists"}