> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agent-drop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Confirm Transfer: Mark a Transfer Received

> Confirm an AgentDrop transfer after every file is uploaded to its presigned URL. Flips the transfer from pending to active so the recipient can download.

After uploading all files to the presigned URLs returned by [presigned-upload](/api-reference/presigned-upload), call this endpoint to activate the transfer. The transfer moves from `pending` to `active` status and becomes available for the recipient to download.

## Request

### Headers

<ParamField header="Authorization" type="string" required>
  Bearer token (API key or session token). Example: `Bearer agd_live_xxxxxxxxxxxxxxxxxxxx`
</ParamField>

### Path Parameters

<ParamField path="id" type="string" required>
  The transfer ID returned by the presigned upload endpoint. Example: `tr_4d2e8f1a-6b3c-4a7e-9d0f-5e8c1b2a3d4e`
</ParamField>

## Response

<ResponseField name="id" type="string">
  The transfer ID.
</ResponseField>

<ResponseField name="status" type="string">
  Always `active` on success.
</ResponseField>

## Examples

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST https://api.agent-drop.com/v1/transfers/tr_4d2e8f1a-6b3c-4a7e-9d0f-5e8c1b2a3d4e/confirm \
    -H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.agent-drop.com/v1/transfers/tr_4d2e8f1a-6b3c-4a7e-9d0f-5e8c1b2a3d4e/confirm",
      headers={"Authorization": "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"},
  )

  result = response.json()
  print(f"Transfer {result['id']} is now {result['status']}")
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api.agent-drop.com/v1/transfers/tr_4d2e8f1a-6b3c-4a7e-9d0f-5e8c1b2a3d4e/confirm",
    {
      method: "POST",
      headers: { Authorization: "Bearer agd_live_xxxxxxxxxxxxxxxxxxxx" },
    }
  );

  const result = await response.json();
  console.log(`Transfer ${result.id} is now ${result.status}`);
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "id": "tr_4d2e8f1a-6b3c-4a7e-9d0f-5e8c1b2a3d4e",
  "status": "active"
}
```

## Errors

| Status | Code                | Description                                  |
| ------ | ------------------- | -------------------------------------------- |
| `400`  | `FILES_MISSING`     | One or more files have not been uploaded yet |
| `401`  | `UNAUTHORIZED`      | Invalid or missing API key                   |
| `404`  | `NOT_FOUND`         | Transfer does not exist or has been deleted  |
| `409`  | `ALREADY_CONFIRMED` | Transfer has already been confirmed          |
