sync by default · async optional · type-safe · production ready

AtomHTTP

A synchronous-first HTTP client for Python with fully optional async support — designed for simplicity, ergonomics, and production use.

Get Started
0
Optional Dependencies
100%
Type Hints Coverage
1
Core Dependency (urllib3)
3.8+
Python Version

Everything you need

A complete HTTP client with all the features you expect from a modern library

Sync by Default

No event loop needed for everyday HTTP calls

Interceptors & Hooks

Request/response middleware plus onRetry/onRedirect hooks

Progress Tracking

Upload + download realtime callbacks

Cancellation

axios-style AbortController, works sync or async

Auth & TLS

Basic/Bearer auth, mTLS, custom CA bundles

Concurrency Without Async

.all() / .submit() / .map() on a persistent thread pool

Performance

Keep-Alive, compression, connection pooling, retries

Type Hints

Full typing support for IDE autocompletion

How AtomHTTP compares

More features, better performance, and cleaner API than alternatives

FeatureAtomHTTPrequestshttpx
Sync API (no event loop)
Optional Async (same transport)✓ (separate client)
Cancellation (AbortController)Manual
Interceptors
Upload Progress
Download Progress
Streaming FormData Uploads✓ (automatic)ManualManual
Pagination Helper
Concurrency Without Async✓ (.all/.submit/.map)Manualn/a
Type HintsFullPartial

Get started in seconds

Simple, intuitive API that feels familiar

1
2
3
4
5
6
7
8
9
10
from atomhttp import AtomHTTP

client = AtomHTTP(
    base_url='https://jsonplaceholder.typicode.com',
    timeout=10,
)

response = client.get('/posts/1')   # no async/await needed
print(f"Status: {response.status}")
print(f"Title: {response.data['title']}")

Ready to build something great?

AtomHTTP is open source and free to use under the MIT license.