Skip to main content

Python client for Infinity Media Server - GPU-accelerated image, video, and audio generation

Project description

infinity_institute

Python client for Infinity Media Server - GPU-accelerated image, video, and audio generation.

Designed to mirror the fal_client API for familiarity.

Installation

pip install infinity_institute

Quick Start

Module-level Functions (fal_client style)

from infinity_institute import run, submit, subscribe, status

# Simple blocking call
result = run("black-forest-labs/flux-dev", {"prompt": "A cat astronaut in space"})
print(result["images"][0]["download_url"])

# Submit and poll manually
handle = submit("black-forest-labs/flux-dev", {"prompt": "A cat"})
print(f"Submitted: {handle.request_id}")

# Wait with progress updates
for event in handle.iter_events():
    print(f"Status: {event}")
    
result = handle.get()

# Subscribe with callbacks
def on_update(status):
    print(f"Progress: {status}")

result = subscribe(
    "black-forest-labs/flux-dev",
    {"prompt": "A beautiful sunset"},
    on_queue_update=on_update,
)

Client Class Usage

from infinity_institute import SyncClient, AsyncClient

# Sync client
client = SyncClient()

# Run and wait
result = client.run("black-forest-labs/flux-dev", {"prompt": "A cat"})

# Convenience methods with typed results
image_result = client.image("A futuristic city")
print(image_result.images[0].download_url)

video_result = client.video("Ocean waves at sunset", num_frames=16)
print(video_result.video.download_url)

audio_result = client.audio("Hello from Infinity!")
print(audio_result.audio.download_url)

# Download file
client.download(audio_result.audio.download_url, "output.wav")

Async Usage

import asyncio
from infinity_institute import AsyncClient, run_async, submit_async

async def main():
    # Module-level async functions
    result = await run_async("black-forest-labs/flux-dev", {"prompt": "A cat"})
    
    # Or use AsyncClient
    async with AsyncClient() as client:
        handle = await client.submit("black-forest-labs/flux-dev", {"prompt": "A cat"})
        result = await handle.get()

asyncio.run(main())

API Reference

Module-level Functions

Function Description
run(app, args) Submit and wait for result (blocking)
submit(app, args) Submit job, returns SyncRequestHandle
subscribe(app, args, ...) Submit with status callbacks
status(app, request_id) Get job status
result(app, request_id) Get job result
cancel(app, request_id) Cancel job (if supported)

Async versions: run_async, submit_async, subscribe_async, status_async, result_async, cancel_async

SyncClient / AsyncClient

client = SyncClient(
    base_url="http://192.222.55.191:8000",  # Default demo server
    default_timeout=300.0,                   # Max wait time (seconds)
)

Methods

Method Description
run(app, args) Submit and wait for result
submit(app, args) Submit job, returns handle
subscribe(app, args, ...) Submit with callbacks
status(app, request_id) Get job status
result(app, request_id) Get job result
get_handle(app, request_id) Get handle for existing job
health() Server health check
ready() Server readiness & GPU status
models() List available models

Convenience Methods (typed results)

Method Description
image(prompt, ...) Generate image, returns ImageResult
video(prompt, ...) Generate video, returns VideoResult
audio(text, ...) Generate audio, returns AudioResult
download(url, path) Download generated file

Request Handles

Returned by submit(), provides methods to track job progress:

handle = submit("black-forest-labs/flux-dev", {"prompt": "A cat"})

handle.request_id           # Job ID string
handle.status()             # Returns Status (Queued, InProgress, Completed, Failed)
handle.get()                # Wait and return result (blocking)
handle.iter_events()        # Iterate status updates until complete
handle.cancel()             # Cancel job (if supported)

Status Types

from infinity_institute import Queued, InProgress, Completed, Failed

status = handle.status()

if isinstance(status, Queued):
    print(f"Queue position: {status.position}")
elif isinstance(status, InProgress):
    print("Processing...")
elif isinstance(status, Completed):
    print("Done!")
elif isinstance(status, Failed):
    print(f"Error: {status.error}")

Available Models

Model ID Type Example
black-forest-labs/flux-dev Image {"prompt": "A cat"}
wan-ai/wan2.2-t2v Video (2.2) {"prompt": "Waves", "guidance_scale": 4.0, "guidance_scale_2": 3.0}
wan-ai/wan2.1-1.3b Video (2.1) {"prompt": "Waves", "num_frames": 33}
wan-ai/wan2.1-14b Video (2.1) {"prompt": "Waves", "num_frames": 33}
boson-ai/higgs-audio-v2 Audio {"text": "Hello!"}

See client_model_docs/ for detailed parameter documentation.

Caveats (Demo Version)

⚠️ This is a demo/development version:

  • Hardcoded server IP: The default URL (http://192.222.55.191:8000) points to a Lambda Labs development instance. This will be replaced with a proper domain in production.
  • No authentication: The demo server has no API key requirement.
  • Ephemeral storage: Generated files are stored temporarily and may be cleaned up.

For production use, specify your own server URL:

from infinity_institute import SyncClient

client = SyncClient("https://your-production-server.com")

Or set the INFINITY_SERVER_URL environment variable:

export INFINITY_SERVER_URL=https://your-production-server.com

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

infinity_institute-0.1.0.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

infinity_institute-0.1.0-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file infinity_institute-0.1.0.tar.gz.

File metadata

  • Download URL: infinity_institute-0.1.0.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for infinity_institute-0.1.0.tar.gz
Algorithm Hash digest
SHA256 280ef5843a4ff942df5aaa8aaf47214307ceaebb46203f3fe6c5177515672c15
MD5 c8ec5c686d0d870d54dc0b49e8dc5fbf
BLAKE2b-256 6f4bf47a1c55c3a92ad5b15d4589ecaf8f4019bd6411ea3d5fd34967edde8670

See more details on using hashes here.

Provenance

The following attestation bundles were made for infinity_institute-0.1.0.tar.gz:

Publisher: client-publish.yml on Infinity-AI-Institute/video-image-audio-serving

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file infinity_institute-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for infinity_institute-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 145543300db33459848ff7285ad5aac2f58a23a1bef1eccb1ecff9fbdda941d1
MD5 cfa6c3effd2a06b428e78441d3e49c49
BLAKE2b-256 f7d2c4f1916ed98aac05ba70927655451f97b15639ba1da035bb64e0d8ee1828

See more details on using hashes here.

Provenance

The following attestation bundles were made for infinity_institute-0.1.0-py3-none-any.whl:

Publisher: client-publish.yml on Infinity-AI-Institute/video-image-audio-serving

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page