novence (Python)
Python SDK for Novence — static site hosting built for AI agents.
pip install novence
Requires Python 3.10+. No third-party dependencies — standard library only.
Quick start
from novence import Novence, bootstrap_account, verify_email
boot = bootstrap_account("you@example.com") # emails a 6-digit OTP
verify_email("you@example.com", "123456")
client = Novence(api_key=boot["apiKey"])
project = client.create_project("launch")
pid = project["project"]["id"]
client.upload_bytes(pid, "index.html", "text/html; charset=utf-8", b"<h1>hi</h1>")
client.deploy(pid)
deployment = client.wait_for_deployment(pid) # polls until live or failed
print(deployment["liveUrl"])
Configuration
base_url defaults to https://api.novence.ai. Override per client, or set
NOVENCE_BASE_URL to point everything at a different control plane:
client = Novence(api_key=key, base_url="http://127.0.0.1:8080")
The variable is read at call time, so setting it after import still works.
Deploys are asynchronous
deploy() returns as soon as the deployment is queued. Use
wait_for_deployment(project_id, timeout=300, interval=2) to block until it is
live, or poll latest_deployment(project_id) yourself.
checks_results["passed"] is None when checks were skipped (unverified
accounts). That is not a pass.
API
| Area | Methods |
|---|---|
| Projects | create_project list_projects get_project update_project project_usage project_analytics |
| Uploads | upload_dir upload_file upload_bytes get_upload_url get_upload_urls_batch confirm_upload confirm_batch |
| Deploys | deploy latest_deployment wait_for_deployment |
| Domains | configure_domain domain_status |
| Forms | create_form list_forms get_form update_form delete_form list_form_submissions delete_form_submission |
| Billing | quotas checkout billing_portal mpp_upgrade |
| Account | get_account account_console_kit create_session revoke_session revoke_api_key |
Module-level: bootstrap_account verify_email resend_verification reissue_api_key.
reissue_api_key issues a new key and revokes the old one — rebuild your client
with the returned key.
Uploading a directory
result = client.upload_dir(pid, "./dist")
result["uploaded"] # site paths that went up
result["skipped"] # local files whose extension the platform does not accept
Dotfiles and dot-directories (.git, .env) are skipped, matching the
TypeScript SDK.
Errors
Every API error raises RuntimeError carrying the API's message — including
rate limits and quota rejections.
Security
nv_ keys are server-side credentials. Read them from the environment; never
commit one or put one in client-side code.
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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
File details
Details for the file novence-0.2.1.tar.gz.
File metadata
- Download URL: novence-0.2.1.tar.gz
- Upload date:
- Size: 8.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61301ebcd2674d34974f6c5c5f760c265ff3c0cf677b9ce8cfcc6a036e5fd377
|
|
| MD5 |
6e248761ea4e5480dc3286774ad9516e
|
|
| BLAKE2b-256 |
6d9df2e37c0946f744382014d330728a9696342c493a1ad3dbfaef2f85e0c039
|
File details
Details for the file novence-0.2.1-py3-none-any.whl.
File metadata
- Download URL: novence-0.2.1-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4c77f76da07a61767dfcdfdcae7de1fd599be13fb92fe31535a7e5f973e316ca
|
|
| MD5 |
f399c7a435bd041086732491e1d9cdbb
|
|
| BLAKE2b-256 |
876cea6735daecd7813cccda18dccb23bd857ac09fc64a343111760b2148c990
|