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.