Skip to main content

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

Project description

infinity_ml

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_ml

Quick Start

Module-level Functions (fal_client style)

from infinity_ml 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_ml import InfinitySyncClient, InfinityAsyncClient

# Sync client
client = InfinitySyncClient()

# 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_ml import InfinityAsyncClient, 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 InfinityAsyncClient
    async with InfinityAsyncClient() 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

InfinitySyncClient / InfinityAsyncClient

client = InfinitySyncClient(
    base_url="https://api.infinity.inc",  # Or use INFINITY_SERVER_URL env var
    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

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_ml 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!"}

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_ml-0.2.0.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

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

infinity_ml-0.2.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file infinity_ml-0.2.0.tar.gz.

File metadata

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

File hashes

Hashes for infinity_ml-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ccfdd7747f2ba593adb290b7b6d9d67b45cca82b9fc8e38c4ae035ab9099055b
MD5 69351e2294fe5969bea7d4692cfe0624
BLAKE2b-256 79f29a45c65c4360cbde36332fd50b69af5d3ac81745721399a0b3bdf0632030

See more details on using hashes here.

Provenance

The following attestation bundles were made for infinity_ml-0.2.0.tar.gz:

Publisher: sdk-py-publish.yml on Infinity-AI-Institute/infinity-sdk

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_ml-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: infinity_ml-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for infinity_ml-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d1fb266c8959ba7f4633fbeab1d8cd653b466a8fef1c0aa2fe091400385acb4
MD5 53ab1a583fd174d2b6a2a7e90307ddca
BLAKE2b-256 d3f0265660377f06b7c05fcc822c5a2b8f5f437e05f6b7a1491b0234dab2dd2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for infinity_ml-0.2.0-py3-none-any.whl:

Publisher: sdk-py-publish.yml on Infinity-AI-Institute/infinity-sdk

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