Search

Search pages, services, tech stack, and blog posts

main.py
FastAPI
*
openapi.json
GET /items
Query: limit (integer)
Response: Item[]
Status: 200 OK
FastAPI

FastAPI BackendHigh-performance async Python APIs

FastAPI is our choice for Python microservices and AI endpoints — async I/O, automatic OpenAPI docs, and Pydantic validation from a single function signature. Fast to write, fast to run.

FastAPI is the fastest-growing Python web framework, built for modern async API development. Define your endpoints with Python type hints and get automatic request validation, OpenAPI documentation, and high-performance async I/O — all from a single function signature. At A Major, we use FastAPI for microservices, AI/ML inference endpoints, and any API where performance and developer speed both matter. FastAPI runs on Starlette (ASGI) and Pydantic, combining async request handling with runtime data validation. It's the natural choice for Python services that need to handle concurrent I/O efficiently — database queries, external API calls, and LLM inference in parallel.

Quick start

bash
pip install fastapi uvicorn
uvicorn main:app --reload

Read the full documentation at fastapi.tiangolo.com

Async I/O performance

Native async/await with Starlette — handle thousands of concurrent connections without thread pool bottlenecks.

Auto OpenAPI docs

Swagger UI and ReDoc generated automatically from your type hints — interactive API docs with zero config.

Pydantic validation

Request and response validation via Pydantic models — type coercion, nested objects, and clear error messages.

AI & ML endpoints

Python-native framework ideal for serving ML models — integrate PyTorch, TensorFlow, or LangChain directly.

Dependency injection

Built-in DI system for database sessions, auth, and shared services — clean, testable endpoint signatures.

ASGI ecosystem

Full ASGI compatibility — deploy with Uvicorn, add middleware from Starlette, or mount sub-applications.

Why it's hard

No built-in ORM or database layer

FastAPI is intentionally minimal — you need to bring your own ORM (SQLAlchemy, Tortoise) and handle migrations (Alembic) separately.

Async ecosystem gaps

Not all Python libraries support async. Mixing sync and async code requires careful handling to avoid blocking the event loop.

Project structure is up to you

FastAPI doesn't prescribe a project layout. Without clear conventions, larger codebases can become disorganized quickly.

Best practices

Use dependency injection for shared resources

FastAPI's Depends() system handles database sessions, auth, and configuration — compose dependencies cleanly.

Define response models explicitly

Set response_model on every endpoint to control serialization, exclude sensitive fields, and generate accurate OpenAPI docs.

Use Alembic for database migrations

Pair SQLAlchemy models with Alembic for auto-generated, reviewable migration scripts. Never modify production schemas manually.

Run with Uvicorn behind Gunicorn in production

Gunicorn manages worker processes while Uvicorn handles async I/O — the recommended production deployment pattern.

Frequently asked questions




Want to build with FastAPI?

Talk to our engineering team about your FastAPI architecture. We'll respond within 24 hours.

1 spot available in May 2026Apr 2026 fully booked

We limit intake each month so every project gets the focus it deserves.