Skip to content

Python SDK

sympheny-toolbox is the official Python client for the Sympheny API. It exposes every documented REST endpoint as a typed method, validates requests and responses with Pydantic models, and handles authentication (login, token caching, refresh) for you.

Install

pip install sympheny-toolbox

Requires Python 3.11 or newer.

One API, sync and async

Every method exists on both Sympheny and AsyncSympheny with identical signatures — the sync client is generated from the async source, so the two can never diverge. These docs describe the async client once; every code example has a Sync / Async tab, and your choice persists across all pages.

Quickstart

Authenticate with your Sympheny account credentials, then reach the endpoints through resource groups on the client (client.projects, client.scenarios, …):

import asyncio

from sympheny_toolbox import AsyncSympheny


async def main() -> None:
    async with AsyncSympheny("you@example.com", "password") as client:
        projects = await client.projects.list()
        for project in projects:
            print(project.project_name, project.project_guid)


asyncio.run(main())
from sympheny_toolbox import Sympheny

with Sympheny("you@example.com", "password") as client:
    projects = client.projects.list()
    for project in projects:
        print(project.project_name, project.project_guid)

The client is a context manager; it closes its HTTP connection pool on exit. Outside a with block, call aclose() (async) or close() (sync) yourself.

Client options

Argument Default Description
username Sympheny account email address.
password Sympheny account password.
is_dev False Use the development environment instead of production.
base_url production URL Override the API base URL entirely (takes precedence over is_dev).
timeout 30.0 Request timeout in seconds.

Errors

Failed requests raise typed exceptions from sympheny_toolbox.errors, all subclasses of SymphenyError: AuthenticationError (401), PermissionDeniedError (403), NotFoundError (404), APIError (any other unsuccessful status, with status_code and body attributes), and UnexpectedResponseError (the response lacked the expected payload).

Where to go next

  • Workflows — end-to-end guides: create a scenario from Excel, run a solver job, and download the results.
  • SDK reference — one page per resource group, one section per method, each cross-linked to the REST operation it wraps.
  • Model reference — the Pydantic request/response models, grouped by resource.
  • REST API reference — the underlying HTTP API, if you need to call it directly.