Changelog
Python SDK version history. Tracks the `symagedocs` package on PyPI.
This page tracks the Python SDK. Versions correspond to sdk-vX.Y.Z git tags.
v1.0.5 Latest
June 15, 2026
Added
- Sharded dataset packaging — Jobs under 2 GiB uncompressed continue to produce a single
dataset.zip; larger jobs now produce apreview.zipplus boundedshards/shard_N.zipfiles, lifting the previous single-archive ceiling (STAX-1730). bundle_layoutonJobSummary— TheGET /api/v1/jobslist endpoint and the SDK'sJobSummarymodel now includebundle_layout, so callers can distinguish single-layout from sharded jobs without a second detail fetch (STAX-1766).- Form
tagsfield — Forms now carry an additivetags: list[str]field for multi-category filtering; the existingcategoryfield is unchanged andtagsdefaults to[category]for all existing forms (STAX-1963).
Changed
- Manifest
annotation_coveragerename — The sharded top-level manifest field previously namedformat_coverageis nowannotation_coverage, more accurately reflecting that the values describe annotation kinds (e.g.funsd,bio,yolo,coco) rather than output file formats (STAX-1733). - Canonical job serialization — The public
/api/v1/jobslist and detail responses are now emitted from a single shared serializer, eliminating field drift between the list and detail surfaces and between the server and SDK models (STAX-1992).
Fixed
- Dataset endpoints returning 404 — The manifest, preview, annotations, and shards endpoints added in STAX-1730 were mounted only on the internal router; they are now correctly delegated through the public
/api/v1surface, sodownload_dataset()and related SDK calls no longer 404 (STAX-1734). - Dataset-level annotations dropped in sharded mode — Sharded jobs were missing donut metadata splits, COCO surface splits, and YOLO
classes.txt/data.yaml/ split lists; the dataset-level annotation post-processing step now runs for all job layouts (STAX-1731, STAX-1732). - Unknown
output_formattokens rejected at submission — Values such as bare"png"(canonical tokens are"png_typed"/"png_handwritten") previously passed validation, persisted on the job row, and produced zero output files; the API now returns a validation error at submission time (STAX-1764). - PNG output without a matching PDF rejected at submission — Submitting a PNG-only
output_formatslist via the API or SDK previously produced a successful-looking job with zero images emitted; the validator now requires a matchingpdf_*token to be present (STAX-1746). - Invalid output-config values rejected at the API boundary — Several job-config fields (including
yolo_mode) previously accepted malformed values, silently coerced them to a default, and emitted mislabeled output; they are now rejected at submission with an explicit error (STAX-1924). - Dataset CSV
item_indexjoin key — Theground_truth/data.csvemitter was omitting a usable join key, making per-row linking to annotation files unreliable;item_indexis now correctly populated (STAX-1913). - COCO/YOLO bounding-box coordinates under geometric degradation — COCO and YOLO bboxes were emitted in pre-augment pixel space and never reprojected through the per-page transform sidecar, causing coordinate drift of roughly 28 px, ~1°, and 2–3% scale under Scanned/Faxed/Phone-Photo degradation modes;
images[].widthandimages[].heightin COCO now reflect actual rendered dimensions (STAX-1882, STAX-1883, STAX-1884). - Stale SDK example scripts — Two of the four shipped example scripts referenced the old
"bundle"download format (renamed to"dataset"in STAX-1730) and used incorrect client symbols; all examples now match thev1.0.5SDK surface (STAX-1994, STAX-1976). - Server-authoritative job cancellation — The cancel API now drains the in-flight SQS message and completes the cancel finalizer — including credit refund — before returning, so the response reflects
status: CANCELEDimmediately rather than leaving the job inCANCELINGindefinitely (STAX-1709).
v1.0.4
May 15, 2026
Added
- Webhook management — The full webhook lifecycle is now SDK-callable: create, list, and delete webhooks via
/api/v1/webhooks; payloads are signed with HMAC for verifiability, and a per-user cap of 20 active webhooks is enforced server-side (STAX-1576). - Locked SDK dependencies —
sdk/python/poetry.lockis now committed, giving installers a fully reproducible dependency closure.
Fixed
- Parallel rendering restored — Multi-PDF-format and non-coherent bulk jobs were silently clamped to 1 worker regardless of available cores since
v1.0.2; the subprocess worker now iteratespdf_formatsand honourscoherence_mode, restoring full parallelism (STAX-1707).
v1.0.3
May 12, 2026
Changed
- Single-sourced
__version__—symagedocs.__version__now reads fromimportlib.metadatainstead of a hard-coded literal, eliminating tag/version drift (STAX-1635, STAX-1563).
v1.0.2
May 8, 2026
Added
- Idempotency + cancel on
client.generate— Generation jobs accept an idempotency key and can be cancelled mid-flight; per-request quantity cap was lifted (STAX-1600). - Typed augmentation kwargs — Augmentation knobs are surfaced as typed SDK keyword arguments, kept in sync with the backend via a drift test (STAX-1524).
- Single-bundle downloads — One bundle per job replaces per-format zips; downloads redirect to presigned S3 URLs (STAX-1414, STAX-1416).
- Always-on per-file JSON/CSV in bundles — Bundles now always include per-file JSON and CSV as foundational ground truth (STAX-1462).
- Donut ML output format — Behind the
ml-output-formats-enabledflag at the API boundary (STAX-1349).
Changed
- SDK parity with public API — Closed gaps so every documented public endpoint has a corresponding SDK method (STAX-1523);
BioTokenaccepts the currenttagpayload (STAX-1528); end-to-end ML training parity for batch flows (STAX-1520, STAX-1521, STAX-1522). - Async bundle build — Bundle assembly moved off the request path to prevent 504s on 1K-item batches (STAX-1541).
- Form catalog rename —
irs_w2_2024renamed toirs_w2_2025to match the 2025 PDF template (STAX-1479). - Validation moved server-side — Statistical validation runs in worker finalize;
/validateis no longer exposed as an OOM vector (STAX-1438).
Removed
- Legacy
/api/v1/batches/*surface — Batch operations consolidated onto/jobs. Useclient.generatewith idempotency keys instead (STAX-1600).
v1.0.1
April 24, 2026
Added
- Multi-form coherent generation — Generate multiple forms for a single coherent identity (e.g. W-2 + 1040 for the same person) via the public
/generateendpoint (STAX-1170). - Initial Batch API + presigned downloads + webhooks — Batch endpoints under user-level
sk_live_*keys with cursor pagination, presigned S3 download URLs, and HMAC-SHA256-signed webhook events (job.completed,job.failed,batch.completed,batch.exhausted). Note: the dedicated batches surface was removed in v1.0.2; useclient.generate.
v1.0.0
Released March 25, 2026
Initial public release of the symagedocs Python SDK.
Added
- Synchronous and async clients —
ClientandAsyncClientwith resource-style namespaces (forms,generate,identities,tabular,account,pricing). - Bearer authentication — User-level API keys with the
sk_live_prefix; created in the web app account portal at/account?tab=api. - Typed exceptions —
AuthenticationError,PermissionDeniedError,NotFoundError,ConflictError,InsufficientCreditsError, etc., one per HTTP status. - Automatic retry — Exponential backoff on
429and5xxresponses. - Convenience helpers —
wait()for job polling,iter_training_examples()for ML consumers,download_urls()for presigned-URL handling. - Optional
[progress]extra — Addstqdmprogress bars for long jobs.