The magic behind Kurozora app

KurozoraKit Swift 5 Apple Platform Kurozora Discord Server Documentation License

KurozoraKit lets users manage their anime library and access many other serices from your app. When users provide permission to access their Kurozora account, they can use your app to share anime, add anime to their library, and discover any of the millions of anime in the Kurozora catalog. If your app detects that the user is not yet a Kurozora member, you can offer them to create an account within your app.

KurozoraKit is designed to be:

  • 🛠 Intuitive: KurozoraKit is built with Swift, one of the fast, modern, safe and interactive programming languages.

  • ✨ Magical: The kit is carefully designed to work as efficient and reliable as you would expect it to.

  • 📚 Documented: With up to 100% documentation coverage.

  • ⚙️ Reliable: Built for the best API. The way KurozoraKit works together with the Kurozora API is truly otherworldly.


KurozoraKit has been tested to work on iOS 15.0+ and macOS 12+. It also works best with Swift 5.0+

To use KurozoraKit in your project, you need to install it first.


KurozoraKit is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'KurozoraKit'


KurozoraKit can be implemented using one line in the global scope.

let kurozoraKit = KurozoraKit()

KurozoraKit also accepts a KKServices object to enable and manage extra functionality. For example to manage Keychain data and enable built-in HUD alerts you can do something like the following:

// Prepare Keychain with your desired setting.
let appIdentifierPrefix = Bundle.main.infoDictionary?["AppIdentifierPrefix"] as! String
let keychain = Keychain(service: "AppName", accessGroup: "\(appIdentifierPrefix)").synchronizable(true).accessibility(.afterFirstUnlock)

// Pass the keychain object and enable built-in alerts.
let services = KKServices(keychain: keychain, showAlerts: true)

// Pass KKService
let kurozoraKit = KurozoraKit(authenticationKey: "bearer-token").services(services)

You can also be chain desired methods instead of passing data as parameter.

let services = KKServices().showAlerts(false).keychainDefaults(keychain)
let kurozoraKit = KurozoraKit().authenticationKey("bearer-token").services(services)

After setting up KurozoraKit you can use an API by calling its own method. For example, to get the explore page data, you do the following:

let genreID = 1

kurozoraKit.getExplore(genreID) { result in
    switch result {
    case .success(let success):
        // Handle success case…
    case .failure(let error):
        // Handle error case…


Read the Contributing Guide to learn about reporting issues, contributing code, and more ways to contribute.


If you happen to find a security vulnerability, we would appreciate you letting us know at [email protected] and allowing us to respond before disclosing the issue publicly.

Getting in Touch

If you have any questions or just want to say hi, join the Kurozora Discord and drop a message on the #development channel.

More by Kurozora


KurozoraKit is an Open Source project covered by the MIT License.