Upload from URL
upload_from_urlLow-level upload from URL. Prefer the 'transfer' tool instead — it handles polling automatically. This tool returns immediately with PENDING_UPLOAD status; you must poll get_upload_status yourself. Max file size follows the account plan (Basic 500 MB / Pro 1 GB). Private/internal URLs are blocked. Use only when you need explicit control over the upload lifecycle.Over stdio no API key is required: without one you upload as a guest (100 MB, 24-hour link); a key raises the limits and lets you sell.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public HTTPS URL of the file to upload | |
| fileName | No | Optional filename override (derived from URL if omitted) | |
| payoutAddress | No | Wallet that a priced download pays out to. Only for running without an API key — it is what lets you sell with no account. Ignored when a key is set, because that account's payout address is a dashboard setting. Payments are final: a mistyped address is unrecoverable, and an exchange deposit address usually will not credit a Base transfer from a contract. | |
| idempotencyKey | No | Unique key for retry-safe uploads. Needs an API key; ignored without one. | |
| pricePerDownload | No | Price per download in USD (e.g. 0.50 or 0.00005). When set, downloaders pay this amount in USDC. Omit for free downloads. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | Upload status: PENDING_UPLOAD, UPLOADING, READY, or FAILED | |
| uploadId | Yes | Unique upload identifier (e.g. up_a1b2c3d4e5f6g7h8) | |
| expiresAt | No | ISO 8601 expiration timestamp | |
| downloadUrl | No | Shareable download URL (works without auth, valid 24h) |