Portfolio Supported AIs Solutions Tasks Email Archive Bring Your Own Code Integrations Pricing

Get Started

ChatGPT

ChatGPT

Start directly →

Ready
Claude

Claude

Directory Connector →

Ready
Mistral

Mistral

Directory Connector →

Ready

Dashboard Always available

Kinetic Film

⚡ Built-in — Platform Built-in

Short animated type films for a site: big words that punch in on the beat, lines that get struck through, a number that counts up and an end card with name, tagline and web address, in the site's own colours. Call schema once for the format and an example, write a spec, check it with validate, then save it under a film_key. save and get return embed_html, a block to place in any page (for example the homepage hero, with create_page or patch_page), and preview_html, a complete page you can create as its own page (for example films/<film_key>.html) so the owner can watch it. The film is stored inline in that HTML and plays by itself on the page; after a change, save again and replace the block on the page. Every save is kept as a version (versions, restore). Available on every plan. On paid plans the owner can also have a film rendered to an mp4 video with a poster image, for social media or a <video> on the site, paid in credits: render_quote shows the price, render starts it, render_status follows it until the video URL is there.

⚡ Built-in — No Setup Required This integration is built into the WebsitePublisher platform. All endpoints are available immediately — no API key needed.

Try it with your AI assistant

Once WebsitePublisher is connected to your AI assistant, paste one of these into the chat.

@WebsitePublisher make a 10-second animated promo film for the top of my homepage
@WebsitePublisher turn my three main selling points into a kinetic type film in my brand colours
@WebsitePublisher show my film in portrait 9:16 on a preview page
With WebsitePublisher, make a 10-second animated promo film for the top of my homepage
With WebsitePublisher, turn my three main selling points into a kinetic type film in my brand colours
With WebsitePublisher, show my film in portrait 9:16 on a preview page
With WebsitePublisher, make a 10-second animated promo film for the top of my homepage
With WebsitePublisher, turn my three main selling points into a kinetic type film in my brand colours
With WebsitePublisher, show my film in portrait 9:16 on a preview page

Endpoints (13)

GET schema

The film format: timing rules, palette and fx, every block type (words, strike, counter, end) with its fields and limits, writing tips, the display formats (16:9, 9:16, 1:1) and an example spec that validates. Read it before writing a spec. Read-only.

No input parameters required.

GET validate

Check a spec without saving it. Returns valid true with duration_s, total_beats, the film text and the normalised spec, or valid false with error as "path: reason" (for example "blocks[1].at: must be 6 (blocks follow each other without gaps or overlap)"). Read-only.

Field Type Required Description
spec object|string ✓ Yes The film spec (see schema), as an object or as JSON text.
POST save

Save a spec as the new version of a film; creates the film when the film_key is new. The same spec again makes no new version (changed false). Returns film_key, title, version, duration_s, spec, embed_html and preview_html for the display options given. A refused spec returns 422 with "path: reason".

Field Type Required Description
film_key string ✓ Yes 1-48 characters a-z, 0-9 or "-", e.g. "homepage-hero". Unique within the project.
spec object|string ✓ Yes The film spec (see schema), as an object or as JSON text.
title string No Name of the film for the owner, max 120 characters, no < or >.
format string No Display format of the returned HTML: "16:9" (default), "9:16" or "1:1". The same film works in every format.
autoplay boolean No Play when the film is on screen. Default true.
loop boolean No Start again after the end card. Default true.
controls boolean No Play/pause button and click to pause. Default true.
GET get

One film with its spec, embed_html and preview_html: the current version, or an earlier version. Takes the same display options as save. Read-only.

Field Type Required Description
film_key string ✓ Yes The film_key.
version integer No An earlier version (see versions). Default: the current one.
format string No "16:9" (default), "9:16" or "1:1".
autoplay boolean No Default true.
loop boolean No Default true.
controls boolean No Default true.
GET list

Films of this project, most recently changed first, without their specs: film_key, title, version, duration_s, created_at, updated_at; plus count and the maximum per project. Read-only.

Field Type Required Description
limit integer No Max films, default 50, max 200.
GET versions

Saved versions of a film, newest first: version, duration_s, note, created_at; plus the current version. The newest 30 versions are kept. Read-only.

Field Type Required Description
film_key string ✓ Yes The film_key.
limit integer No Max versions, default 30, max 100.
POST restore

Make an earlier version the current one again; it is saved as a new version, nothing is overwritten. Returns the same as save. Pages keep the film they were given: replace the block on the page with the new embed_html.

Field Type Required Description
film_key string ✓ Yes The film_key.
version integer ✓ Yes The version to go back to (see versions).
format string No "16:9" (default), "9:16" or "1:1".
POST delete

Delete a film and all its versions. Pages that embed it keep playing their own copy until you remove the block from the page.

Field Type Required Description
film_key string ✓ Yes The film_key.
GET render_quote

Price and size of rendering a film version to an mp4 video, before you start it. Returns price_credits, width, height, duration_s, estimated_render_s, the owner's available_credits, can_render and, when it cannot, reasons (not switched on yet, free plan, not the owner, not enough credits). Nothing is reserved or charged. Read-only.

Field Type Required Description
film_key string ✓ Yes The film_key.
version integer No An earlier version (see versions). Default: the current one.
format string No "16:9" (default), "9:16" or "1:1".
quality string No "1080p" (default) or "720p": the short side of the video.
visibility string No "public" (default): a project asset with a public URL. "private": a private asset the owner can share with a link.
POST render

Render a film version to an mp4 video (H.264, 30 fps, no sound) plus a poster JPG, on paid plans, paid from the project owner's credits. Only the owner can start it; check the price with render_quote and get the owner's consent first. The render waits in a queue and takes about as long as estimated_render_s; follow it with render_status. The price is charged only when both files are stored; a render that fails, times out or is cancelled costs nothing. Files: films/<film_key>/<film_key>-v<version>-<width>x<height>.mp4 and .jpg (a new render of the same version and size replaces them). The same version at the same size again returns the earlier render for free (reused true) while its files are still there.

Field Type Required Description
film_key string ✓ Yes The film_key.
version integer No An earlier version (see versions). Default: the current one.
format string No "16:9" (default), "9:16" (stories, reels) or "1:1".
quality string No "1080p" (default) or "720p".
visibility string No "public" (default) or "private".
GET render_status

One render: status (queued, running, saving, done, failed, cancelled, expired), progress 0-100, queue_position while queued, error, and when done the video and poster with slug and url (url null for private files), bytes, charged. Poll every 10-20 s. Read-only.

Field Type Required Description
render_id integer ✓ Yes From render or renders.
GET renders

Renders of this project, newest first, in the same shape as render_status. Read-only.

Field Type Required Description
film_key string No Only the renders of this film.
limit integer No Max renders, default 20, max 100.
POST render_cancel

Cancel a render that is queued or running. Nothing is charged. Owner only.

Field Type Required Description
render_id integer ✓ Yes The render to cancel.

MCP Tool Names

When using this integration through an AI assistant (Claude, ChatGPT, Cursor, etc.), the endpoints are available as MCP tools:

EndpointMCP Tool Name
schema kinetic_film_schema
validate kinetic_film_validate
save kinetic_film_save
get kinetic_film_get
list kinetic_film_list
versions kinetic_film_versions
restore kinetic_film_restore
delete kinetic_film_delete
render_quote kinetic_film_render_quote
render kinetic_film_render
render_status kinetic_film_render_status
renders kinetic_film_renders
render_cancel kinetic_film_render_cancel
← Back to all integrations