# Postage batches and re-seeding

Uploads to Swarm are paid for with **postage batches** — pre-funded
allowances of chunk-storage capacity bought on-chain. Every chunk
stored in the network carries a stamp linking it to a batch; if the
batch expires, the chunks become unstamped and storer nodes
eventually drop them.

This matters for retrievability because:

- a reference that was fine yesterday can become unretrievable if
  the batch it was uploaded with expired and storers garbage-
  collected the chunks;
- re-uploading the same content (re-seeding) refreshes the stamp
  but does *not* automatically use the original batch — you supply
  a current batch.

## What `bee-check --reseed` does

```bash
bee-check <ref> --reseed --stamp <batch-id> --bee https://my-bee.example
```

Two API calls, in order:

1. **`GET /stamps/{batch-id}`** on the target Bee — pre-flight check.
   Verifies that the batch:
   - is known to this Bee (`exists`)
   - is `usable` (chain has confirmed enough blocks)
   - has a TTL ≥ 24h (warns otherwise — re-seeding from a batch
     that's about to expire would be wasted effort)

2. **`PUT /stewardship/{ref}`** with the `swarm-postage-batch-id`
   header — instructs Bee to re-upload all chunks reachable from
   `ref`, stamped with this batch. Bee fetches anything it doesn't
   have locally, hashes everything, and pushes it back into the
   network with fresh stamps.

The pre-flight step is what makes `--reseed` safe to wire into a
script: it refuses to fire the re-upload if the batch is unhealthy,
so you don't burn API time on a doomed operation.

## What you need before you can re-seed

- A **postage batch** you control on the target Bee, currently
  usable, with enough TTL left to be worth using.
- The reference you want to re-seed — and **the chunks must be
  reachable from somewhere in the network or locally pinned**. Bee
  re-fetches chunks during reupload; if no peer has them and the
  local store doesn't either, the chunks can't be re-stamped and
  the upload will be incomplete.

## When to re-seed

- Approaching batch expiration of an important upload.
- After a stewardship `partial` or `unretrievable` and you suspect
  garbage collection.
- After moving content between Bee nodes ("transferred" content
  needs to be re-stamped from the new node's perspective).

When *not* to re-seed: if stewardship says `false` because the
content was *never* pushed (deferred upload, network split). Re-
seeding requires retrievability of the source chunks — see the
[lost-upload cookbook entry](../cookbook/lost-upload.md) for that
case.

## See also

- [Swarm docs — Postage stamps](https://docs.ethswarm.org/docs/concepts/incentives/postage-stamps)
- [Swarm docs — Buying a stamp](https://docs.ethswarm.org/docs/learn/technology/contracts/postage-stamp)
- [Bee API — `GET /stamps/{id}`](https://docs.ethswarm.org/api/#tag/Postage-Stamps)
