# Clientele: The Python API Client Generator for FastAPI, Django REST Framework, and Django Ninja

**URL:** <https://forum.djangoproject.com/t/clientele-the-python-api-client-generator-for-fastapi-django-rest-framework-and-django-ninja/43821>\
**Category:** Show & Tell\
**Created:** [December 28, 2025, 7:14pm UTC](https://forum.djangoproject.com/t/clientele-the-python-api-client-generator-for-fastapi-django-rest-framework-and-django-ninja/43821 "2025-12-28T19:14:13Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![phalt](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/phalt/32/46_2.png) [@phalt](https://forum.djangoproject.com/u/phalt)\
**Post date:** [December 28, 2025, 7:14pm UTC](https://forum.djangoproject.com/t/clientele-the-python-api-client-generator-for-fastapi-django-rest-framework-and-django-ninja/43821/1 "2025-12-28T19:14:13Z")

</div>

Hello Djangonauts.

I’ve spent most of this past year planning and building my ultimate HTTP API client library for OpenAPI.

I’ve got it to version 1.0.0 this Christmas break and I’d love for you to try it out.

> **[GitHub - phalt/clientele: The Python API Client Generator for FastAPI,...](https://github.com/phalt/clientele)**
>
> The Python API Client Generator for FastAPI, Django REST Framework, and Django Ninja

It’s the result of years of personal experience dealing with HTTP API integrations in Python.

I have tried to integrate with OpenAPI services for years, professionally or as a hobby, I’ve even [built some](https://pokeapi.co) of the most popular free APIs on the web.

But I could never find a client generator that had a good developer experience that I enjoyed.

The last time I had to hand build a client integration from scratch I decided to use it as a template and worked backwards, creating a generator that made my dream client integration.

![clientele_generate](https://us1.discourse-cdn.com/flex026/uploads/djangoproject/original/3X/3/6/364d4042ab1f8267254992628eb7cbd103254c11.gif)

Clientele creates a fully typed, functional or class-based, async or sync HTTP API client. It has an entry point for configuration. It supports authentication. It is auto formatted by ruff. It only depends on httpx and pydantic.

You can keep using Clientele to maintain it as the API updates, or just use it once to get you started quickly with a decent HTTP client (a bit like Django’s `startapp`).

I tested it against 2,000+ OpenAPI schemas to make sure it works properly (through a cron job, not by hand - hah!). After that I decided to target FastAPI, DRF and Django-ninja specifically to guarantee 100% support for the Python ecosystem.

To boost the developer experience and testing I even built a REPL for quick client generation and testing or schema inspection. You can test out any OpenAPI service in less than a second, all you need is the schema file or URL.

Here is a gif of the REPL in action against a local FastAPI API:

![clientele](https://us1.discourse-cdn.com/flex026/uploads/djangoproject/original/3X/7/b/7b9e46d9fff33b6387c3fb3a960c422101fb53fb.gif)

This project is the first time in years I’ve felt invigorated and passionate about coding again so I’m happy for the journey it’s given me so far. As an aside: if you have ever felt “It’s worthless building something like that because it’s already been done” my advice is to go and do it anyway because it is very fulfilling.

You can read more about the design philosophy of the project here: [Design Philosophy - ⚜️ Clientele](https://phalt.github.io/clientele/design/)

Please download it and give it a try!

---

<div class="post-metadata">

**Author:** ![carltongibson](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/carltongibson/32/267_2.png) [@carltongibson](https://forum.djangoproject.com/u/carltongibson)\
**Post date:** [December 29, 2025, 9:34am UTC](https://forum.djangoproject.com/t/clientele-the-python-api-client-generator-for-fastapi-django-rest-framework-and-django-ninja/43821/2 "2025-12-29T09:34:44Z")

</div>

> [@phalt](#):
>
> To boost the developer experience and testing I even built a REPL for quick client generation and testing or schema inspection. You can test out any OpenAPI service in less than a second, all you need is the schema file or URL.

Looks cool @phalt — thanks for sharing.

---

<div class="post-metadata">

**Author:** ![lepture](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/lepture/32/31225_2.png) [@lepture](https://forum.djangoproject.com/u/lepture)\
**Post date:** [January 14, 2026, 10:41am UTC](https://forum.djangoproject.com/t/clientele-the-python-api-client-generator-for-fastapi-django-rest-framework-and-django-ninja/43821/3 "2026-01-14T10:41:10Z")

</div>

Thanks for sharing. So basically you can use it for any openapi, not just DRF, FastAPI, django-ninja.
