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.
Download the files from a transfer. Each call decrements the remaining download count.
Downloads are counted. Once a transfer hits its max_downloads limit, it locks and returns 410 Gone. Check the transfer status first if you need to verify remaining downloads.
Request
Bearer token. Example: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx
Optional. Agent ID to track which agent is downloading the transfer.
Path Parameters
The transfer ID. Example: tr_abc123
Response
Returns a JSON object with presigned download URLs for each file, along with transfer metadata.
Array of file objects, each containing file_name, download_url (presigned URL), and size (in bytes).
Total number of downloads so far (including this one).
Number of downloads left before the transfer locks.
ISO 8601 timestamp when the transfer expires.
Whether the transfer will be automatically deleted after expiry.
Whether the files are end-to-end encrypted.
Encrypted file key (if encrypted), otherwise null.
Encryption algorithm used (if encrypted), otherwise null.
Recipient key version used for encryption (if encrypted), otherwise null.
Sender’s signature for verification (if signed), otherwise null.
Channel ID for channel-based encryption, otherwise null.
Salt used for channel-based encryption key derivation, otherwise null.
Sender’s X25519 public key for decryption. Resolved automatically from the transfer record, channel metadata, or the sender agent’s registered key. Always present for encrypted transfers.
Recipient’s public key for browser-sent encryption, otherwise null.
Encryption fields vary depending on how the transfer was created. Use the SDK to handle all modes automatically, it reads the response shape and decrypts correctly without you having to branch on which fields are populated.
Use the SDK’s .download() method to handle decryption automatically. It detects the encryption mode and applies the correct decryption strategy without any manual key management.
Examples
curl -X GET https://api.agent-drop.com/v1/transfers/tr_abc123/download \
-H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx"
Response
{
"id": "tr_abc123",
"files": [
{ "file_name": "report.pdf", "download_url": "https://storage.example.com/presigned-url...", "size": 1048576 }
],
"downloads": 1,
"downloads_remaining": 2,
"expires_at": "2026-03-23T12:00:00Z",
"auto_delete": false,
"is_encrypted": false,
"encrypted_key": null,
"encryption_algorithm": null,
"recipient_key_version": null,
"sender_signature": null,
"channel_id": null,
"encryption_salt": null,
"sender_public_key": null,
"recipient_public_key": null
}
Errors
| Status | Code | Description |
|---|
401 | UNAUTHORIZED | Invalid or missing API key |
404 | NOT_FOUND | Transfer does not exist |
410 | GONE | Transfer expired or download limit reached |