Metadata-Version: 2.4
Name: wbapi-async
Version: 0.7.4
Summary: Asynchronous client for Wildberries API
Project-URL: Documentation, https://serdukow.github.io/wbapi-async/
Project-URL: Repository, https://github.com/serdukow/wbapi-async
Project-URL: Changelog, https://github.com/serdukow/wbapi-async/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/serdukow/wbapi-async/issues
Author-email: Andrei Serdiukov <asyncdf@gmail.com>
Maintainer-email: Andrei Serdiukov <asyncdf@gmail.com>
License: MIT
License-File: LICENSE
Keywords: api,async,client,wb,wildberries
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Framework :: Pydantic :: 2
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: <3.14,>=3.11
Requires-Dist: aiolimiter<2.0.0,>=1.2.1
Requires-Dist: httpx<0.29.0,>=0.28.1
Provides-Extra: dev
Requires-Dist: pre-commit<5.0.0,>=4.3.0; extra == 'dev'
Requires-Dist: ruff<0.15.0,>=0.14.1; extra == 'dev'
Provides-Extra: docs
Requires-Dist: mkdocs-material>=9.6.0; extra == 'docs'
Requires-Dist: mkdocstrings[python]>=0.29.0; extra == 'docs'
Provides-Extra: lint
Requires-Dist: pre-commit<5.0.0,>=4.3.0; extra == 'lint'
Requires-Dist: ruff<0.15.0,>=0.14.1; extra == 'lint'
Provides-Extra: test
Requires-Dist: pytest-asyncio<2.0.0,>=1.2.0; extra == 'test'
Requires-Dist: pytest-httpx<0.37.0,>=0.35.0; extra == 'test'
Requires-Dist: pytest<9.0.0,>=8.4.2; extra == 'test'
Requires-Dist: python-dotenv<2.0.0,>=1.2.1; extra == 'test'
Description-Content-Type: text/markdown

<p align="center">
  <a href="https://dev.wildberries.ru/"><img src="https://dev.wildberries.ru/images/open-graph.png" alt="WbAPI" width="600"></a>
</p>

<div align="center">

#### Lightweight async client for Wildberries Seller API

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![PyPI version](https://img.shields.io/pypi/v/wild-api.svg)](https://pypi.org/project/wild-api/)
[![Downloads](https://img.shields.io/pypi/dm/wild-api.svg)](https://pypi.python.org/pypi/wild-api)
[![Docs](https://img.shields.io/badge/docs-serdukow.github.io-blue.svg)](https://serdukow.github.io/wbapi-async/)

</div>

Lightweight async Python client for the [Wildberries Seller API](https://dev.wildberries.ru).
Just pass the path from the docs and get data back.

## Features

- **Zero boilerplate** — WB API changes constantly; typed models break on every schema update. Instead, responses are plain attribute-accessible dicts — `result.fieldName` just works, no models to maintain
- **Auto-pagination** — `get_all()` fetches all pages. Auto-detects all known strategies; you can easily add your own via a custom paginator — [see docs](https://serdukow.github.io/wbapi-async/advanced/pagination/)
- **Rate limiting** — per-endpoint limits from the spec, powered by `aiolimiter`
- **Auto-retry** — automatic retry on HTTP 429
- **Always up to date** — path registry is [auto-generated](https://github.com/serdukow/wbapi-codegen) from WB OpenAPI specs daily
- **Fully async** — built on `httpx` + `asyncio`

## Install

```bash
pip install wbapi-async
```

## Quick start

```python
from wbapi_async import WbAPI

async with WbAPI(token="...") as api:

    supplies = await api.get_all("/api/v3/supplies")
    print(f"supplies: {supplies!r}")
```

Just copy the path straight from the [WB API](https://dev.wildberries.ru) — the correct base URL and subdomain are resolved automatically.
