Python client
Use the framework-neutral Python client to inspect merchant resources and payment records.
The package supports Python 3.11 through 3.14. From an empty project, create a virtual environment first:
python -m venv .venv. .venv/bin/activateConfigure one test merchant API key in the server process:
pip install recuutexport RECUUT_API_KEY="recuut_test_..."Use Recuut in normal Python code and AsyncRecuut in asynchronous code. The API key selects the account and environment; client methods do not accept either as request input.
from recuut import Recuutwith Recuut() as client: for resource in client.resources.list(max=100, page_size=25): print(resource.id, resource.name)from recuut import Recuutfrom recuut.merchant_api import TransactionFilter, TransactionStatuswith Recuut() as client: for transaction in client.transactions.list( filter=TransactionFilter(status=TransactionStatus.SUCCEEDED), max=100, page_size=50, ): print(transaction.id, transaction.status, transaction.payment_request_id)List methods return a typed first page. Iterate over it to load later pages
lazily, and use max to cap the total records yielded. The first page still
exposes items, count, as_of, and next when page boundaries matter.
Use a generated filter object for backend selection fields such as transaction
status. page_size and order are also sent to the backend; max is only an
SDK iteration limit and never changes the request's page size.
Every operation accepts request_options={"timeout": 10.0, "headers": {...}}.
Call the same operation through with_raw_response, for example
client.resources.with_raw_response.list(), to receive status_code,
headers, raw content, and typed data for a successful response.
RECUUT_API_URL defaults to https://api.recuut.com. Set it only when Recuut gives you a local or staging API URL. The examples print each object’s public ID and name or status. An HTTP 401 means the key is missing or invalid; a 403 means the authenticated key lacks the required capability.
The client is framework-neutral. Use it in workers, commands, and services that need records. It does not protect an HTTP endpoint by itself; use FastAPI, Django, or the Direct HTTP integration for that boundary.