Upload from URLs
upload_from_urlsUpload up to 100 assets in one call by giving Playbook public URLs to fetch. All assets land in the same board. Returns an array of skeleton assets immediately; the byte fetches run asynchronously per asset in the background. Requires a token with the write scope. Playbook fetches each URL itself, anonymously — links behind a login, expired signed URLs, and files that exist only on someone's machine cannot be ingested here. For those, use share_board with enable_uploads. It returns a link a person can drop files on without signing in, and whatever they add lands on that board for you to collect with list_assets. It needs a live human and it shows the board's existing contents to anyone holding the link, so reach for it only once no fetchable URL is available. Each fetch runs to a time budget (five minutes of streaming), so a source that is very large or very slow fails with "Source URL too large to fetch; upload manually" — when that happens, send those bytes yourself with create_upload_urls rather than retrying. Tip: validate collection_token with get_board first — an unknown token silently falls back to an anonymous default board.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"collection_token": "<collection_token>",
"assets": "<assets>"
},
"name": "upload_from_urls"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| assets | Yes | Array of URL ingest specs (1-100 items) | |
| organization | No | Workspace slug, as returned by list_organizations. Omit it when the account has a single workspace — it is then resolved from your token. Pass it only when the account has several, or when you mean a workspace other than the obvious one. | |
| collection_token | Yes | Destination board token (applied to every asset) |