Skip to main content

segops_admin

Server-side Python Admin SDK for the SegOps platform. Programmatic access to segments, products, schemas, activations, AI queries, landing pages, analytics, and more — the same surface the dashboard uses.

Server-side only. Requires a secret API key (sk_…). Never expose secret keys to browsers or mobile apps.

Zero required runtime dependencies (stdlib only). Python 3.9+.

Install

pip install segops_admin

Quick Start

from segops_admin import SegOpsAdmin

client = SegOpsAdmin(api_key="sk_...")  # or set SEGOPS_API_KEY env var

# List all segments (paginated)
page = client.segments.list()
print(page["results"])

# Trigger a recompute
client.segments.recompute(12)

# Iterate all segments across pages
for segment in client.segments.iterate():
    print(segment["name"])

Resources

Every resource exposes the same CRUD surface plus resource-specific actions:

Namespace Path prefix Notable actions
segments /segments/ recompute, members, membership, export, preview, estimate, versions
product_segments /product-segments/ recompute
products /pim/products/ bulk_upsert, score, score_all, facets, schema, import_csv, import_status, confirm_import
schemas /schemas/ infer, validate
activations /activations/ sync
users /explorer/users/ search, get, events, segments, explain, publish_sandbox
queries /ai-reach/queries/ run, results, simulate, dashboard, win_rate
pages /ai-pages/pages/ bulk_generate, regenerate, build, publish, export, query
analytics /analytics/ overview, segments, overlap, activations, usage (read-only)

CRUD methods (all resources except users and analytics)

client.segments.list({"page": 1, "page_size": 20})  # paginated dict
client.segments.iterate()                             # generator over all items
client.segments.get(id)
client.segments.create({"name": "VIP", "definition": {...}})
client.segments.update(id, {"name": "VIP v2"})
client.segments.delete(id)

Segments

client.segments.preview(definition)          # estimate without persisting
client.segments.estimate(id)
client.segments.versions(id)
client.segments.recompute(id)                # POST /segments/{id}/compute/
client.segments.members(id, {"page": 1})
client.segments.membership("user-123")
client.segments.export(id, format="csv")     # or "parquet"

Products (PIM)

client.products.bulk_upsert([{"sku": "SKU-1", "name": "Alpha"}, ...])
client.products.import_csv(open("products.csv", "rb").read(), "products.csv")
client.products.import_status(job_id)
client.products.confirm_import(job_id, {"confirmed": True})
client.products.score(id)
client.products.score_all()
client.products.facets()
client.products.schema()

Users (Explorer)

client.users.search({"q": "alice"})
client.users.get("user-123")
client.users.events("user-123", {"since": "2024-01-01"})
client.users.segments("user-123")
client.users.explain("user-123", segment_id=5)
client.users.publish_sandbox({"user_id": "u1", "event_type": "page_viewed", "payload": {}})

AI Queries

client.queries.run(id)
client.queries.results(id)
client.queries.simulate({"query_text": "best running shoes"})
client.queries.dashboard()
client.queries.win_rate()

Pages

client.pages.bulk_generate({"segment_id": 3, ...})
client.pages.regenerate(id)
client.pages.build(id, {"template": "default"})
client.pages.publish(id)
client.pages.export(id, format="html")   # "tsx" | "html" | "json"
client.pages.query("running shoes")

Pagination

# Single page (dict with count / next / previous / results)
page = client.segments.list({"page": 1, "page_size": 50})
print(page["count"])

# Iterate all items transparently
for segment in client.segments.iterate():
    process(segment)

Errors

from segops_admin import SegOpsApiError

try:
    client.segments.get(9999)
except SegOpsApiError as exc:
    print(exc.status)   # 404
    print(exc.body)     # {"detail": "Not found."}

Idempotency

All mutating operations (create, recompute, export, etc.) automatically send a unique Idempotency-Key header. This is forward-compatible with the upcoming server-side idempotency storage (24h replay window) — the SDK sends the header today even before the server honours it.

Retries

The client retries on 429 and 5xx responses with exponential backoff (default 3 retries, cap 30s). Set max_retries=0 to disable.

client = SegOpsAdmin(api_key="sk_...", max_retries=5)

Webhook Verification

from segops_admin.webhook import verify_webhook

raw_body = request.get_data()
sig = request.headers.get("X-SegOps-Signature", "")
if not verify_webhook(raw_body, sig, os.environ["SEGOPS_WEBHOOK_SECRET"]):
    abort(401)

SegOps signs the raw request body with HMAC-SHA256 and sends X-SegOps-Signature: sha256=<hex>.

CLI

# Install exposes the `segops-admin` command.
pip install segops_admin

export SEGOPS_API_KEY=sk_...
export SEGOPS_API_URL=https://api.segops.ai/api  # optional

segops-admin segments list
segops-admin segments recompute 12
segops-admin products import products.csv
segops-admin pages export 8 --format=html
segops-admin --help

All output is JSON; exit code 0 on success, 1 on API error, 2 on usage error.

Configuration

SegOpsAdmin(
    api_key="sk_...",
    base_url="https://api.segops.ai/api",  # optional override
    max_retries=3,                          # default 3
)

License

MIT

Metadata

Release files for segops-admin 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for segops-admin 0.2.2
File Size Uploaded
segops_admin-0.2.2.tar.gz 12.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for segops-admin 0.2.2
File Interpreter ABI Platform
segops_admin-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 28.2 kB

Release files / segops_admin-0.2.2.tar.gz

Download URL segops_admin-0.2.2.tar.gz
Size 12.1 kB
Tags Source
SHA-256 checksum
How to use checksums
0e993aa6f9b4efebbaaf7c6f7cbc8946d654a580f690b89c3d72586d157f0cd1
BLAKE2b-256 checksum
How to use checksums
473a0dcc58f6288ad1f9a4955da1ff27095031ffcc3bea44bc1eaf7dc596c874
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Release files / segops_admin-0.2.2-py3-none-any.whl

Download URL segops_admin-0.2.2-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
48d76df870c2d1a9822aaa492739b41d2bcafacd5c6e04e7823ccc21b634f0df
BLAKE2b-256 checksum
How to use checksums
18c7549f65cd854ed3ea53caa1e311d669af331032ff6772331e74e6cd9c886e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page