ASMR Crushing Frozen Fruits App API
Use asmr-crushing-frozen-fruits to create an 8-second text-to-video ASMR scene of frozen fruit being crushed in a glass tumbler.
App id
asmr-crushing-frozen-fruits
Use this id with /api/v1/apps/{app} and /api/v1/apps/{app}/generations.
Inputs
| Parameter | Type | Required | Default | Values | Description |
|---|---|---|---|---|---|
fruit |
string | Yes | None | Any text | Fruit to place into the preset ASMR prompt. |
video_ratio |
string | No | 16:9 |
16:9, 9:16 |
Output aspect ratio. |
video_resolution |
string | No | 720p |
720p, 1080p, 4k |
Output resolution. |
This app has a fixed 8-second duration. The app builds the final prompt from the configured template, so you do not send a prompt field.
Billing
The current configuration charges by generated video duration and resolution:
| Resolution | Cost |
|---|---|
720p |
40 credits |
1080p |
40 credits |
4k |
120 credits |
The cost is based on the configured 8-second duration.
Get app parameters
curl https://img2vid.net/api/v1/apps/asmr-crushing-frozen-fruits \
-H "Authorization: Bearer $BUBLE_API_KEY"
Example response:
{
"data": {
"id": "asmr-crushing-frozen-fruits",
"input_parameters": [
{
"name": "fruit",
"type": "string"
},
{
"name": "video_ratio",
"type": "string",
"values": ["16:9", "9:16"]
},
{
"name": "video_resolution",
"type": "string",
"values": ["720p", "1080p", "4k"]
}
]
}
}
Create a generation
curl https://img2vid.net/api/v1/apps/asmr-crushing-frozen-fruits/generations \
-H "Authorization: Bearer $BUBLE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"fruit": "Strawberries",
"video_ratio": "16:9",
"video_resolution": "720p"
}'
Example response:
{
"data": {
"id": "task_id",
"status": "pending"
}
}
Query the result
curl https://img2vid.net/api/v1/apps/asmr-crushing-frozen-fruits/generations/task_id \
-H "Authorization: Bearer $BUBLE_API_KEY"
Success response shape:
{
"data": {
"id": "task_id",
"status": "success",
"result": {
"videos": [
{
"url": "https://..."
}
]
}
}
}
SDK examples
The examples below use this page's app id and public input parameters. They assume you have already initialized the SDK client as shown in the Quickstart and imported the required language SDK types. Send only parameter names returned by /api/v1/apps/{app}; media parameters must receive URLs.
JavaScript / TypeScript
const task = await buble.apps.generations.create(
'asmr-crushing-frozen-fruits',
{
fruit: 'Strawberries',
video_ratio: '16:9',
video_resolution: '720p',
}
);
const result = await buble.apps.generations.wait(
'asmr-crushing-frozen-fruits',
task.data.id
);
console.log(result.data.result?.videos?.[0]?.url);
Python
task = client.apps.generations.create(
"asmr-crushing-frozen-fruits",
fruit="Strawberries",
video_ratio="16:9",
video_resolution="720p",
)
result = client.apps.generations.wait("asmr-crushing-frozen-fruits", task["data"]["id"])
print(result["data"]["result"]["videos"][0]["url"])
Go
task, err := client.Apps.Generations.Create(ctx, "asmr-crushing-frozen-fruits", map[string]any{
"fruit": "Strawberries",
"video_ratio": "16:9",
"video_resolution": "720p",
})
if err != nil {
return err
}
result, err := client.Apps.Generations.Wait(ctx, "asmr-crushing-frozen-fruits", task.Data.ID)
Rust
let mut body = serde_json::Map::new();
body.insert("fruit".to_string(), serde_json::json!("Strawberries"));
body.insert("video_ratio".to_string(), serde_json::json!("16:9"));
body.insert("video_resolution".to_string(), serde_json::json!("720p"));
let task = client.apps().generations().create("asmr-crushing-frozen-fruits", body).await?;
let result = client
.apps()
.generations()
.wait("asmr-crushing-frozen-fruits", &task.data.id, WaitOptions::default())
.await?;
Swift
let task = try await client.apps.generations.create(
"asmr-crushing-frozen-fruits",
body: [
"fruit": "Strawberries",
"video_ratio": "16:9",
"video_resolution": "720p"
]
)
let result = try await client.apps.generations.wait("asmr-crushing-frozen-fruits", task.data.id)
Dart / Flutter
final task = await client.apps.generations.create('asmr-crushing-frozen-fruits', {
'fruit': 'Strawberries',
'video_ratio': '16:9',
'video_resolution': '720p',
});
final result = await client.apps.generations.wait('asmr-crushing-frozen-fruits', task.data.id);
Elixir
{:ok, task} =
Buble.Apps.Generations.create(client, "asmr-crushing-frozen-fruits", %{
fruit: "Strawberries",
video_ratio: "16:9",
video_resolution: "720p"
})
{:ok, result} = Buble.Apps.Generations.wait(client, "asmr-crushing-frozen-fruits", task["data"]["id"])
Java
Envelope<AppGenerationTask> task = client.apps().generations().create(
"asmr-crushing-frozen-fruits",
Map.of(
"fruit", "Strawberries",
"video_ratio", "16:9",
"video_resolution", "720p"));
Envelope<AppGenerationTask> result = client.apps().generations().wait(
"asmr-crushing-frozen-fruits",
task.getData().getId());
.NET
var task = await client.Apps.Generations.CreateAsync(
"asmr-crushing-frozen-fruits",
new Dictionary<string, object?>
{
["fruit"] = "Strawberries",
["video_ratio"] = "16:9",
["video_resolution"] = "720p"
});
var result = await client.Apps.Generations.WaitAsync(
"asmr-crushing-frozen-fruits",
task!.Data!.Id!);
PHP
$task = $client->apps()->generations()->create('asmr-crushing-frozen-fruits', [
'fruit' => 'Strawberries',
'video_ratio' => '16:9',
'video_resolution' => '720p',
]);
$result = $client->apps()->generations()->wait('asmr-crushing-frozen-fruits', $task['data']['id']);
Ruby
task = client.apps.generations.create("asmr-crushing-frozen-fruits", {
"fruit" => "Strawberries",
"video_ratio" => "16:9",
"video_resolution" => "720p"
})
result = client.apps.generations.wait("asmr-crushing-frozen-fruits", task.dig("data", "id"))
puts result.dig("data", "result", "videos", 0, "url")