origin-asset 0.2.1

Rust SDK for the Origin Asset Gateway service
Documentation

origin-asset

Rust SDK for the Origin Asset Gateway service.

Crates.io docs.rs License

Installation

[dependencies]
origin-asset = "0.2"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

Quick Start

use origin_asset::AssetClient;

#[tokio::main]
async fn main() -> origin_asset::Result<()> {
    let client = AssetClient::new("your-api-key");

    let image = client.generate_image("a fire sword", None).await?;
    println!("URL: {:?}", image.output_url);

    let healthy = client.health().await?;
    println!("Healthy: {healthy}");

    Ok(())
}

Configuration

Default endpoint

AssetClient::new("your-api-key") uses https://asset.origingame.dev.

Builder

let client = origin_asset::AssetClient::builder("your-api-key")
    .base_url("https://my-asset-gateway.example.com")
    .http_client(custom_reqwest_client)
    .build();

Supported Operations

  • generate
  • generate_image
  • generate_video
  • generate_audio
  • generate_tts
  • generate_music
  • generate_model3d
  • generate_sprite
  • process
  • jobs
  • job_status
  • providers
  • health

Example

use origin_asset::{AssetClient, AudioOptions, ImageOptions, TtsOptions};

let client = AssetClient::new("your-api-key");

let image = client.generate_image("a medieval castle", Some(ImageOptions {
    size: Some("1792x1024".into()),
    model: Some("gpt-image-1".into()),
    transparent: Some(true),
    ..Default::default()
})).await?;

let speech = client.generate_tts("Hello world!", Some(TtsOptions {
    voice: Some("alloy".into()),
    ..Default::default()
})).await?;

let sfx = client.generate_audio("explosion boom", Some(AudioOptions {
    duration: Some(3),
    ..Default::default()
})).await?;

let jobs = client.jobs(Some("completed"), Some(10)).await?;

Error Handling

All methods return origin_asset::Result<T>, which uses OriginError:

use origin_asset::OriginError;

match origin_asset::AssetClient::new("key").generate_image("test", None).await {
    Ok(response) => println!("Success: {:?}", response.output_url),
    Err(OriginError::Api { status, message, .. }) => {
        eprintln!("API error ({}): {}", status, message);
    }
    Err(OriginError::Http(e)) => eprintln!("Network error: {e}"),
    Err(e) => eprintln!("Other error: {e}"),
}

License

Licensed under either of Apache License, Version 2.0 or MIT License at your option.