Metadata-Version: 2.4
Name: sendflo
Version: 0.2.0
Summary: SendFlo for Python: send files, request files, manage transfers and AI agent tasks. Standard library only.
Project-URL: Homepage, https://sendflo.app
Project-URL: Documentation, https://sendflo.app/docs/cli#python
Author-email: SendFlo LLC <dev@sendflo.app>
License: MIT
License-File: LICENSE
Keywords: ai agents,file sharing,file transfer,sendflo,upload
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Communications :: File Sharing
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# sendflo

SendFlo for Python: send files and get a link, ask someone for a file, manage your transfers, and
give files to AI agents. Python 3.9+, **standard library only** — nothing else to install, so it
drops into locked-down agent containers.

```sh
pip install sendflo
```

Create an API key in SendFlo → Settings → Developer (<https://sendflo.app/settings/developer>)
and set `SENDFLO_API_KEY` (or pass `api_key=`).

## Send a file

```python
from sendflo import SendFlo

flo = SendFlo()                      # reads SENDFLO_API_KEY
sent = flo.send_file("report.pdf", password="optional")
print(sent.url)                      # https://sendflo.app/l/…
```

The bytes go straight to storage through a presigned multipart upload, each part retried on its
own.

## Ask someone for a file

```python
ask = flo.request_file("Upload your Q3 expense CSV")
print(ask.url)                       # they upload there with no account

items = flo.list_inbox(inbox_id)
flo.save_inbox_item(items[0].id, "q3.csv")
```

## Manage what you've sent

`list_links()`, `revoke_link(id)`, and for a whole send: `get_transfer`, `pause_transfer`,
`resume_transfer`, `revoke_transfer`, `transfer_activity`, `transfer_audit`, `transfer_people`,
`set_transfer_person_access`. Recipient feedback: `link_feedback`, `link_feedback_comments`,
`export_link_feedback`.

## Agents

`list_agents()`, `send_to_agent(cloud_agent_id, file_ids, instruction=…)`, `list_agent_tasks()`,
`get_agent_task(id)`, `answer_agent_task(…)`, `cancel_agent_task`, `retry_agent_task`,
`wait_for_agent_task(id)`.

## Webhooks and notifications

`create_webhook(url, events)`, `list_webhooks()`, `delete_webhook(id)`, and
`verify_webhook_signature(secret, header, body)` for inbound deliveries (constant-time, with a
5-minute replay window). Notification channels: `list_notification_channels`,
`add_notification_channel`, `update_notification_channel`, `remove_notification_channel`,
`test_notification_channel`.

## Errors

Every non-2xx response raises `SendFloError` with `status`, a stable `code`, and `retryable` /
`out_of_credits`. Reads are retried with backoff; `402` (out of credits) never is.

## Licence

MIT © SendFlo LLC. Questions: support@sendflo.app.
