Python Client 201: Your first System
Get a documented CAD model onto the Istari Digital Platform: a new System whose baseline branch holds a README, the model, and the Python that generated it. The same commands work for an AI coding agent.
Everything here runs from one commented script: you download it, it makes the API calls for you, and it prints the ids and a link to what it created. There is no Python to write yet — the point is to have a real System you can click through, and a worked example you can read, before you start writing code of your own.
Time: about five minutes — the script itself takes under a minute; the rest is installing the client and generating a Key.
When you want to make the calls yourself, Python Client 202 is the hands-on lesson: you write the script, register a spreadsheet, run two extractions, and compare what changed. For your own scripts, SDK setup covers installing the package and building a Client.
What the script does
One run, five steps:
- Connects using the credential named in
istari.env— nothing is passed on the command line. - Generates the demo files in your working directory: it writes
make_bracket.py, runs it to producebracket.stl, and composes00-README.html. With--fileit uploads your CAD instead of generating one. - Uploads each file as a Resource of type
model, so the web app renders it in place instead of offering a download. - Creates a System and commits all three Resources onto its
baselinebranch, in this layout:
| Where it lands | What it is |
|---|---|
00-README.html (root) | Front door. Click it — it renders in place and links to the two files below. |
10-Model/bracket.stl | Parametric mounting bracket (binary STL). The web app shows STL as an interactive 3D view. |
10-Model/make_bracket.py | Pure-Python generator for the STL. |
- Prints JSON with
system_id, each Resource id, andui_link— the web-app URL to open.
The README is versioned on the branch with the model, and the folder is part of the commit. The README links use Resource ids, so they keep working when you upload a new revision. Change the folder with --folder.
Download
- istari_quickstart.py — commented
istari-digital-clientcalls. Prints no credential.
SHA-256: 780caa848a1965097c452103d888d4253c2b7036e1d814104386cd619e512f53 — compare with shasum -a 256 istari_quickstart.py (macOS/Linux) or Get-FileHash istari_quickstart.py (PowerShell), or read the file before running it.
Stable URL for agents and curl: /quickstart/istari_quickstart.py on this docs origin.
Credentials
Python 3.10 or newer (python3 --version), network access, and a credential. In an empty folder, create istari.env:
ISTARI_DIGITAL_API_URL=<API URL from Endpoints on Developer Settings>
IDENTITY_SERVICE_SECRET_FILE=/absolute/path/to/the-key-file-you-downloaded.json
In the Istari Digital web app, open avatar → Developer (example: https://demo.istari.app/settings?tab=developer-settings). Click Generate Key, then Download credentials — the key is shown once. Details: Developer Settings — Keys.
Personal Access Tokens are deprecated (July 2026). If your instance still issues one, use ISTARI_DIGITAL_REGISTRY_URL and ISTARI_DIGITAL_REGISTRY_AUTH_TOKEN instead.
Keep istari.env and the key file on disk. Do not put a key or token on the command line, in a prompt, or in a chat log.
Three commands
macOS / Linux
pip install "istari-digital-client>=13" cryptography PyJWT
curl -fsSL https://docs.istaridigital.com/quickstart/istari_quickstart.py -o istari_quickstart.py
python istari_quickstart.py --env istari.env
Faster: with uv
uv venv && source .venv/bin/activate && uv pip install "istari-digital-client>=13" cryptography PyJWT
curl -fsSL https://docs.istaridigital.com/quickstart/istari_quickstart.py -o istari_quickstart.py
python istari_quickstart.py --env istari.env
Windows (PowerShell)
py -m pip install "istari-digital-client>=13" cryptography PyJWT
Invoke-WebRequest https://docs.istaridigital.com/quickstart/istari_quickstart.py -OutFile istari_quickstart.py
py istari_quickstart.py --env istari.env
If you already downloaded the script from the link above, skip curl / Invoke-WebRequest. On a local or on-prem docs site, replace https://docs.istaridigital.com with that origin.
The last command prints one line per step, then the JSON. Open ui_link. python istari_quickstart.py --help lists every flag.
Your model, a revision, clean-up
python istari_quickstart.py --env istari.env --file path/to/your_part.stl --script path/to/make_your_part.py
python istari_quickstart.py --env istari.env --file wing.step
python istari_quickstart.py --env istari.env --system-name "Bracket study" --folder "10-Model"
Edit make_bracket.py, regenerate, and upload a new revision of the same model:
python make_bracket.py --length 100 --hole 8 --out bracket.stl
python istari_quickstart.py --env istari.env --revise <model_id from the JSON> --file bracket.stl --version-name v2
Undo a run (reversible in the web app):
python istari_quickstart.py --env istari.env --archive <system_id>
Upload things people should open from the tree as models (resource_type="model"). Folder paths: Folders in the Python client. Web-app URLs: Linking to the web app.
What the script uses
istari-digital-client 13.x: the Istari facade for create/upload (beta in the package) and Client for the folder commit. SDK setup is the Client / Configuration reference for your own code. Agent recipes: Advanced agentic use.
Where next
- Python Client 202 — First digital thread — write the script yourself, run an extraction, and diff two revisions.
- V3Client quick start — the unified resource API.