Official Python SDK for the somewhere.tech platform API. Supabase-compatible interface.
Project description
somewhere — Python SDK
Official Python SDK for the somewhere.tech platform API. Thin wrapper around the REST API at https://api.somewhere.tech/v1.
Install
pip install somewhere
Quick start
from somewhere import Somewhere, SomewhereError
sw = Somewhere(key="smt_...") # or token="eyJ..." for app-user mode
# Create a project
project = sw.projects.create(name="Booking App")
# Run a migration
sw.db.migrate(
"""
CREATE TABLE bookings (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
slot TEXT NOT NULL,
created_at TEXT DEFAULT (datetime('now'))
);
""",
project["id"],
)
# Insert + query
sw.db.query(
"INSERT INTO bookings (name, slot) VALUES (?, ?)",
["Alice", "2026-05-01 18:00"],
project["id"],
)
rows = sw.db.query("SELECT * FROM bookings", [], project["id"])
# Deploy a static site
sw.deploy(
files={"index.html": "<h1>Book a table</h1>"},
project_id=project["id"],
)
print(f"Live at https://{project['subdomain']}.somewhere.tech")
Auth modes
Developer mode — full access, server-side only:
sw = Somewhere(key="smt_...")
App-user mode — app JWT, browser-safe operations only (db, storage, fs, auth.me):
sw = Somewhere(token="eyJ...", project_id="booking-app")
me = sw.auth.me()
rows = sw.db.query("SELECT * FROM bookings WHERE email = ?", [me["user"]["email"]])
Default project:
sw = Somewhere(key="smt_...", project_id="booking-app")
sw.db.query("SELECT * FROM bookings") # uses 'booking-app'
Error handling
Every API error raises a typed SomewhereError:
from somewhere import SomewhereError
try:
sw.email.send(to="user@example.com", subject="Hi", text="Welcome")
except SomewhereError as err:
print(err.code) # "QUOTA_EXCEEDED"
print(err.message) # human-readable
print(err.status_code) # 429
print(err.retry) # True if client should retry
print(err.retry_after_ms) # ms to wait
Method reference
| Namespace | Methods |
|---|---|
sw.projects |
create, list, get, delete, undeploy, archive, unarchive, rename, deploys |
sw.deploy |
sw.deploy(files=..., functions=..., project_id=...), sw.deploy.status(project_id) |
sw.promote |
sw.promote(project_id), sw.promote.rollback(project_id) |
sw.db |
query, migrate, tables, schema |
sw.storage |
put, get, delete, list |
sw.fs |
write, read, delete, move, copy, stat, versions, restore |
sw.auth |
signup, login, logout, me, forgot, reset, users, verify_email, request_verification, delete_account, update_me |
sw.email |
send |
sw.ai |
complete, embed, image, tts, transcribe |
sw.jobs |
create, status, list, cancel, progress |
sw.cron |
create, list, update, delete |
sw.queue |
push |
sw.logs |
write, read |
sw.env |
set, list, delete |
sw.domains |
add, verify, list, delete |
sw.preview |
invite, revoke, viewers |
sw.feedback |
submit, list |
sw.billing |
status, checkout, portal |
sw.usage |
get, summary |
* = stub for not-yet-shipped endpoints; calling returns UNSUPPORTED_FEATURE.
Test
SMT_KEY=smt_... python tests/test_basic.py
License
MIT © somewhere.tech
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
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 somewhere_tech-0.2.0.tar.gz.
File metadata
- Download URL: somewhere_tech-0.2.0.tar.gz
- Upload date:
- Size: 18.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7299662e6b21a98e0e7fb7f470ed1aa501d82a649152e0990992ba109a3c76eb
|
|
| MD5 |
8b21b4c0b1f7721e0abeb8d7607f7e15
|
|
| BLAKE2b-256 |
15fb9e7c52d3595dfe407594e23679c8ed6597622289a510e3011b2df039a2dc
|
File details
Details for the file somewhere_tech-0.2.0-py3-none-any.whl.
File metadata
- Download URL: somewhere_tech-0.2.0-py3-none-any.whl
- Upload date:
- Size: 21.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09e8b259a66cc219c639d2f7aef1b9bfaa67315fa60d6fdb4496256f5f635d73
|
|
| MD5 |
7e83b4cba28efbeb87a68afa5ad488df
|
|
| BLAKE2b-256 |
6a2e7ad39a7adc8cde2fca458239d00a1dfe391255cfd65831e595fcfe04a4be
|