Skip to content

API Changelog

Changes to what the API sends and accepts: new fields, exception types and levels, delivery behaviour, limits and removals. It covers the service itself, so it applies whether you use the Python client or call the HTTP API directly. Changes to the Python client alone are in its release notes.

Compatibility policy

  • Additive changes can arrive at any time. A new field in a message, a new enum value (an ask type, an exception type or level, a page type), a new optional form field, or a new header on a callback. Build your parser to ignore fields and enum values it does not know, rather than to reject the message.
  • Callback delivery is at least once. The same message can reach your endpoint twice; see Delivery rules.
  • Breaking changes are announced here before they take effect. Removing or renaming a field, changing a field's type, or removing an ask. Deprecated v1 ask types are removed after 90 days without use, as described in Upgrading from V1.
  • Where a change could break older clients, it is gated on the client version. The server sends it only to clients that report a version known to parse it, as noted in each entry.

Changes

2026-10-09: Confidence scores have one cut-off, and confidence_min is no longer applied

The confidence.score of dimensions, bores, chamfers, threads, radii, roughness and GD&T frames now means one thing: 1.0 when nothing about the reading is in doubt, 0.8 or above for a reasonable reading, and below 0.8 when the API found a concrete reason to doubt it, such as a tolerance on the drawing that could not be read or a roughness value no standard series contains. Clean readings score higher than before and doubtful ones lower, so a threshold set against the old scores should be reviewed; 0.8 is the one to use. Roughness read from the title block now carries a score too; it had none. The field and its type are unchanged.

The V1 VARIANT_MEASURES ask no longer drops measures below its confidence_min: every measure that was read is returned with its score. The parameter is still accepted. See Understanding Confidence Scores.

2026-10-06: BMP is not a supported format (documented)

BMP was listed among the supported formats and was never accepted: through read_drawing a BMP drawing ends in DRAWING_FILE_FORMAT_UNSUPPORTED, and the callback route answers 415. The accepted formats are PDF, PNG, JPEG and TIFF, and HPGL through read_drawing; the callback route takes PDF, PNG, JPEG and TIFF only and answers 415 for anything else. Nothing changes on the wire. See Supported File Formats.

2026-09-30: reason removed from the exception model

The optional reason field that the exception model gained on 2026-09-25 is removed. The API has never sent it: a READ_INCOMPLETE warning says that a read is incomplete, not why. Nothing changes on the wire. In the Python client, the field goes in the release after 2.8.0; code that reads exception.reason should stop doing so before upgrading. ask_type stays.

2026-09-25: READ_INCOMPLETE warning on COMPLETED

A read that finished with part of its output missing now says so: its COMPLETED message carries one exception with exception_level WARNING and exception_type READ_INCOMPLETE. WARNING is a new exception level, and the exception model gained two optional fields, ask_type and reason, which this warning leaves unset. The message stays successful and every result delivered stands. Sent only to requests reporting werk24 2.8.0 or newer, which no released client does yet. Requests without a client_version, such as direct HTTP API calls, are to receive it too; that is not in effect yet and will get its own entry here. See Incomplete reads.

2026-09-25: Callback requests are limited to about 4.6 MB (documented)

A request to /techread/read-with-callback carries the drawing in its own body, which is limited to 6 MiB after base64 encoding: about 4.6 MB for the whole request. The limit is not new; the docs previously quoted 10 MiB for this route. See Drawing File Size Limit.

2026-09-24: Callback delivery is retried, and carries X-Werk24-Delivery-Attempt

A callback POST that times out is now retried. A POST is tried up to 3 times in about 20 seconds when it could not connect, timed out, or was answered 408, 425, 429, 500, 502, 503 or 504. Every attempt carries the header X-Werk24-Delivery-Attempt (1, 2, 3), so a redelivery can be recognised: delivery is at least once. See Delivery rules.

2026-08-06: W24AskSheetAnonymization and W24AskSheetRebranding removed (documented)

Requests that still include these v1 ask types complete without a result for them. Use AskRedaction.

2026-07-16: DRAWING_PAGE_COUNT_TOO_LARGE (documented)

A redaction is refused for documents over 5 pages with this exception type. Sent only to clients reporting a version newer than 2.5.0. See Error Handling.