# frameio-kit: Build Powerful Frame.io Integrations in Minutes
**frameio-kit** is the fastest way to build robust, scalable integrations with Frame.io. Stop wrestling with webhook signatures, API authentication, and event parsing โ focus on what makes your integration unique.
```python
import os
import uvicorn
from frameio_kit import App, WebhookEvent, ActionEvent, Message
app = App()
@app.on_webhook("file.ready", secret=os.environ["WEBHOOK_SECRET"])
async def on_file_ready(event: WebhookEvent):
print(f"File {event.resource_id} is ready!")
@app.on_action("my_app.analyze", "Analyze File", "Analyze this file", os.environ["ACTION_SECRET"])
async def analyze_file(event: ActionEvent):
return Message(title="Analysis Complete", description="File analyzed successfully!")
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=8000)
```
## ๐ Quick Start
Ready to build your first Frame.io integration? Check out our comprehensive documentation:
- **[๐ Getting Started Guide](https://billyshambrook.github.io/frameio-kit/usage/getting_started/)** - Get up and running in 5 minutes
- **[๐ฃ Webhooks](https://billyshambrook.github.io/frameio-kit/usage/webhooks/)** - React to Frame.io events automatically
- **[๐ฌ Custom Actions](https://billyshambrook.github.io/frameio-kit/usage/custom_actions/)** - Build interactive user experiences
- **[๐ Client API](https://billyshambrook.github.io/frameio-kit/usage/client_api/)** - Make calls back to Frame.io's API
- **[๐ Middleware](https://billyshambrook.github.io/frameio-kit/usage/middleware/)** - Add cross-cutting concerns to your integration
## โจ Why frameio-kit?
- **Async-first architecture** - Handle thousands of concurrent webhooks without breaking a sweat
- **Decorator-based routing** - `@app.on_webhook` and `@app.on_action` make event handling trivial
- **Automatic validation** - Pydantic models give you full type safety and editor support
- **Secure by default** - Built-in signature verification for all requests
- **Zero boilerplate** - No manual JSON parsing or signature verification
## ๐ฆ Installation
We recommend using [uv](https://docs.astral.sh/uv/) for fast, reliable installs:
```bash
uv add frameio-kit
```
Or with pip:
```bash
pip install frameio-kit
```
## ๐ Documentation
Complete documentation is available at [billyshambrook.github.io/frameio-kit](https://billyshambrook.github.io/frameio-kit/), including:
## ๐ค Contributing
Contributions are the heart of open source! We welcome improvements, bug fixes, and new features. Whether you're fixing a typo or adding a major feature, every contribution makes frameio-kit better.
### ๐ Prerequisites
- Python 3.13+
- [uv](https://docs.astral.sh/uv/) package manager
### ๐ Quick Start
1. **Fork and clone** the repository:
```bash
git clone https://github.com/billyshambrook/frameio-kit.git
cd frameio-kit
```
2. **Set up the development environment**:
```bash
uv sync
source .venv/bin/activate # or activate via your IDE
```
3. **Install pre-commit hooks**:
```bash
uv run pre-commit install
```
### ๐งช Development Workflow
**Run tests:**
```bash
uv run pytest
```
**Run code quality checks:**
```bash
uv run pre-commit run --all-files
```
**Build documentation:**
```bash
uv run mkdocs serve
```
### ๐ Pull Request Process
1. **Fork** the repository on GitHub
2. **Create** a feature branch from `main`
3. **Make** your changes with tests and documentation
4. **Ensure** all tests and pre-commit hooks pass
5. **Commit** your changes with a clear message
6. **Push** to your fork and open a pull request
### ๐ก Getting Help
- **Questions?** Open a [discussion](https://github.com/billyshambrook/frameio-kit/discussions)
- **Bug reports?** Open an [issue](https://github.com/billyshambrook/frameio-kit/issues)
- **Feature requests?** Start with a discussion first!
Raw data
{
"_id": null,
"home_page": null,
"name": "frameio-kit",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "frameio, frame-io, frame.io, video, collaboration, sdk, api, client, integration, webhook, webhooks, custom-actions, asgi, starlette, async, asyncio, automation, workflow, media, events",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/ee/0c/8476c2fc3668bd5d9e721703dc21e66617a9ed575597f5073d602cd037ff/frameio_kit-0.0.3.tar.gz",
"platform": null,
"description": "# frameio-kit: Build Powerful Frame.io Integrations in Minutes\n\n**frameio-kit** is the fastest way to build robust, scalable integrations with Frame.io. Stop wrestling with webhook signatures, API authentication, and event parsing \u2013 focus on what makes your integration unique.\n\n```python\nimport os\nimport uvicorn\nfrom frameio_kit import App, WebhookEvent, ActionEvent, Message\n\napp = App()\n\n@app.on_webhook(\"file.ready\", secret=os.environ[\"WEBHOOK_SECRET\"])\nasync def on_file_ready(event: WebhookEvent):\n print(f\"File {event.resource_id} is ready!\")\n\n@app.on_action(\"my_app.analyze\", \"Analyze File\", \"Analyze this file\", os.environ[\"ACTION_SECRET\"])\nasync def analyze_file(event: ActionEvent):\n return Message(title=\"Analysis Complete\", description=\"File analyzed successfully!\")\n\nif __name__ == \"__main__\":\n uvicorn.run(app, host=\"0.0.0.0\", port=8000)\n```\n\n## \ud83d\ude80 Quick Start\n\nReady to build your first Frame.io integration? Check out our comprehensive documentation:\n\n- **[\ud83d\udcd6 Getting Started Guide](https://billyshambrook.github.io/frameio-kit/usage/getting_started/)** - Get up and running in 5 minutes\n- **[\ud83c\udfa3 Webhooks](https://billyshambrook.github.io/frameio-kit/usage/webhooks/)** - React to Frame.io events automatically \n- **[\ud83c\udfac Custom Actions](https://billyshambrook.github.io/frameio-kit/usage/custom_actions/)** - Build interactive user experiences\n- **[\ud83c\udf10 Client API](https://billyshambrook.github.io/frameio-kit/usage/client_api/)** - Make calls back to Frame.io's API\n- **[\ud83d\udd04 Middleware](https://billyshambrook.github.io/frameio-kit/usage/middleware/)** - Add cross-cutting concerns to your integration\n\n## \u2728 Why frameio-kit?\n\n- **Async-first architecture** - Handle thousands of concurrent webhooks without breaking a sweat\n- **Decorator-based routing** - `@app.on_webhook` and `@app.on_action` make event handling trivial\n- **Automatic validation** - Pydantic models give you full type safety and editor support\n- **Secure by default** - Built-in signature verification for all requests\n- **Zero boilerplate** - No manual JSON parsing or signature verification\n\n## \ud83d\udce6 Installation\n\nWe recommend using [uv](https://docs.astral.sh/uv/) for fast, reliable installs:\n\n```bash\nuv add frameio-kit\n```\n\nOr with pip:\n```bash\npip install frameio-kit\n```\n\n## \ud83d\udcda Documentation\n\nComplete documentation is available at [billyshambrook.github.io/frameio-kit](https://billyshambrook.github.io/frameio-kit/), including:\n\n## \ud83e\udd1d Contributing\n\nContributions are the heart of open source! We welcome improvements, bug fixes, and new features. Whether you're fixing a typo or adding a major feature, every contribution makes frameio-kit better.\n\n### \ud83d\udccb Prerequisites\n\n- Python 3.13+\n- [uv](https://docs.astral.sh/uv/) package manager\n\n### \ud83d\ude80 Quick Start\n\n1. **Fork and clone** the repository:\n ```bash\n git clone https://github.com/billyshambrook/frameio-kit.git\n cd frameio-kit\n ```\n\n2. **Set up the development environment**:\n ```bash\n uv sync\n source .venv/bin/activate # or activate via your IDE\n ```\n\n3. **Install pre-commit hooks**:\n ```bash\n uv run pre-commit install\n ```\n\n### \ud83e\uddea Development Workflow\n\n**Run tests:**\n```bash\nuv run pytest\n```\n\n**Run code quality checks:**\n```bash\nuv run pre-commit run --all-files\n```\n\n**Build documentation:**\n```bash\nuv run mkdocs serve\n```\n\n### \ud83d\udd04 Pull Request Process\n\n1. **Fork** the repository on GitHub\n2. **Create** a feature branch from `main`\n3. **Make** your changes with tests and documentation\n4. **Ensure** all tests and pre-commit hooks pass\n5. **Commit** your changes with a clear message\n6. **Push** to your fork and open a pull request\n\n### \ud83d\udca1 Getting Help\n\n- **Questions?** Open a [discussion](https://github.com/billyshambrook/frameio-kit/discussions)\n- **Bug reports?** Open an [issue](https://github.com/billyshambrook/frameio-kit/issues)\n- **Feature requests?** Start with a discussion first!\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python framework for building Frame.io apps",
"version": "0.0.3",
"project_urls": {
"Changelog": "https://github.com/billyshambrook/frameio-kit/releases",
"Discussions": "https://github.com/billyshambrook/frameio-kit/discussions",
"Documentation": "https://billyshambrook.github.io/frameio-kit/",
"Homepage": "https://billyshambrook.github.io/frameio-kit/",
"Issues": "https://github.com/billyshambrook/frameio-kit/issues",
"Repository": "https://github.com/billyshambrook/frameio-kit"
},
"split_keywords": [
"frameio",
" frame-io",
" frame.io",
" video",
" collaboration",
" sdk",
" api",
" client",
" integration",
" webhook",
" webhooks",
" custom-actions",
" asgi",
" starlette",
" async",
" asyncio",
" automation",
" workflow",
" media",
" events"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e6267b6a888f0383cb56d15daa683a29d230b4951bb3f8938f820bda2cad3051",
"md5": "c9cfc506d30ee5091b515ce84a6502ee",
"sha256": "eaac04eded29c2ba332abfa350d7bd55a75957865ae4459f1655c97e01353874"
},
"downloads": -1,
"filename": "frameio_kit-0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c9cfc506d30ee5091b515ce84a6502ee",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.13",
"size": 15886,
"upload_time": "2025-10-07T03:32:34",
"upload_time_iso_8601": "2025-10-07T03:32:34.520982Z",
"url": "https://files.pythonhosted.org/packages/e6/26/7b6a888f0383cb56d15daa683a29d230b4951bb3f8938f820bda2cad3051/frameio_kit-0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ee0c8476c2fc3668bd5d9e721703dc21e66617a9ed575597f5073d602cd037ff",
"md5": "d4be2e7ebe6653e8434d82000770f169",
"sha256": "765bfa360ef8ba405055a09eb2008ad8b2b54c1dea8901a71d6857ce92998169"
},
"downloads": -1,
"filename": "frameio_kit-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "d4be2e7ebe6653e8434d82000770f169",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 12726,
"upload_time": "2025-10-07T03:32:35",
"upload_time_iso_8601": "2025-10-07T03:32:35.566846Z",
"url": "https://files.pythonhosted.org/packages/ee/0c/8476c2fc3668bd5d9e721703dc21e66617a9ed575597f5073d602cd037ff/frameio_kit-0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-07 03:32:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "billyshambrook",
"github_project": "frameio-kit",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "frameio-kit"
}