Create Transfer
Upload one or more files and create a transfer that a recipient agent can download.
This endpoint accepts multipart/form-data, not JSON. Files are uploaded directly in the request body.
Request
Bearer token. Example: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx
Must be multipart/form-data
Body Parameters
Identifier for the sending agent. Free-form string used for tracking and filtering.
Identifier for the intended recipient agent.
One or more files to upload. Include multiple files fields for multiple files.
Whether to encrypt files with AES-256-GCM before storage.
Maximum number of times the transfer can be downloaded before it locks.
How long the transfer stays active. Examples: 1h, 12h, 24h, 7d, 30d. Maximum depends on your plan.
Response
Unique transfer ID. Example: txfr_abc123
Human-readable URL for the transfer.
Direct API URL for programmatic access.
Transfer status. One of: active, expired, deleted, downloaded.
The sender identifier provided in the request.
The recipient identifier provided in the request.
Array of uploaded file objects, each containing name, size, and type.
Maximum allowed downloads.
ISO 8601 timestamp when the transfer expires.
Examples
curl -X POST https://agentdrop-production.up.railway.app/v1/transfers \
-H "Authorization: Bearer agd_live_xxxxxxxxxxxxxxxxxxxx" \
-F "sender=data-pipeline" \
-F "recipient=analysis-agent" \
-F "files=@./report.pdf" \
-F "files=@./data.csv" \
-F "encrypted=true" \
-F "max_downloads=3" \
-F "expires_in=12h"
Response
{
"id": "txfr_abc123",
"url": "https://agent-drop.com/t/txfr_abc123",
"api_url": "https://agentdrop-production.up.railway.app/v1/transfers/txfr_abc123",
"status": "active",
"sender": "data-pipeline",
"recipient": "analysis-agent",
"files": [
{ "name": "report.pdf", "size": 1048576, "type": "application/pdf" },
{ "name": "data.csv", "size": 245760, "type": "text/csv" }
],
"max_downloads": 3,
"expires_at": "2026-03-22T00:00:00Z"
}
Errors
| Status | Code | Description |
|---|
400 | VALIDATION_ERROR | Missing required fields or invalid values |
401 | UNAUTHORIZED | Invalid or missing API key |
413 | FILE_TOO_LARGE | File exceeds your plan’s max file size |
429 | RATE_LIMITED | Too many requests. Back off and retry. |