Official Python client for the ReachFlow public REST API (WhatsApp, OTP)
Project description
reachflow
Official Python client for the ReachFlow public API (REST v1).
Installation
pip install reachflow
Requirements: Python ≥ 3.10.
Configuration
from reachflow import ReachFlow
client = ReachFlow(
api_key="rfl_live_…", # or rfl_test_…
environment="sandbox", # or "live" — default: "sandbox"
timeout_ms=30_000,
max_retries=2,
)
environment |
API host |
|---|---|
sandbox (default) |
sandbox-api.reachflow.me |
live |
api.reachflow.me |
Use a context manager to close the HTTP connection:
with ReachFlow(api_key="rfl_live_…") as client:
...
Examples
Send a message
with ReachFlow(api_key="rfl_live_…") as client:
result = client.messages.send(
provider_id="your-provider-uuid",
to="22996123456",
message="Your order is confirmed.",
)
status = client.messages.wait_for_terminal(result["messageId"])
print(status["status"])
OTP
with ReachFlow(api_key="rfl_live_…") as client:
sent = client.otp.send(
provider_id="your-provider-uuid",
phone_number="22996123456",
brand_name="My App",
)
# Code is delivered on WhatsApp only — never in the JSON response.
verified = client.otp.verify(otp_id=sent["otpId"], code="482910")
print(verified["valid"])
Async client
from reachflow import AsyncReachFlow
async with AsyncReachFlow(api_key="rfl_live_…") as client:
providers = await client.providers.list()
Error handling
from reachflow import ReachFlow, ReachFlowError
try:
client.messages.send(...)
except ReachFlowError as err:
print(err.status_code, err.code, err.message)
if err.retryable:
...
Idempotency
client.messages.send(
provider_id=provider_id,
to=to,
message=message,
idempotency_key="order-12345",
)
Development
pip install -e ".[dev]"
pytest
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
reachflow-0.3.0.tar.gz
(10.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
reachflow-0.3.0-py3-none-any.whl
(13.2 kB
view details)
File details
Details for the file reachflow-0.3.0.tar.gz.
File metadata
- Download URL: reachflow-0.3.0.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13d0b59f103f50b9089001e68ce7f6693b98ae4e12dc340f60fefd99fa1c3772
|
|
| MD5 |
f4db49d4656004897e317c255cf16c05
|
|
| BLAKE2b-256 |
d4b6fe229136f551ce3cdb1f5790fbcead88a6aa0cd05bcfaf65c81b4f795f11
|
File details
Details for the file reachflow-0.3.0-py3-none-any.whl.
File metadata
- Download URL: reachflow-0.3.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5b521ca5f5f215464398d3abac15aec5dd165d0778144b077d98ff64077d31e
|
|
| MD5 |
d917efe0a5c759192c483def61881ccb
|
|
| BLAKE2b-256 |
377faaaf2d243787764ea532d02d3bbe2433df3c8d795a4444ccf69b7ac00764
|