deliver_asset
What it does
Returns a signed, time-limited URL pointing at the final cut (VF) of an approved content item. Optionally flips the status to Postato so the calendar reflects what's been handed off.
Use this to feed downstream pipelines (clients, schedulers, render farms) without exposing your R2 bucket.
Input schema
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | required | — |
Content id. Must be in Approvato or Postato state. |
| mark_posted | boolean | optional | false |
If true, also flips status to Postato. |
| expires_in_hours | number | optional | 24 |
URL validity window. Max 168 (7 days). |
Example call
json{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "deliver_asset", "arguments": { "id": "c_abc123", "expires_in_hours": 48, "mark_posted": true } } }
Response shape
json{ "ok": true, "id": "c_abc123", "delivery_url": "https://lumiqa.io/api/deliver/your-slug%2Fvf%2F...%2Ffinal.mp4?expires=1716387634&sig=abc...", "r2_key": "your-slug/vf/Brand/Title/final.mp4", "filename": "final.mp4", "content_type": "video/mp4", "expires_at_unix": 1716387634, "expires_in_hours": 48, "marked_posted": true }
Usage from Claude Desktop
prompt"Give me a 48-hour download link for c_abc123 and mark it as posted."
Usage from Python
pythonimport requests LUMIQA = "https://lumiqa.io/mcp/your-slug" HEADERS = {"Authorization": "Bearer lk_live_xxxxxxxxxxxx"} r = requests.post(LUMIQA, headers=HEADERS, json={ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "deliver_asset", "arguments": {"id": "c_abc123", "expires_in_hours": 48} }, }) print(r.json())
Usage from Node
javascriptconst r = await fetch("https://lumiqa.io/mcp/your-slug", { method: "POST", headers: { "Authorization": "Bearer lk_live_xxxxxxxxxxxx", "Content-Type": "application/json", }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/call", params: { name: "deliver_asset", arguments: { id: "c_abc123", expires_in_hours: 48 }, }, }), }); const data = await r.json(); console.log(data);
Required env vars / integrations
- Workspace R2 binding
UPLOADS. - Pages secret
MCP_DELIVERY_SECRET— required in production (requests fail closed if unset).
Known limitations
- Errors with
Content must be 'Approvato' to deliverif you skipapprove_content. - Errors with
No VF (final) asset foundwhen the promotion step never ran — rare, but possible if approve failed mid-flight. - Signed URL is HMAC-style (sha256 prefix) — fine for delivery, not a real cryptographic signature.