Skip to content

Why immichpy?

1. Thin, schema-driven design

immichpy isn't a hand-written abstraction. It's autogenerated directly from the Immich OpenAPI schema using the well-established openapi-generator. Its core is mostly models and endpoint mappings rather than complex custom logic. If needed, the project can be easily forked or regenerated from the schema.

2. Focused on API stability

The primary goal of immichpy is to track Immich API changes quickly and maintain compatibility with server releases. It acts as a stable buffer layer so downstream projects don't have to adjust to every API change themselves. Read more about versioning.

3. Minimal lock-in

Using immichpy does not change your architecture - it simply replaces manual HTTP calls with typed endpoint functions. If a project later decides to remove the dependency, the calls map directly back to the raw API, avoiding any architectural dead ends. Read more about the integration.

4. Longevity

immichpy is designed as a shared, reliable API layer for Python projects in the Immich ecosystem, not just a single-use library. While the project is still young, its foundations are solid:

  • The code generation approach is mature and well-tested
  • The client structure is based on patterns already used in production systems

The main area that evolves is API tracking, not the internal design.

5. Automated maintenance

The client reduces risk of staleness through automation. For every Immich release, a pull request is opened to update the client. Read more about auto-syncing.

6. Ecosystem alignment

immichpy is maintained by me, @timonrieger. I'm actively involved in the broader Immich ecosystem, contributing to core and related projects to help keep this client aligned with the platform's evolution.