changelog
Changelog
What changed in the API from one wxrks release to the next: new endpoints and fields, deprecations, and anything that could break an existing integration. Each release lists its breaking changes first.
October 2026
Nine behavior changes (see Changed): WORK_UNIT_STATUS_CHANGE webhooks send the status the work unit moved to in new_status, a TM export limited to work units waits for pending translation memory writes and can end TM_WRITES_PENDING, an import into a work unit where another import is still running is now rejected with 409, an import that writes no segment now ends IMPORTED instead of ERROR, TASK_STATUS_CHANGE webhooks send previous_status as a status code, tasks have a new PAID status after INVOICED, a user's bank details moved from their own fields to custom fields, custom field values follow each field's scope, and a GitHub repository configuration can no longer repeat another's repository, config path and base branch.
New
- TM updates of a work unit: Export Work Unit TM Updates exports as TMX, per translation memory, the entries whose current translation the work unit saved, and Get Work Unit TM Update reports each export with its download link and how many entries it holds. To sync a translation memory on every delivery, call it on a
WORK_UNIT_STATUS_CHANGEwebhook whosenew_statusisDELIVERED. See TM updates. - Segment locks and comments: Lock or Unlock Segments, List Work Unit Comments and Create Segment Comment.
- Resolved comments: List Work Unit Comments returns
resolvedAtandresolvedByon each comment whose thread was resolved in the editor. Both are left out while the thread is open. - Bilingual XLIFF files mark locked segments (
translate="no"andbwx:locked="yes"on their<trans-unit>) and carry each segment's comments as<note>elements. - Bilingual XLIFF files carry every segment's status:
bwx:lockedandbwx:confirmed(yesorno) on each<trans-unit>, and each<note>has its creation time in UTC inbwx:date. applyStatusFromFile: Import Kit to Work Unit, Import File to Work Unit and Bulk Import Kit can lock, unlock, confirm and unconfirm segments from the file'sbwx:lockedandbwx:confirmed, and add its notes as comments. It defaults tofalse. A bulk import changes locks in the work units on which you have Lock Segments, those ofworkUnitUuidsor, without it, any of the project. See Bilingual file round trip.- Download Work Unit Bilingual File returns one work unit's XLIFF in the response, without an export job.
- Import File to Work Unit uploads a bilingual file and starts its import in one call.
- Imports have an id: Import Kit to Work Unit and Import File to Work Unit return the import, and Get Work Unit Import reports it, with the reason when it fails and how many segments it wrote, confirmed and skipped.
updateTm: an import can leave the project's translation memories alone.- Webhook events
WORK_UNIT_IMPORT_FINISHEDandTRANSLATION_KIT_JOB_FINISHEDtell your server when an import or a translation kit job ends, so you need not poll. See Webhooks. - Webhook requests are signed when the webhook has a secret:
X-BWX-SignatureandX-BWX-Timestamplet your server check that a request comes from wxrks, unchanged and recent. See Webhooks. - Upload URLs from Get Import Kit Upload URL say when they expire (
urlExpiresAt) and list the headers to send (headers). - Custom fields have a scope: the records a field applies to, and who may see and fill its values. List Custom Fields returns each field's
scope, with the names of the records it references inscopeNames, and filters by name, type, entity, default value and scope setting. To a caller who may not edit custom fields, it lists only the fields they see, withoutscopeandscopeNames, and ignores the scope filters. includeCustomFields: List Tasks, List Org Units, List Glossary and List Translation Memory (TM) can leavecustomFieldsout of the response. It defaults totrue.restrictOwnAccount: List Org Units, List Glossary and List Translation Memory (TM) can list only the records of the caller's account.includeComments: Request Export Project can add aSegment Commentscolumn to the XLSX of an export kit (locKitTypeJobXLSXorALL), with every public comment of each segment. It defaults tofalse; importing the file ignores the column.
- Get Project Work Unit returns one work unit of a project by its UUID, with its progress.
- Rename Logfile renames a logfile. Logfile analyses return
previousName,renamedByandrenamedAt, empty until the logfile is renamed. - Guides: Bilingual file round trip, Segments and locks, Webhooks and Creating projects from files.
- Fields with the right spelling:
targetLocalesin logfile analyses,updatedAtin MT settings andtaskUuidsin Bulk Assign Tasks to User. The misspelledtargetsLocales,updateAtandtasksUuidsare still accepted and sent with the same value, and are deprecated until the next API version. projectUuid: withclientUuid, List Workflows also lists the org unit's workflows to a vendor who holds a task in that project of the org unit.- Service provider payments: an account linked to a service provider account in the app hands it the payables of the org units the link covers, to approve and pay, including payables created with Create Payable for an Account. The account no longer approves those payables itself: Approve Payable rejects them with
422, and Cancel Payable rejects them with422once the service provider is paying them. List Payables and Get Payable returnserviceProviderAccountUuidandserviceProviderAccountNameon such a payable, and leave both out when the account pays the payable itself. serviceProviderAccountUuidsandwithoutServiceProvider: List Payables and Payable Summary can keep only the payables those service provider accounts approve and pay, or only the payables the account pays itself. Sent together, a payable that matches either one is kept.serviceProviderAccountUuid: Import Payables from Spreadsheet (query parameter) and Import Payables from JSON (body field) hand the imported payables to that service provider account to approve and pay. The account needs an accepted link with it; without one, the import is rejected with422before it starts.subUser: List Users, Create User and Get User return whether a user is a sub-user.- Project Routing Status lists
fixedSegments,remainingSegments,skippedSegmentsandunfixedSegmentsin its response. They belong to the progress object shared with the tag mismatch fix, and this endpoint always returns them asnull. defaultFilterScope: a project resource's file parameters say whether itsdefaultFilteris a filter setting of the org unit (ORG_UNIT) or of the account (ACCOUNT), since an org unit can keep its own copy of an account filter under the same name. Change Project Resource Params accepts it withdefaultFilter. It is optional: without it, the filter is saved by name as before. It is left out when the resource has no default filter.
Documented
- The import parameters of Import Kit to Work Unit and Bulk Import Kit: their defaults, what each combination writes and confirms, and what every import does whatever the flags (translation memory, progress, skipped segments).
- Status values: the import statuses of Check Work Unit Import Status, the job statuses and job types of Check Translation Kit Job Status, and the status fields of a work unit.
- Export parameters of Request Export Project and Bulk Source Files: which work units a job covers, that
locKitTypeJob: XLIFFlimits a kit to its XLIFF files, and the accepted shared-link expirations. - Get Import Kit Upload URL: the URL is valid for 60 minutes and the upload must send the encryption headers it lists.
- Bulk Delete Work Units: the project must be a draft or continuous project.
- Create Receivable:
contactUseris a user of the org unit or of its organization. - Delete Translation in TU answers
404when the TU has no translation in that locale. - Create Webhook: how requests are signed with the webhook's secret (HMAC-SHA256 in
X-BWX-Signature), the validation request, the accepted event types, and thatactiveis ignored. - Paged lists document their defaults:
page0 andsize50. - Search Terms (Term Recognition):
nameModifiedByisnullwhen no change to the term recorded who made it, as on a term never edited since it was created. - ZIP resources: Upload Project Resource Content stores a
.zipas one file. Extract ZIP Resource adds the files inside it as resources, with their folders inpath, and Get ZIP Extraction Status and Cancel ZIP Extraction follow and stop it.
Changed
WORK_UNIT_STATUS_CHANGEwebhooks send innew_statusthe status the work unit moved to. Before,new_statuswasDELIVEREDfor every change made through a status update, and for a delivery awaiting the client's confirmation, which now reportsDELIVERED_WAITING_CONFIRMATION. If your integration acts onDELIVERED, it no longer runs on changes that were not deliveries.- A TM export limited to work units (Export TM with
projectId) isSCHEDULEDfirst: it waits until the translations still on their way to the translation memory have been written, then runs. After two minutes it endsFAILEDwithfailureReasonTM_WRITES_PENDING, and can be requested again. Get TM Job reportsSCHEDULEDlike the other running statuses. - Tasks have a new status,
PAID. A task moves fromINVOICEDtoPAIDwhen its payable is paid, and back toINVOICEDif the payment is reverted. Tasks already invoiced on a paid payable were moved toPAID. It can appear wherever the API returns a task status: thestatusof a task, in tasks and payables, and thetaskStatusof a work unit, in projects, work units and receivables. If your integration treatsINVOICEDas the last status, or rejects values it does not know, acceptPAID. - A user's bank details are User custom fields (
Bank Code,Bank Name,Account Number,Bank BranchandBeneficiary Name) incustomFields. Users no longer have the fieldsbankCode,bankName,bankAccount,bankBranchandbeneficiaryName: Create User ignores them, and a user in a request or response no longer carries them. If your integration reads or sends bank details, usecustomFields. - Custom field values follow each field's scope. Records and lists return in
customFieldsonly the values the caller may see. Update Custom Fields applies the values the caller may fill and keeps the other values of the record as they were. A value the caller may not fill is rejected with403, unless it is the one the record already holds, and a field hidden from the caller is always rejected; it is open to any user who may update the record, where before it required a manager role. - One import runs at a time in a work unit: while one runs, another import into the same work unit is rejected with
409. Before, both ran and the second overwrote the status of the first. - An import of a valid file that writes no segment, for example an unchanged file imported with
confirmOnlyChangeSegments, the same file sent again, or a file whose segments are all locked, endsIMPORTEDwithsegmentsUpdated0, in Get Work Unit Import, Check Work Unit Import Status and theWORK_UNIT_IMPORT_FINISHEDwebhook. It endedERRORwitherrorNOTHING_UPDATED, which is no longer reported.ERRORnow means the file was rejected. - Upload URLs are valid for 60 minutes, as requested; they expired after 10.
TASK_STATUS_CHANGEwebhooks sendprevious_statusas a status code, such asPENDING_ACCEPTANCE, likenew_statusandPROJECT_STATUS_CHANGE. It was sent as a label, such asPending Acceptance.- Lock or Unlock Segments changes every segment in the call or none: a segment it cannot change (no target, over its hard character limit, or already decided in the next workflow step) is rejected with
422before anything changes. Before, such segments were skipped with204, and a call that did change segments could still answer422. resetCostof Bulk Delete Work Units is optional and deprecated: it never had an effect, and it will be removed in the next API version.- Search Terms Based on a Segment works without
targetLanguage: each term found comes withsourceTermonly. Before, a segment with a matching term answered422. - Upsert Repository Configurations rejects a repository configuration with the same repository,
configPathandbaseBranchas another of the GitHub configuration, even with a differentprojectTag, and saves none of the list. Before, it was saved, and Delete Repository Configuration then failed for both.
Corrected
- File uploads are documented as
multipart/form-data, with the form fields they take. - Resolve Shared Link is documented as the redirect it answers.
- List Project Work Units documents the fields it returns.
- List Project Work Units sorted by
taskStatus,assignee,dueDateordeliveryDatereturns each work unit once, ordered by the lowest value among its tasks. A work unit with several tasks, such as a split file, came back once per task and counted that many times intotalElements. importingCreationDateof Check Work Unit Import Status is documented as alwaysnull, and the segmentstatusof List Project Segments lists its values.- Enum values are documented as the API sends and accepts them, for example
PENDING_ACCEPTANCErather thanPending Acceptance. The API did not change: the values shown before were never accepted.
Baseline
The first version of this reference generated from the code that serves the API. Releases after it are listed above this entry.