Presigned Upload
Transfers
Presigned Upload: Get S3 Upload URL for a Transfer
Get presigned R2 URLs for client-side AgentDrop file upload. Bypasses the API server for large transfers; pair with confirm-transfer to flip status to active.
POST
Presigned Upload
Get presigned URLs for uploading files directly to storage. Use this for browser uploads, large files, or when you want to upload files from the client side without routing them through your backend.
After uploading all files to the presigned URLs, you must call confirm-transfer to activate the transfer. The transfer stays in
pending status until confirmed.Request
Headers
Bearer token. Example:
Bearer agd_live_xxxxxxxxxxxxxxxxxxxxMust be
application/jsonBody Parameters
Transfer mode. One of:
agent-to-agent, agent-to-human, human-to-agent.Identifier for the sending agent or human.
Identifier for the intended recipient agent or human.
Array of file descriptor objects. Each object must contain
name, size, and content_type. Optionally include encryption_iv if the file is client-side encrypted.How long the transfer stays active. Examples:
1h, 12h, 24h, 7d, 30d.Maximum number of times the transfer can be downloaded.
Optional message to attach to the transfer.
Optional metadata object for custom key-value pairs.
Whether the files are client-side encrypted before upload.
Base64-encoded encrypted symmetric key. Required when
is_encrypted is true.Encryption algorithm used. Currently only
AES-256-GCM is supported.Whether to automatically delete the transfer after it expires.
Response
The transfer ID. Use this when calling the confirm endpoint.
Array of presigned upload objects, one per file.
Unique ID for this file within the transfer.
The file name you specified.
Presigned URL to upload the file to.
HTTP method to use. Typically
PUT.Headers to include in the upload request.
URL to call after all files are uploaded.
ISO 8601 timestamp when the presigned URLs expire.
Examples
Response
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 size exceeds your plan’s limit |
429 | RATE_LIMITED | Too many requests. Back off and retry. |
