origin-asset
Rust SDK for the Origin Asset Gateway service.

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.