> ## Documentation Index
> Fetch the complete documentation index at: https://metalayerlabs.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Submitting a batch of transfers (idempotently)

The points API accepts transfers in batches. For efficiency, try to completely fill your batches. This API expects you to provide a client generated `batchId` to uniquely identify this batch of transfers.

## Authentication

<ParamField header="Authorization" type="string" required>
  Bearer authentication header of the form `Bearer <token>`, where `<token>` is your auth token.
</ParamField>

## Path Params

<ParamField path="contractAddress" type="string" required>
  Contract address distributing the points.
</ParamField>

<ParamField path="batchId" type="string" required>
  `batchId` is a client provided string (max length 64). If a request fails,
  the request can be retried with the same `batchId`. If the `batchId` already
  exists, we return a 409.

  We recommend using a UUID as `batchId`.
</ParamField>

## Request

<ParamField body="pointType" type="string" required>
  Point type to distribute, can be `PHASE2_POINTS` or `PHASE2_GOLD`
</ParamField>

<ParamField body="transfers" type="Transfer[]" required>
  List of transfers to submitted as part of the batch.

  <Expandable>
    <ParamField body="toAddress" type="string" required>
      Points receiver
    </ParamField>

    <ParamField body="points" type="string" required>
      Amount of points to distribute to `toAddress`.

      Must be `>= MINIMUM_{pointType}_TRANSFER_SIZE` and must have decimal places `<= MAX_TRANSFER_DECIMALS`
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="secondsToFinalize" type="number">
  Number of seconds to wait before finalizing this batch, must be between
  `MINIMUM_FINALIZE_SECONDS` and `DEFAULT_FINALIZE_SECONDS`.

  If not present uses `DEFAULT_FINALIZE_SECONDS`
</ParamField>

## Response

<ResponseField name="success" type="boolean">
  Response status
</ResponseField>

<ResponseField name="batchId" type="string">
  Transfer batch `batchId` which was provided as a param.
</ResponseField>
