update_published_template
Sends an UPDATE of one of YOUR templates that is already PUBLISHED (approved) to human review, like the edit button of the website. The update waits parked and the live version stays visible and on sale exactly as it is until a person decides: if it is approved it replaces the live version, if it is rejected the live version simply stays. Send in fixes only the fields that change (same allowed values and limits as when publishing, all in the input schema); everything you do not send is kept from the live version. The licence and the cover image (bannerUrl) cannot be changed ([FIELD_NOT_EDITABLE]). A template with an EXCLUSIVE licence that has already been sold can never be updated ([EXCLUSIVE_SOLD]): the buyer keeps exactly the listing and the file they bought, and an update that was waiting when it sold is not applied. Updating also requires being able to sell, the same as publishing ([MEMBERSHIP_REQUIRED] otherwise). For a new deliverable, upload the ZIP with zip_upload_link and pass it in file: it only replaces the live ZIP if the update is approved, and without it the current ZIP is kept. useDraft: true takes the changes from the edit draft of THIS template. If an update is already waiting it answers [EDIT_PENDING]: wait for the decision, or repeat with replacePending: true to replace it. An update that changes nothing is refused ([NO_CHANGES]). A REJECTED template is fixed with resubmit_for_review instead ([NOT_APPROVED]), and one under review or being published answers [TEMPLATE_IN_PROGRESS]. DRY RUN: with dryRun: true it checks that the template is yours and published and which fields would change, without sending anything and without spending quota. The answer says how long the review usually takes (24 to 72 hours) and how you learn the result: by email for a person, by the template.reviewed webhook or my_templates (hasPendingChanges) for an agent account.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | OPTIONAL new deliverable: the ZIP you uploaded with zip_upload_link ({ blobUrl, pathname, filename, sizeBytes, uploadToken }). It waits with the update and only replaces the live ZIP if the update is approved; without it the current ZIP is kept. | |
| slug | Yes | Slug of YOUR published (approved) template (it comes from my_templates). | |
| fixes | No | Only the fields that change; whatever you do not send is kept from the LIVE (published) version. The licence CANNOT be changed and neither can the cover image (bannerUrl): sending a different value is rejected with [FIELD_NOT_EDITABLE]. Same rules and same limits as when publishing. Limits and required fields are the CURRENT ones on the platform: they are read when tools/list is answered and the admin can change them (ask for tools/list again; the validation error always carries the live figure). | |
| dryRun | No | DRY RUN. true = exactly the same validation and the same answer, with `dryRun: true` inside, but NOTHING is created, no quota and no code are spent and no previous order or template is touched. It is there to test an integration without spending. It is checked that the template is yours and PUBLISHED (not retired, not under review, without another update waiting unless you replace it), where the changes come from, which fields would change and the aspect ratio of the new images, with the same codes as the real update. NOTHING is sent, the edit draft is not deleted, the family lock is not taken and neither the AI pre-filter nor the provenance of the new ZIP is run, because they have quotas of their own: those are rehearsed with check_before_submit. | |
| useDraft | No | true takes the changes from the EDIT draft of THIS template (the one /vender leaves when you edit it; my_draft shows it with editing = this slug) and discards it once the update is sent; with `fixes` as well, those fields win over the draft. The answer says which one was used. | |
| warranty | No | ONLY agent accounts born from a wallet and ONLY with a new file: intellectual property warranty signed over the new ZIP (templateId = id of this template, hash = SHA-256 of the ZIP, signature = EIP-712 TemplateWarranty signature; bond_data with hash returns the message). | |
| replacePending | No | true REPLACES an update of this template that is already waiting for review (otherwise the call is refused with [EDIT_PENDING]). The waiting update is discarded entirely, its ZIP included: whatever you do not send now is taken from the LIVE version, not from it. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | Always true: a refusal travels as an error. | |
| url | No | Only in a real call: the public listing, which keeps showing the live version. | |
| slug | Yes | Slug of the template. | |
| dryRun | No | Only in a dry run: nothing was sent. | |
| newFile | No | The update carries a new ZIP, which only replaces the live one if the update is approved. | |
| inReview | Yes | true = the update is waiting for human review; false in a dry run. | |
| nextStep | No | Only for an agent account: what to poll while a person decides. | |
| resultBy | No | How the result reaches you. | |
| payoutNote | No | Only for a delegate: where the sales of what it publishes are paid. | |
| reviewNote | No | How long the review takes and how you learn the result (email for people and delegates, webhook or polling for agent accounts). | |
| pollSeconds | No | How many seconds it makes sense to wait before polling again. | |
| draftDeleted | No | The edit draft that was used was deleted once the update was sent (false in a dry run). | |
| instructions | No | Only in a dry run: what was checked and what was not. | |
| changedFields | No | Fields of the listing that the update changes compared with the live version (`video` included). In a dry run, those that differ among the ones you sent. | |
| notRunInDryRun | No | Only in a dry run: what was NOT run, by name, so that it is not taken as tested. | |
| correctionsFrom | Yes | Where the changes came from. | |
| fieldsFromDraft | No | Fields taken from the edit draft. | |
| fieldsFromInput | No | Fields that arrived in `fixes`. | |
| updateSubmitted | No | Only in a real call: this is an UPDATE of a published template, not a new submission nor a resubmission. | |
| estimatedReviewHours | No | Usual review time, in hours. | |
| liveVersionUnchanged | Yes | Always true: the published version is still visible and on sale exactly as it was until a person approves the update. | |
| replacedPendingUpdate | No | Only in a real call: there was another update waiting and this one replaced it. |