Catalog PyPI
Back to packageRELEASE DETAILS

2026.3.17.0

PyPI

acedata-sora-cli

CLI tool for Sora AI Video Generation via AceDataCloud API

acedataaiclicommand-linegenerationsoravideo
Published17 Mar 2026
Direct dependencies15
Transitive dependenciesNot calculated

README

Version 2026.3.17.0 documentation

Sora CLI

PyPI version PyPI downloads Python 3.10+ License: MIT CI

A command-line tool for AI video generation using Sora through the AceDataCloud API.

Generate AI videos directly from your terminal — no MCP client required.

Features

  • Video Generation — Generate videos from text prompts with multiple models
  • Image-to-Video — Create videos from reference images
  • Multiple Models — sora-2, sora-2-pro
  • Task Management — Query tasks, batch query, wait with polling
  • Rich Output — Beautiful terminal tables and panels via Rich
  • JSON Mode — Machine-readable output with --json for piping

Quick Start

1. Get API Token

Get your API token from AceDataCloud Platform:

  1. Sign up or log in
  2. Navigate to the Sora API page
  3. Click "Acquire" to get your token

2. Install

# Install with pip
pip install acedata-sora-cli

# Or with uv (recommended)
uv pip install acedata-sora-cli

# Or from source
git clone https://github.com/AceDataCloud/SoraCli.git
cd SoraCli
pip install -e .

3. Configure

# Set your API token
export ACEDATACLOUD_API_TOKEN=your_token_here

# Or use .env file
cp .env.example .env
# Edit .env with your token

4. Use

# Generate a video
sora generate "A test video"

# Generate from reference image
sora image-to-video "Animate this scene" -i https://example.com/photo.jpg

# Check task status
sora task <task-id>

# Wait for completion
sora wait <task-id> --interval 5

# List available models
sora models

Commands

CommandDescription
sora generate <prompt>Generate a video from a text prompt
sora image-to-video <prompt> -i <url>Generate a video from reference image(s)
sora task <task_id>Query a single task status
sora tasks <id1> <id2>...Query multiple tasks at once
sora wait <task_id>Wait for task completion with polling
sora modelsList available Sora models
sora configShow current configuration
sora orientationsList available orientations
sora sizesList available video sizes

Global Options

--token TEXT    API token (or set ACEDATACLOUD_API_TOKEN env var)
--version       Show version
--help          Show help message

Most commands support:

--json          Output raw JSON (for piping/scripting)
--model TEXT    Sora model version (default: sora-2)

Available Models

ModelVersionNotes
sora-2StandardFast generation, good quality (default)
sora-2-proProHighest quality, more detailed

Configuration

Environment Variables

VariableDescriptionDefault
ACEDATACLOUD_API_TOKENAPI token from AceDataCloudRequired
ACEDATACLOUD_API_BASE_URLAPI base URLhttps://api.acedata.cloud
SORA_DEFAULT_MODELDefault modelsora-2
SORA_REQUEST_TIMEOUTTimeout in seconds1800

Development

Setup Development Environment

git clone https://github.com/AceDataCloud/SoraCli.git
cd SoraCli
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,test]"

Run Tests

pytest
pytest --cov=sora_cli
pytest tests/test_integration.py -m integration

Code Quality

ruff format .
ruff check .
mypy sora_cli

Docker

docker pull ghcr.io/acedatacloud/acedata-sora-cli:latest
docker run --rm -e ACEDATACLOUD_API_TOKEN=your_token \
  ghcr.io/acedatacloud/acedata-sora-cli generate "A test video"

Project Structure

SoraCli/
├── sora_cli/                # Main package
│   ├── __init__.py
│   ├── __main__.py            # python -m sora_cli entry point
│   ├── main.py                # CLI entry point
│   ├── core/                  # Core modules
│   │   ├── client.py          # HTTP client for Sora API
│   │   ├── config.py          # Configuration management
│   │   ├── exceptions.py      # Custom exceptions
│   │   └── output.py          # Rich terminal formatting
│   └── commands/              # CLI command groups
│       ├── video.py           # Video generation commands
│       ├── task.py            # Task management commands
│       └── info.py            # Info & utility commands
├── tests/                     # Test suite
├── .github/workflows/         # CI/CD (lint, test, publish to PyPI)
├── Dockerfile                 # Container image
├── deploy/                    # Kubernetes deployment configs
├── .env.example               # Environment template
├── pyproject.toml             # Project configuration
└── README.md

Sora CLI vs MCP Sora

FeatureSora CLIMCP Sora
InterfaceTerminal commandsMCP protocol
UsageDirect shell, scripts, CI/CDClaude, VS Code, MCP clients
OutputRich tables / JSONStructured MCP responses
AutomationShell scripts, pipingAI agent workflows
Installpip install acedata-sora-clipip install mcp-sora

Both tools use the same AceDataCloud API and share the same API token.

Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing)
  5. Open a Pull Request

Development Requirements

  • Python 3.10+
  • Dependencies: pip install -e ".[all]"
  • Lint: ruff check . && ruff format --check .
  • Test: pytest

License

This project is licensed under the MIT License — see the LICENSE file for details.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 15

Native requirements
15 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
click
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
click>=8.1.0runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.27.0runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.0.0runtime
python-dotenv
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
python-dotenv>=1.0.0runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
rich>=13.0.0runtime
sora-cli
Environment
{
  "extras": "dev,release,test",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
sora-cli[dev,release,test]; extra == "all"runtime
mypy
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
mypy>=1.10.0; extra == "dev"runtime
pre-commit
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pre-commit>=3.7.0; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
ruff>=0.4.0; extra == "dev"runtime
build
Environment
{
  "extras": "",
  "marker": "extra == \"release\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
build>=1.2.0; extra == "release"runtime
twine
Environment
{
  "extras": "",
  "marker": "extra == \"release\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
twine>=6.1.0; extra == "release"runtime
pytest-asyncio
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-asyncio>=0.23.0; extra == "test"runtime
pytest-cov
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-cov>=5.0.0; extra == "test"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=8.0.0; extra == "test"runtime
respx
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
respx>=0.21.0; extra == "test"runtime

Distribution files

2 collected
acedata_sora_cli-2026.3.17.0-py3-none-any.whl

bdist_wheel · 13.55 KB · Python py3

Source file
acedata_sora_cli-2026.3.17.0.tar.gz

sdist · 13.23 KB · Python source

Source file

Repository

PENDING
acedatacloud/soracli

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:06 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:3a9b66cef4e741c994b26be5bcb6f61141d86e07c630f4503733ec7bf403fe22

Other collected versions

View all collected versions →