Sonilo GenerateMusicFromVideo

Sonilo GenerateMusicFromVideo

Certified

Generate music from a video

Sends a video URI or video URL to POST /v1/video-to-music and stores the audio in Kestra internal storage. Provide exactly one video source. Stream mode is the default. wav, mp3, multiple variants, stems, ducking, and preserveSpeech switch the request to async. Killing the task stops the local wait only. Sonilo has no cancel endpoint, so remote work can continue and can still be billed.

yaml
type: io.kestra.plugin.sonilo.GenerateMusicFromVideo

Score a video that is already in internal storage

yaml
id: score_completed_video
namespace: company.media

inputs:
  - id: video_uri
    type: FILE

tasks:
  - id: generate_music
    type: io.kestra.plugin.sonilo.GenerateMusicFromVideo
    apiToken: "{{ secret('SONILO_API_TOKEN') }}"
    video: "{{ inputs.video_uri }}"
Properties

Sonilo API token

Bearer token from a Sonilo Platform account at platform.sonilo.com. Platform keys are separate from sonilo.com app logins. Sent as Authorization: Bearer.

Assets this task consumes as inputs or produces as outputs, for lineage tracking and the asset graph (Enterprise Edition). A flow declaring this property on a task is rejected in the open-source edition.

Definitions
assetFailureBehaviorstring
Possible Values
IGNOREFAILWARN

Asset failure behavior

Behavior applied to the task state when a declared asset fails to render, emit, or be persisted (e.g. a lock conflict): FAIL escalates it to FAILED, WARN (default) warns it if it would otherwise succeed, IGNORE leaves the state untouched.

enableAutobooleanstring

Whether to auto-register assets referenced dynamically at runtime that are not statically declared in inputs or outputs.

inputsarray

The assets consumed as inputs.

id*string
Min length1
typestring
outputs

The assets produced as outputs.

id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*object
descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
id*string
Min length1
Max length150
type*string
Min length1

Custom asset type

descriptionstring
displayNamestring
metadataobject
Default{}
namespacestring
Min length1
Max length150
Defaulthttps://api.sonilo.com

Sonilo API base URL

API host root. Defaults to https://api.sonilo.com. A trailing slash, or a base that already ends in /v1, is accepted.

Also return a ducked mix

When true, Sonilo dips the generated music under the video speech and returns that mix beside the clean audio. Requires async mode.

Possible Values
streamasync

Generation mode

stream returns NDJSON audio. async is required for wav, mp3, multiple variants, stems, ducking, and preserveSpeech. When omitted, the task selects async if one of those options is set.

HTTP client configuration

Optional proxy, timeout, and TLS settings for calls to the Sonilo API.

Definitions
allowFailedbooleanstring
Defaultfalse

If true, allow a failed response code (response code >= 400)

allowedResponseCodesarray
SubTypeinteger

List of response code allowed for this request

auth

The authentication to use.

type*object
passwordstring

The password for HTTP basic authentication.

usernamestring

The username for HTTP basic authentication.

type*object
tokenstring

The token for bearer token authentication.

type*object
passwordstring

The password for HTTP Digest authentication.

usernamestring

The username for HTTP Digest authentication.

defaultCharsetstring
DefaultUTF-8

The default charset for the request.

enabledTcpExtendedKeepAlivebooleanstring
Defaulttrue

Whether to enable TCP Keep-Alive extended socket options (TCP_KEEPIDLE, TCP_KEEPINTERVAL, TCP_KEEPCOUNT).

Set to false when running on Windows workers, as these extended socket options are not supported by the Windows JDK and will cause connection failures.

followRedirectsbooleanstring
Defaulttrue

Whether redirects should be followed automatically.

logsarray
SubTypestring
Possible Values
REQUEST_HEADERSREQUEST_BODYRESPONSE_HEADERSRESPONSE_BODY

The enabled log.

proxy

The proxy configuration.

addressstring

The address of the proxy server.

passwordstring

The password for proxy authentication.

portintegerstring

The port of the proxy server.

typestring
DefaultDIRECT
Possible Values
DIRECTHTTPSOCKS

The type of proxy to use.

usernamestring

The username for proxy authentication.

ssl

The SSL request options

insecureTrustAllCertificatesbooleanstring

Whether to disable checking of the remote SSL certificate.

Only applies if no trust store is configured. Note: This makes the SSL connection insecure and should only be used for testing. If you are using a self-signed certificate, set up a trust store instead.

timeout

The timeout configuration.

connectTimeoutstring

The time allowed to establish a connection to the server before failing.

readIdleTimeoutstring
DefaultPT5M

The time allowed for a read connection to remain idle before closing it.

Possible Values
m4awavmp3

Output format

m4a, wav, or mp3. wav and mp3 require async mode. Streaming audio is always m4a.

DefaultPT3S

Time between Sonilo task status checks

Used after an async submission while waiting for GET /v1/tasks/{task_id}. Defaults to PT3S.

Keep isolated speech beside the score

When true, Sonilo also returns isolated source vocals and a speech-preserving mux. Requires async mode.

Music prompt

Optional guidance for the score. Sonilo documents a practical limit of 2000 characters.

Prompt influence

How strongly the music follows the prompt, from 0 to 1. Lower values let the video lead. Omitted values keep Sonilo's default. Zero is sent.

Segment plan

Optional JSON string of timed segment prompts. Sent as the segments form field.

Also return separated stems

When true, Sonilo splits the generated music into drums, bass, vocals, and other. Requires async mode. Stem failure does not fail the generation.

Number of variants

Optional integer from 1 to 10. Values above 1 require async mode and are billed per variant.

Video from internal storage

Kestra URI of the video to score. Set this or videoUrl, not both.

Video URL

Public or presigned URL of the video to score. Set this or video, not both.

DefaultPT30M

Maximum time to wait for a Sonilo task

Async generation, including stem separation, is polled until this timeout. Defaults to PT30M. Stem separation often finishes in a few minutes and can run much longer.

Formaturi

Internal storage URI of the primary audio

SubTypestring

Internal storage URIs of the clean audio tracks, then any ducked mixes

MIME type of the primary file

Formaturi

Internal storage URI of the ducked mix

SubTypestring

Internal storage URIs of speech-preserving muxes

Sonilo task status

SubTypestring

Internal storage URIs of separated stems, keyed by stream index and stem name

Stem separation warning

Sonilo task identifier

Generated title

Formaturi

Internal storage URI of isolated source vocals