# StorageManagerUploadOptions

Defined in: [packages/synapse-sdk/src/storage/manager.ts:117](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L117)

Upload options for StorageManager.upload()

Extends CreateContextsOptions to inherit multi-copy provider selection.
Adds upload-specific options: explicit contexts, pre-calculated PieceCID, and abort signal.

Usage patterns:
1. With explicit contexts: `{ contexts }` - uses the given contexts directly
2. Auto-create contexts: `{ providerIds?, dataSetIds?, copies? }` - creates/reuses contexts
3. Use default contexts: no options - uses cached default contexts (2 copies)

## Extends

- [`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/)

## Properties

### callbacks?

> `optional` **callbacks?**: [`Partial`](https://www.typescriptlang.org/docs/handbook/utility-types.html#partialtype)\<[`CombinedCallbacks`](/reference/filoz/synapse-sdk/storage/type-aliases/combinedcallbacks/)\>

Defined in: [packages/synapse-sdk/src/storage/manager.ts:122](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L122)

Callbacks for both context creation and upload lifecycle

#### Overrides

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`callbacks`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#callbacks)

***

### contexts?

> `optional` **contexts?**: [`StorageContext`](/reference/filoz/synapse-sdk/storage/classes/storagecontext/)[]

Defined in: [packages/synapse-sdk/src/storage/manager.ts:119](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L119)

Pre-created contexts to use. If provided, other selection options are invalid.

***

### copies?

> `optional` **copies?**: `number`

Defined in: [packages/synapse-sdk/src/types.ts:386](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L386)

Number of storage copies to create (optional, defaults to 2)

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`copies`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#copies)

***

### dataSetIds?

> `optional` **dataSetIds?**: `bigint`[]

Defined in: [packages/synapse-sdk/src/types.ts:396](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L396)

Specific data set IDs to target. Each must be an active data set owned by
the caller. Mutually exclusive with `providerIds`.

Use this only when resuming into a known data set from a prior operation.
For first-time uploads to specific providers, use `providerIds` instead,
the SDK handles data set creation automatically.

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`dataSetIds`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#datasetids)

***

### excludeProviderIds?

> `optional` **excludeProviderIds?**: `bigint`[]

Defined in: [packages/synapse-sdk/src/types.ts:414](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L414)

Do not select any of these providers

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`excludeProviderIds`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#excludeproviderids)

***

### metadata?

> `optional` **metadata?**: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\>

Defined in: [packages/synapse-sdk/src/types.ts:367](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L367)

Custom metadata for data sets (key-value pairs).
Used to match existing data sets during provider selection.

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`metadata`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#metadata)

***

### pieceCid?

> `optional` **pieceCid?**: [`PieceCID`](/reference/filoz/synapse-sdk/synapse/interfaces/piececid/)

Defined in: [packages/synapse-sdk/src/storage/manager.ts:125](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L125)

Optional pre-calculated PieceCID to skip CommP calculation (verified by server)

***

### pieceMetadata?

> `optional` **pieceMetadata?**: [`Record`](https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkeys-type)\<`string`, `string`\>

Defined in: [packages/synapse-sdk/src/storage/manager.ts:141](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L141)

Custom metadata for pieces being uploaded (key-value pairs)

***

### providerIds?

> `optional` **providerIds?**: `bigint`[]

Defined in: [packages/synapse-sdk/src/types.ts:411](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L411)

Specific provider IDs to upload to. The SDK resolves or creates data sets
on each provider automatically. Mutually exclusive with `dataSetIds`.

This is the recommended way to target specific providers. Do not call
`createContext()` to resolve data sets first, pass provider IDs here
and the SDK handles the rest.

#### Example

**Upload to two specific providers**

```ts
await synapse.storage.upload(data, { providerIds: [4n, 9n] })
```

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`providerIds`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#providerids)

***

### signal?

> `optional` **signal?**: [`AbortSignal`](https://developer.mozilla.org/docs/Web/API/AbortSignal)

Defined in: [packages/synapse-sdk/src/storage/manager.ts:138](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/storage/manager.ts#L138)

Optional AbortSignal to cancel the upload.

With piece batching disabled, it cancels the store, the pulls to secondaries and the
commits (see CommitOptions.signal). An abort during the commits does not reject
with an AbortError directly: the upload throws a CommitError (cause: AbortError) when no
commit succeeded, or returns `complete: false` with the copies that already confirmed.

With batching enabled (the default), it cancels the store and pulls but not the shared
batch commit or its confirmation wait.

***

### withCDN?

> `optional` **withCDN?**: `boolean`

Defined in: [packages/synapse-sdk/src/types.ts:361](https://github.com/FilOzone/synapse-sdk/blob/2e357180d354970e2a091ff7ef0f3021c8357d4f/packages/synapse-sdk/src/types.ts#L361)

Whether to enable CDN services

#### Inherited from

[`CreateContextsOptions`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/).[`withCDN`](/reference/filoz/synapse-sdk/synapse/interfaces/createcontextsoptions/#withcdn)