# checkAddPiecesFit

> **checkAddPiecesFit**(`options`): [`AddPiecesFitResult`](/reference/filoz/synapse-core/utils/type-aliases/addpiecesfitresult/)

Defined in: [packages/synapse-core/src/utils/add-pieces-fits.ts:94](https://github.com/FilOzone/synapse-sdk/blob/5989c4b03ed2fe4cf8b1ef29efe1d4ff1ad4c7bc/packages/synapse-core/src/utils/add-pieces-fits.ts#L94)

Whether a candidate piece list fits in one addPieces / createAndAdd message, and why not.

Same checks as [addPiecesFits](/reference/filoz/synapse-core/utils/functions/addpiecesfits/), but returns the failure reason. Invalid metadata is
reported with the index of the first bad piece instead of throwing.

## Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `options` | [`LimiterOptions`](/reference/filoz/synapse-core/utils/type-aliases/limiteroptions/) | [checkAddPiecesFit.OptionsType](/reference/filoz/synapse-core/utils/namespaces/checkaddpiecesfit/type-aliases/optionstype/) |

## Returns

[`AddPiecesFitResult`](/reference/filoz/synapse-core/utils/type-aliases/addpiecesfitresult/)

The fit result [checkAddPiecesFit.OutputType](/reference/filoz/synapse-core/utils/namespaces/checkaddpiecesfit/type-aliases/outputtype/)

## Example

```ts
import { checkAddPiecesFit } from '@filoz/synapse-core/utils'

const result = checkAddPiecesFit({ kind: 'addPieces', dataSetId, pieces })
if (!result.fits && result.reason === 'invalid-metadata') {
  console.log('bad piece at', result.index)
}
```