GET/api/v1/assets
List Multimedia
Your files (videos, audios, images, documents) with their id, kind and status. Delivery pointers are not here because they expire: ask for them one at a time with the asset card. What images, audios and files that are ready do carry is public_url, the stable address under your own domain, ready to drop into your site's HTML.
Query parameters
starting_afterinteger
Cursor: returns files with id greater than this.
kindstring
Filter by file kind.Values: video · audio · image · file
curl "https://www.clonify.com/api/v1/assets" \
-H "Authorization: Bearer clk_live_…"
{
"object": "list",
"data": [{
"object": "asset",
"id": 42,
"kind": "image",
"title": "Portada del curso",
"file_name": "portada.webp",
"mime_type": "image/webp",
"file_size_bytes": 48210,
"duration_seconds": null,
"status": "ready",
"folder_id": null,
"public_url": "https://example.com/media/42",
"created_at": "2026-06-11T09:00:00.000Z",
"updated_at": "2026-06-11T09:00:00.000Z"
}],
"has_more": false,
"next_starting_after": null
}
POST/api/v1/assets
Upload a file to Multimedia
Uploads a file to your Multimedia library. Send url (a link) or file_base64 (the bytes), one of the two. VIDEO only by url, with no size limit: our engine downloads it and it stays in processing for a few minutes until it is ready. Everything else is available instantly, and images are optimised to WebP on the way in. It uses your plan's storage: with no room left, 403.
Write permission
Body (JSON)
urlstring (URL)
Publicly reachable http(s) link to the file. The good path, and the only one for video.
file_base64string (base64)
The bytes in base64, without the "data:" prefix. Small files only (about 3 MB); anything bigger goes by url.
file_namestring ..255
Name with its extension. Required with file_base64; with url it is taken from the link.
kindstring
Values: video · audio · image · file
curl -X POST "https://www.clonify.com/api/v1/assets" \
-H "Authorization: Bearer clk_live_…" \
-H "Content-Type: application/json" \
-d '{"url":"…","file_base64":"…"}'
{
"object": "asset",
"id": 118,
"kind": "video",
"title": "Clase 1",
"file_name": "clase-1.mp4",
"status": "processing",
"public_url": null
}
GET/api/v1/assets/{id}
Read a Multimedia asset
One file from your Multimedia library and how to deliver it: videos come with embed_url (signed iframe, ready to embed) and everything else (image, audio, file) comes with download_url. Use it to resolve the { type: "asset", asset_id } actions returned by the chat, the same way you resolve products with their card. Only fully-processed assets are served. One still processing returns 404.
curl "https://www.clonify.com/api/v1/assets/1" \
-H "Authorization: Bearer clk_live_…"
{
"object": "asset",
"id": 42,
"kind": "file",
"title": "Plantilla de avatar de cliente",
"file_name": "plantilla-avatar.pdf",
"mime_type": "application/pdf",
"file_size_bytes": 183422,
"duration_seconds": null,
"embed_url": null,
"download_url": "https://www.clonify.com/api/v1/assets/42/download"
}
GET/api/v1/assets/{id}/download
Download an asset's bytes
The file's bytes (image, audio or document), using the same key as the rest of the API: this is NOT a public link to forward to an end user. Your system downloads the file and re-delivers it on its platform (Discord attachment, Telegram media…). Supports the Range header. Videos are not downloaded: embed them with the card's embed_url.
curl "https://www.clonify.com/api/v1/assets/1/download" \
-H "Authorization: Bearer clk_live_…"