1 unstable release

0.1.0-beta+1 Jul 4, 2022

#1277 in Web programming


222 lines

ImageKit Logo

Rust API Client for ImageKit.io a file storage and image processing service

Crates.io Documentation Build Clippy Formatter Tests


You must retrieve your Public and Private Keys from the ImageKit Developer Options.

Then create an instance of ImageKit and initialize the client.

use imagekit::ImageKit;
use imagekit::delete::Delete;
use imagekit::upload::types::FileType;
use imagekit::upload::{Options, Upload, UploadFile};
use tokio::fs::File;

async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut image_kit = ImageKit::new(

    // Upload an image from File
    let file = File::open("assets/ferris.jpeg").await.unwrap();
    let opts = Options::new(upload_file, "ferris");
    let upload_result = imagekit.upload(opts).await.unwrap();

    // Delete a file
    let delete_result = imagekit.delete(upload_result.file_id).await;


The main goal of this crate is to support the main three functionalities provided by ImageKit. URL Generation, File Upload and File Management.

The following list, provides a closer view to supported features and planned features which are not yet implemented. Feel free to contribute by opening an issue, pull request or discussion.

  • URL Generation
  • File Upload (File Upload API)
    • From tokio::fs::File (Binary)
    • From std::fs::File (Binary)
    • From URL
    • From Base64
  • File Management
    • List Files
    • Search Files
    • Get File Details
    • Get File Versions
    • Get File Metadata
    • Custom Metadata Fields
      • Create
      • List
      • Update
      • Delete
    • Delete File
    • Update File Details
    • Tags
      • Bulk Addition
      • Bulk Deletion
    • AI Tags
      • Bulk Deletion
    • Delete File Version
    • Bulk Delete Files
    • Copy File
    • Move File
    • Rename File
    • Restore File Version
    • Folders
      • Create
      • Copy
      • Delete
      • Move
    • Bulk Job Status
    • Cache
    • Purge

If you notice theres missing features in this list, please open an issue or PR.


In order to create a release you must push a Git tag as follows

git tag -a <version> -m <message>


git tag -a v0.1.0 -m "First release"

Tags must follow semver conventions Tags must be prefixed with a lowercase v letter.

Then push tags as follows:

git push origin main --follow-tags


Every contribution to this project is welcome. Feel free to open a pull request, an issue or just by starting this project.


As most Rust projects, this crate is licensed under both, the Apache License and the MIT License.


~273K SLoC