eigenpal
Trigger and inspect Eigenpal automations from Python.
Install
pip install eigenpal
Requires Python 3.10+. Get an API key at studio.eigenpal.com -> Settings -> API Keys.
Quick Start
import os
from pathlib import Path
from eigenpal import EigenpalClient
client = EigenpalClient(api_key=os.environ["EIGENPAL_API_KEY"])
result = client.run_and_wait(
"workflows.extract-invoice",
input={"contract_document": Path("contract.pdf")},
)
print(result.finished, result.output)
target accepts a bare workflow ID such as wf_abc, or a typed target such as workflows.<id-or-slug> or agents.<slug>. Slugs need the prefix because workflow and agent slugs can overlap.
Automations
Workflows and agents are exposed as automations.
listing = client.automations.list(search="invoice", folder_id="fldr_…")
automation = client.automations.get("workflows.extract-invoice")
client.automations.move("workflows.extract-invoice", folder_path="billing/invoices")
client.automations.delete("workflows.extract-invoice")
list(folder_id="null") returns unfiled YAML workflows at the tenant root. Agent automations have no folder model.
Workflow delete archives the automations parent and keeps execution history. Agent delete removes the agent implementation and history, matching the dashboard, with best-effort leftover storage cleanup.
Folders
Workflow and template trees are a first-class resource. Nested agent directories in Git are source organization only.
tree = client.folders.list(type="workflow", tree="true")
folder = client.folders.create(name="invoices", type="workflow")
client.folders.update(folder.id, name="billing")
client.folders.delete(folder.id) # unfiles workflows; does not delete them
Runs
started = client.run("agents.invoice-agent", input={"invoice": Path("invoice.pdf")})
run = client.runs.get(started.id, expand=["usage", "execution"])
usage = client.runs.usage(started.id)
steps = client.runs.steps(started.id)
events = client.runs.events(started.id)
trace = client.runs.trace.get(started.id)
client.runs.cancel(started.id)
client.rerun(started.id, wait_for_completion=60)
List calls use the same run API for workflows, agents, manual runs, and eval runs:
recent_failures = client.runs.list(
type="workflow",
status="failed,cancelled",
limit=50,
)
Files And Artifacts
Use client.files for reusable upload-first blobs. When referenced by a run input, Eigenpal snapshots the file into run-scoped artifacts.
uploaded = client.files.upload(Path("contract.pdf"))
started = client.run(
"workflows.extract-invoice",
input={"contract_document": {"$fileId": uploaded.id}},
)
artifacts = client.runs.artifacts.list(started.id)
content = client.runs.artifacts.download(started.id, artifacts.artifacts[0].path)
You can also pass a Path, file handle, or {"content": bytes, "filename": str, "mime_type": str} directly to client.run; the SDK sends multipart form data automatically. Durable run inputs and dataset examples store scoped {"$file": "input/..."} artifact refs after ingestion.
Errors
Every non-2xx response raises a typed subclass of EigenpalError:
| HTTP | Class |
|---|---|
| 400 | EigenpalValidationError |
| 401 | EigenpalAuthError |
| 403 | EigenpalForbiddenError |
| 404 | EigenpalNotFoundError |
| 429 | EigenpalRateLimitError |
| 5xx | EigenpalServerError |
| timeout | EigenpalTimeoutError |
Reference
| Topic | What is in it |
|---|---|
| Automations | List, inspect, move, delete, versions, triggers, folders. |
| Runs | Start, poll, cancel, rerun, usage, steps, events, traces, reviews. |
| File inputs | Multipart upload from Path, file handle, or bytes. |
| Errors | Typed exceptions, retries, request ids. |
| Configuration | API key, base_url, timeouts, headers. |
| Full API reference | Every method, generated from OpenAPI. |
License
Apache-2.0.
Metadata
Release files for eigenpal 0.20.54
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| eigenpal-0.20.54.tar.gz | 155.6 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| eigenpal-0.20.54-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 628.0 kB
Release files / eigenpal-0.20.54.tar.gz
| Download URL | eigenpal-0.20.54.tar.gz |
|---|---|
| Size | 155.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
48df87c269099287bae74d052ddbd1b2535530098a0aee9b57f67176027b9122
|
|
BLAKE2b-256 checksum How to use checksums |
8869f4e9f03aad844248bf752d457500954c1d91d6276aa9003b748801778c1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / eigenpal-0.20.54-py3-none-any.whl
| Download URL | eigenpal-0.20.54-py3-none-any.whl |
|---|---|
| Size | 472.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a5b986ba8d91c25aabe237879920b951a808868ef64731f13deb07518d3806d
|
|
BLAKE2b-256 checksum How to use checksums |
a08d894820e51d1c181d7a042166622fd5a7534b610e3eb6c49cbc8643b41e71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logSecurity for eigenpal 0.20.54
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for eigenpal-0.20.54.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.