---
title: "Cancel Walrus storage renewal"
method: DELETE
path: "/v4/data/storage/upload/{jobId}"
tags: ["Storage API"]
---

# Cancel Walrus storage renewal

`DELETE /v4/data/storage/upload/{jobId}`

/v4/data/storage/upload/{jobId}

**Soft cancel: 0 credits. Instant delete: billed via Walrus on-chain storage fees (same credit check as upload).**

Cancel renewal for a certified Walrus storage upload. Two modes are available:

*   **Soft cancel** (default, `instant=false`): marks the blob as `noRenewal=true`. The file remains on-chain until its current storage epoch expires (`walrusEndEpoch`), then decommissions naturally. No additional fee is incurred — the remaining prepaid epochs are simply not renewed.
*   **Instant delete** (`instant=true`): queues an immediate on-chain delete transaction. Requires sufficient Walrus storage credits (same check as upload). The Walrus worker executes the delete tx and the on-chain delete fee is charged to your Walrus storage balance afterward. Can be applied even if soft cancel was already set — it upgrades to instant.

Both modes are idempotent. The job must be in `CERTIFIED` status and not already decommissioned.

## Path parameters

- `jobId` string, required

## Query parameters

- `instant` boolean

## Response `200`

Renewal cancelled successfully.

- WalrusStorageCancelRenewalResponse — Response after cancelling renewal for a Walrus storage upload.
  - `jobId` string, required — The upload job ID.
  - `noRenewal` boolean, required — Always `true` — renewal has been cancelled.
  - `pendingInstantDelete` boolean — Present and `true` when an instant on-chain delete has been queued.
  - `renewalBillingStatus` 'active' | 'pending_initial_charge' | 'pending_renewal_credit' | 'pending_decommission' | 'pending_instant_delete' | 'decommissioned' — Billing and renewal lifecycle of a certified Walrus blob. - `active` — blob is live; renewal credits applied on schedule. - `pending_initial_charge` — certified but first-period credits not yet charged. - `pending_renewal_credit` — on-chain extend succeeded; scanner posts renewal credits. - `pending_decommission` — blob past its end epoch; worker will decommission. - `pending_instant_delete` — immediate on-chain delete queued by user. - `decommissioned` — blob has been removed from Walrus storage.
  - `walrusEndEpoch` integer — Walrus epoch at which the blob expires or was deleted.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized. Not valid or inactive subscription key present in the HTTP Header.
- `403` — Forbidden. The request is authenticated, but it is not possible to perform the operation due to logical error or invalid permissions.
- `404` — Upload job not found or does not belong to this API key.
- `500` — Internal server error. There was an error on the server during the processing of the request.

---

[API](https://skmtc.net/tatum/apis/blockchain-data.md) · [All operations](https://skmtc.net/tatum/apis/blockchain-data/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tatum/blockchain-data/revisions/8622ee4b8fae/schema)
