<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: useapi.net</title>
    <description>The latest articles on DEV Community by useapi.net (@useapi).</description>
    <link>https://dev.to/useapi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1161316%2F45f81ff7-e388-4ac9-8913-33ca73cb1f15.png</url>
      <title>DEV Community: useapi.net</title>
      <link>https://dev.to/useapi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/useapi"/>
    <language>en</language>
    <item>
      <title>MiniMax H3 vs Seedance 2.0: 2K with native audio, head to head on the same omni references</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Fri, 31 Jul 2026 05:04:22 +0000</pubDate>
      <link>https://dev.to/useapi/minimax-h3-vs-seedance-20-2k-with-native-audio-head-to-head-on-the-same-omni-references-40nm</link>
      <guid>https://dev.to/useapi/minimax-h3-vs-seedance-20-2k-with-native-audio-head-to-head-on-the-same-omni-references-40nm</guid>
      <description>&lt;p&gt;MiniMax's newest video model, &lt;strong&gt;H3&lt;/strong&gt;, is live on &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;POST videos/create&lt;/a&gt; as &lt;code&gt;model: "Hailuo-3.0"&lt;/code&gt;. Two things separate it from everything else in the MiniMax lineup: every generation ships with &lt;strong&gt;native stereo audio&lt;/strong&gt; — no separate voice or music pass — and it renders &lt;strong&gt;2K at 24 fps&lt;/strong&gt; by default, with the short edge at 1440 pixels (2560×1440 at 16:9, 1440×2560 at 9:16).&lt;/p&gt;

&lt;p&gt;H3 is a general-purpose multimodal model rather than a set of task-specific modes. The same endpoint takes a prompt alone, a start frame, or a tray of image, video, and audio references, and the request shape is the one Seedance 2.0 already uses — set &lt;code&gt;model&lt;/code&gt;, &lt;code&gt;resolution&lt;/code&gt;, and &lt;code&gt;duration&lt;/code&gt; directly.&lt;/p&gt;

&lt;p&gt;The three clips below are the actual output of a single 4-second run at each mode, unedited. &lt;strong&gt;Turn the sound on&lt;/strong&gt; — the audio in all three is generated by the model.&lt;/p&gt;

&lt;p&gt;The last of the three is a direct comparison: it reuses the exact image, video, and audio references and the exact prompt from our &lt;a href="https://useapi.net/blog/260626b" rel="noopener noreferrer"&gt;Seedance 2.0 omni post&lt;/a&gt;, so H3 and the three Seedance 2.0 tiers can be judged on identical input rather than on separate demos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Text to video
&lt;/h3&gt;

&lt;p&gt;No references at all, just a prompt. &lt;code&gt;aspectRatio&lt;/code&gt; is explicit here, though H3 defaults to 16:9 when no reference is supplied.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Aerial push over jagged sea cliffs at dawn. Waves crash white against black rock far below as mist burns off in the first gold light. A lone seabird crosses frame. Cinematic wide-angle, natural color grade. Crashing surf, wind, and distant gull calls.&lt;/p&gt;
&lt;/blockquote&gt;

Your browser does not support the video element.

&lt;p&gt;The surf, wind, and gulls are all model-generated — nothing was added to the audio track.&lt;/p&gt;

&lt;h3&gt;
  
  
  A start frame, with speech
&lt;/h3&gt;

&lt;p&gt;Supply one image as the first frame and let the prompt drive what happens next. The portrait below is the same reference used in our &lt;a href="https://useapi.net/blog/260626b" rel="noopener noreferrer"&gt;Seedance 2.0 omni post&lt;/a&gt;, so the two models can be compared on identical input.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1520270245938331719%2Fpretty-lady-in-the-bar-1080p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1520270245938331719%2Fpretty-lady-in-the-bar-1080p.jpg" width="800" height="1421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;fileID&lt;/code&gt; — the start frame. Upload it with &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-files" rel="noopener noreferrer"&gt;POST /files&lt;/a&gt; first.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;She looks into the camera, smiles, and says warmly: "You made it — I was starting to think you'd stood me up." Warm bar lights bokeh behind her, subtle handheld drift on the camera. Low jazz and crowd murmur sit under her voice.&lt;/p&gt;
&lt;/blockquote&gt;

Your browser does not support the video element.

&lt;p&gt;Spell the spoken line out in the prompt. H3 renders the delivery from the text, so quoting the line and saying it is spoken is what puts a voice on the track.&lt;/p&gt;

&lt;h3&gt;
  
  
  Omni references — image, video, and audio together
&lt;/h3&gt;

&lt;p&gt;The same three references from the &lt;a href="https://useapi.net/blog/260626b" rel="noopener noreferrer"&gt;Seedance 2.0 omni post&lt;/a&gt;, and the same prompt, run through H3 for a direct comparison. H3 accepts up to 9 images, 3 videos, and 3 audio clips, capped at 12 files in total, each addressed by an &lt;code&gt;@&lt;/code&gt;-tag in the prompt.&lt;/p&gt;

Your browser does not support the video element.

&lt;p&gt;&lt;code&gt;@video1&lt;/code&gt; — the scene, rope, and motion to keep. Its face is blurred on purpose: a clear real face in a video reference is rejected by the content filter, and the identity comes from &lt;code&gt;@image1&lt;/code&gt; anyway.&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/blog/260730#omni-references-image-video-and-audio-together" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@audio1&lt;/code&gt; — the speech to drive, about 2 seconds. Together with the portrait above as &lt;code&gt;@image1&lt;/code&gt;, that is the full tray.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Replace the woman in @video1 with @image1, keeping the same outdoor scene, rope, and jumping movements. She speaks out loud, clearly saying "Count me jumping" in the voice from @audio1, audible throughout the clip.&lt;/p&gt;
&lt;/blockquote&gt;

Your browser does not support the video element.

&lt;p&gt;No &lt;code&gt;aspectRatio&lt;/code&gt; was sent here. With references attached H3 defaults to &lt;code&gt;Auto&lt;/code&gt; and matched the 9:16 shape of the inputs on its own.&lt;/p&gt;

&lt;h3&gt;
  
  
  What it costs
&lt;/h3&gt;

&lt;p&gt;H3 bills 12 credits per second of output at 2K. A video reference is charged on its own length, at the same rate, on top of the generated clip — image and audio references add nothing per second.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Request&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;4-second clip, no references&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-second clip, image reference&lt;/td&gt;
&lt;td&gt;48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4-second clip, 10-second video reference&lt;/td&gt;
&lt;td&gt;168&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15-second clip, no references&lt;/td&gt;
&lt;td&gt;180&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That surcharge is worth planning around: trim a video reference to the shortest clip that carries the motion you need, since its full length is billed whatever the output duration.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where H3 fits
&lt;/h3&gt;

&lt;p&gt;Seedance 2.0 still reaches 4K and runs cheaper per second at 480p and 720p, so it remains the better pick for volume iteration and for the highest resolution. H3 is the one to choose when you want 2K with sound in a single call — the native audio track removes an entire step from the pipeline, and 24 fps at 1440 is a materially different starting point for finishing work.&lt;/p&gt;




&lt;p&gt;See the &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;POST videos/create&lt;/a&gt; reference for every parameter, the reference-media limits, and a live Try-It console.&lt;/p&gt;

</description>
      <category>minimax</category>
      <category>seedance</category>
      <category>ai</category>
      <category>api</category>
    </item>
    <item>
      <title>How to Generate AI Music with the Mureka API (Suno / Udio Alternative)</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Mon, 27 Jul 2026 00:39:22 +0000</pubDate>
      <link>https://dev.to/useapi/how-to-generate-ai-music-with-the-mureka-api-suno-udio-alternative-32aj</link>
      <guid>https://dev.to/useapi/how-to-generate-ai-music-with-the-mureka-api-suno-udio-alternative-32aj</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.mureka.ai" rel="noopener noreferrer"&gt;Mureka AI&lt;/a&gt; turns a single text prompt into a complete, produced song — a direct &lt;a href="https://www.suno.com" rel="noopener noreferrer"&gt;Suno&lt;/a&gt; and &lt;a href="https://www.udio.com" rel="noopener noreferrer"&gt;Udio&lt;/a&gt; alternative — and the &lt;a href="https://useapi.net/docs/api-mureka-v1" rel="noopener noreferrer"&gt;useapi.net Mureka API&lt;/a&gt; drives your own Mureka account over plain REST, with its latest &lt;code&gt;V9&lt;/code&gt; default and flagship &lt;code&gt;O2&lt;/code&gt; models, at your normal consumer subscription price.&lt;/strong&gt; Mureka is the music generator from Chinese tech company &lt;a href="https://www.kunlun.com/" rel="noopener noreferrer"&gt;Kunlun Tech&lt;/a&gt;, built on its proprietary Mureka models (&lt;code&gt;mureka-9&lt;/code&gt;, &lt;code&gt;mureka-o2&lt;/code&gt;). One generation returns two complete songs — vocals, melody, and arrangement — and from there you can write your own lyrics, force an instrumental, seed a track from a reference song or melody, extend a song, or clone a voice for text-to-speech. &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; runs all of it from one API token.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;You keep your normal &lt;a href="https://www.mureka.ai/subscribe" rel="noopener noreferrer"&gt;Mureka&lt;/a&gt; web subscription for the underlying credits, plus a single flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net that covers API access to every supported service — there is no per-song surcharge from us. Mureka's own subscription plans:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Songs / month&lt;/th&gt;
&lt;th&gt;Cost per song&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$9/month&lt;/td&gt;
&lt;td&gt;up to 500&lt;/td&gt;
&lt;td&gt;~1.8¢&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Premier&lt;/td&gt;
&lt;td&gt;$27/month&lt;/td&gt;
&lt;td&gt;up to 2,000&lt;/td&gt;
&lt;td&gt;~1.35¢&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Song and speech allowances are shared (songs &lt;em&gt;or&lt;/em&gt; speech minutes), lyrics generation is free, and downloading instrumentals and stems is free. The newer V9 and O2 models consume more Gold per song, so real counts run lower — roughly 250–400 songs on V9/O2. Pro/Premier members can buy additional Gold packs (price shown at checkout).&lt;/p&gt;

&lt;p&gt;This is the consumer-account route. Mureka also runs an &lt;a href="https://platform.mureka.ai/pricing" rel="noopener noreferrer"&gt;official developer API&lt;/a&gt;, but it works differently — it is sold as prepaid top-ups with 12-month validity, consumed per call rather than billed monthly, and the ladder runs from $30 (1 concurrent request) up to $30,000 (150 concurrent), with the $1,000 tier giving 5 concurrent. Generation there runs ~$0.045/song on V8/V9/O2 (~$0.03 on the older V7.6), plus extra charges for lyrics generation and stem export. useapi.net instead automates the &lt;a href="https://www.mureka.ai/subscribe" rel="noopener noreferrer"&gt;consumer plan&lt;/a&gt; you already pay for, so a $27 Premier plan plus the flat $15 covers far more generation than the official API's entry tier. For other music options under the same subscription, see the &lt;a href="https://useapi.net/docs/articles/flowmusic-bash" rel="noopener noreferrer"&gt;Flow Music API tutorial&lt;/a&gt; (Google's Lyria 3 Pro) and the &lt;a href="https://useapi.net/docs/api-tempolor-v1" rel="noopener noreferrer"&gt;TemPolor API&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported models
&lt;/h3&gt;

&lt;p&gt;Pick a model per request with the &lt;code&gt;model&lt;/code&gt; field on &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create" rel="noopener noreferrer"&gt;POST /music/create&lt;/a&gt;. Omit it and the API applies its default, &lt;code&gt;V9&lt;/code&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Engine&lt;/th&gt;
&lt;th&gt;What it's for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;V9&lt;/code&gt; (default)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mureka-9&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Latest generation, used when &lt;code&gt;model&lt;/code&gt; is omitted — advanced prompt control and studio-grade sound.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;O2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mureka-o2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Flagship high-end model — best audio quality and musical coherence, with strong multilingual vocals.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;V8&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mureka-8.0.1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Prior-generation general-purpose model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;V7.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mureka-7.6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Earlier model kept for compatibility — it was the default before V9.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Older aliases (&lt;code&gt;V7.5&lt;/code&gt;, &lt;code&gt;V7&lt;/code&gt;, &lt;code&gt;O1&lt;/code&gt;, &lt;code&gt;V6&lt;/code&gt;) are still accepted but redirect to current engines, so prefer the four models above. Every model returns finished MP3 audio — there is no MIDI or sheet-music output. The same account and token also drive Mureka's text-to-speech and voice cloning, covered below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate a song in two API calls
&lt;/h3&gt;

&lt;p&gt;You need a useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and a connected &lt;a href="https://useapi.net/docs/start-here/setup-mureka" rel="noopener noreferrer"&gt;Mureka account&lt;/a&gt; — export the token so the &lt;code&gt;curl&lt;/code&gt; examples below run as-is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"user:1234-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The most reliable workflow is asynchronous: the create call returns a &lt;code&gt;jobid&lt;/code&gt; immediately, then you poll until both songs are ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Submit the job&lt;/strong&gt; — &lt;code&gt;POST https://api.useapi.net/v1/mureka/music/create&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/music/create"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "account": "12345678901234",
    "prompt": "upbeat synthwave with bright female vocals about chasing a sunrise, 110 bpm",
    "model": "V9",
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;account&lt;/code&gt; is your Mureka account id, and it is optional when you have a single account configured (the API auto-selects it). In &lt;code&gt;async&lt;/code&gt; mode the response returns immediately with &lt;code&gt;201 Created&lt;/code&gt;, a &lt;code&gt;jobid&lt;/code&gt;, and &lt;code&gt;status: "created"&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"j0622184042017475905m-u1234-a12345678901234-bot:mureka"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"verb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"music/create"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"music"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-22T18:40:42.412Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"account"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"12345678901234"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"upbeat synthwave with bright female vocals about chasing a sunrise, 110 bpm"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"V9"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"async"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Poll for the result&lt;/strong&gt; — &lt;code&gt;GET https://api.useapi.net/v1/mureka/jobs/{jobid}&lt;/code&gt; (the &lt;code&gt;jobid&lt;/code&gt; ends in &lt;code&gt;bot:mureka&lt;/code&gt;, so URL-encode it in the path — it contains a &lt;code&gt;:&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/jobs/JOBID"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When &lt;code&gt;status&lt;/code&gt; is &lt;code&gt;completed&lt;/code&gt;, the finished audio lives in &lt;code&gt;response.songs[]&lt;/code&gt;. Each generation returns two songs (an A/B pair, &lt;code&gt;version&lt;/code&gt; &lt;code&gt;"1"&lt;/code&gt; and &lt;code&gt;"2"&lt;/code&gt;), and each carries an &lt;code&gt;mp3_url&lt;/code&gt; plus cover art:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"j0622184042017475905m-u1234-a12345678901234-bot:mureka"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"response"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"feed_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;11223344&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"songs"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"song_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user:1234-mureka:123456789-song:33445566"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Chasing the Sunrise"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"duration_milliseconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;173040&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"mp3_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://static-cos.mureka.ai/cos-prod/...1.mp3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cover"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://static-cos.mureka.ai/cos-prod/...1.png"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"song_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user:1234-mureka:123456789-song:33445567"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Chasing the Sunrise"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"duration_milliseconds"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;178910&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"mp3_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://static-cos.mureka.ai/cos-prod/...2.mp3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cover"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://static-cos.mureka.ai/cos-prod/...2.png"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A song typically finishes in 30–90 seconds (about 45 on average), and an account supports up to 10 parallel generations. Songs can run up to about 5 minutes depending on the lyrics. Jobs are retained for 7 days, so you can re-fetch a finished result any time in that window. Prefer not to poll? Pass a &lt;code&gt;replyUrl&lt;/code&gt; in the create body to receive a webhook callback when the job completes (the payload matches the poll response). A job can come back &lt;code&gt;status: "failed"&lt;/code&gt; (e.g. a content-policy rejection), and the create call may return &lt;code&gt;402&lt;/code&gt; (useapi.net subscription expired) / &lt;code&gt;412&lt;/code&gt; (out of Mureka credits), &lt;code&gt;429&lt;/code&gt; (rate limit, or all 10 generation slots busy), or &lt;code&gt;596&lt;/code&gt; (account session error) — see the &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create" rel="noopener noreferrer"&gt;endpoint docs&lt;/a&gt; for the full list.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write your own lyrics, or force an instrumental
&lt;/h3&gt;

&lt;p&gt;The plain &lt;code&gt;prompt&lt;/code&gt; on &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create" rel="noopener noreferrer"&gt;POST /music/create&lt;/a&gt; lets the model write the lyrics for you. To supply your own words, switch to &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-advanced" rel="noopener noreferrer"&gt;POST /music/create-advanced&lt;/a&gt; — &lt;code&gt;lyrics&lt;/code&gt; is required there (use &lt;code&gt;[Verse]&lt;/code&gt; / &lt;code&gt;[Chorus]&lt;/code&gt; tags, 50–5,000 chars), and &lt;code&gt;desc&lt;/code&gt; steers the style with a comma-separated list of genres, moods, and vocal direction. &lt;code&gt;vocal_gender&lt;/code&gt; forces &lt;code&gt;male&lt;/code&gt; or &lt;code&gt;female&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Your own lyrics → forces a vocal render of those exact words&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/music/create-advanced"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "lyrics": "[Verse 1]\nCity lights blur in the rain\n[Chorus]\nAnd I will wait for the morning sun",
    "desc": "soulful R&amp;amp;B, lush keys, 90 bpm",
    "vocal_gender": "female",
    "model": "V9",
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a purely instrumental track, use &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-instrumental" rel="noopener noreferrer"&gt;POST /music/create-instrumental&lt;/a&gt; — just a &lt;code&gt;prompt&lt;/code&gt; describing the music, no lyrics:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/music/create-instrumental"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ "prompt": "ethereal post-rock, cascading delay guitars, orchestral swells building to a cinematic crescendo", "model": "O2", "async": true }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All three endpoints return the same &lt;code&gt;jobid&lt;/code&gt; you poll on, and any resulting &lt;code&gt;song_id&lt;/code&gt; can be lengthened with &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-extend" rel="noopener noreferrer"&gt;POST /music/extend&lt;/a&gt; (pass the &lt;code&gt;song_id&lt;/code&gt; plus new &lt;code&gt;lyrics&lt;/code&gt;) or reworked with &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-regenerate" rel="noopener noreferrer"&gt;POST /music/regenerate&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Reference tracks, melody seeding, and custom vocals
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-advanced" rel="noopener noreferrer"&gt;POST /music/create-advanced&lt;/a&gt; can seed a song from your own audio instead of a text description, using three reference inputs (each mutually exclusive with &lt;code&gt;desc&lt;/code&gt;):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Seed from&lt;/th&gt;
&lt;th&gt;Set it up with&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;ref_id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A reference track whose style inspires the song&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-files" rel="noopener noreferrer"&gt;POST /files&lt;/a&gt; (upload), &lt;a href="https://useapi.net/docs/api-mureka-v1/get-mureka-music-refs" rel="noopener noreferrer"&gt;GET /music/refs&lt;/a&gt; (browse)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;motif_id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A melody idea that kickstarts the song&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-files-motif" rel="noopener noreferrer"&gt;POST /files/motif&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;vocal_id&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A specific singing voice, including your own uploaded vocal&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-files-vocal" rel="noopener noreferrer"&gt;POST /files/vocal&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-mureka-v1/get-mureka-music-vocals" rel="noopener noreferrer"&gt;GET /music/vocals&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you make Mureka sing your custom lyrics in a voice you supply — upload an MP3 vocal sample, take the returned id, and pass it as &lt;code&gt;vocal_id&lt;/code&gt; alongside your &lt;code&gt;lyrics&lt;/code&gt;. The same Pro-tier reference features (custom soundtracks and melodies) that the Mureka website offers are all reachable from the API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Clone a voice and generate multi-speaker speech
&lt;/h3&gt;

&lt;p&gt;The same account also drives Mureka's text-to-speech. &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-speech" rel="noopener noreferrer"&gt;POST /speech&lt;/a&gt; turns text into audio with either a preset or a cloned voice, and unlike music generation it has no concurrency (generation-slot) limit. Clone a voice first from an MP3 sample with &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-speech-voice" rel="noopener noreferrer"&gt;POST /speech/voice&lt;/a&gt;, then pass the returned &lt;code&gt;id&lt;/code&gt; as the &lt;code&gt;voice_id&lt;/code&gt; parameter with your &lt;code&gt;text&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/speech"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{ "text": "Hello, this is a cloned voice speaking.", "voice_id": 12345, "async": true }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a back-and-forth dialogue, drop &lt;code&gt;text&lt;/code&gt;/&lt;code&gt;voice_id&lt;/code&gt; and send a &lt;code&gt;conversation&lt;/code&gt; array instead — each turn names its own &lt;code&gt;voice_id&lt;/code&gt;, so two or more cloned voices can talk to each other in one render:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/mureka/speech"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "conversation": "[{\"voice_id\": 12345, \"text\": \"Is there anything I can help you with?\"}, {\"voice_id\": 67890, \"text\": \"Yes — read me back the weather.\"}]",
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Speech jobs poll the same way, with the finished MP3 in &lt;code&gt;response.mp3_url&lt;/code&gt;. See &lt;a href="https://useapi.net/docs/api-mureka-v1/get-mureka-speech-voices" rel="noopener noreferrer"&gt;GET /speech/voices&lt;/a&gt; for the available voices, including the ones you have cloned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Batch-generate with a script
&lt;/h3&gt;

&lt;p&gt;Finding the right track takes many attempts, and running them by hand is tedious. The Node.js script reads a list of prompts from &lt;a href="https://github.com/useapi/mureka-api/prompts.json" rel="noopener noreferrer"&gt;&lt;code&gt;prompts.json&lt;/code&gt;&lt;/a&gt;, submits each one to &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create" rel="noopener noreferrer"&gt;POST /music/create&lt;/a&gt; in &lt;code&gt;async&lt;/code&gt; mode, polls every job until it is done, then downloads both MP3s from each generation — so you can queue a batch and come back to a folder of finished songs.&lt;/p&gt;

&lt;p&gt;You need &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; v21 or newer. Put &lt;code&gt;prompts.json&lt;/code&gt; and &lt;a href="https://github.com/useapi/mureka-api/mureka.mjs" rel="noopener noreferrer"&gt;&lt;code&gt;mureka.mjs&lt;/code&gt;&lt;/a&gt; in the same folder and run &lt;code&gt;node ./mureka.mjs API_TOKEN&lt;/code&gt;, where &lt;code&gt;API_TOKEN&lt;/code&gt; is your useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt;. With more than one &lt;a href="https://useapi.net/docs/start-here/setup-mureka" rel="noopener noreferrer"&gt;Mureka account&lt;/a&gt; configured, pass the account id (or its Google email) as a second argument — with a single account it is auto-selected. Each entry's &lt;code&gt;prompt&lt;/code&gt; is required, and the optional &lt;code&gt;model&lt;/code&gt; maps straight to the create endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;These are real songs and speech generated through the Mureka API, straight from our blog walkthroughs — each from the request shapes shown above. Full prompts and &lt;code&gt;curl&lt;/code&gt; for each are in the linked posts.&lt;/p&gt;

&lt;h6&gt;
  
  
  Astro Gardener — &lt;code&gt;V9&lt;/code&gt;, female-vocal indie pop with custom lyrics (&lt;code&gt;create-advanced&lt;/code&gt;)
&lt;/h6&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/mureka-bash#examples" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— from &lt;a href="https://useapi.net/blog/260404" rel="noopener noreferrer"&gt;Mureka: V9 Now the Default Music Model&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Cascading Sunrise — &lt;code&gt;V9&lt;/code&gt; instrumental (&lt;code&gt;create-instrumental&lt;/code&gt;)
&lt;/h6&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/mureka-bash#examples" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— from &lt;a href="https://useapi.net/blog/260404" rel="noopener noreferrer"&gt;Mureka: V9 Now the Default Music Model&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Galactic Odyssey — flagship &lt;code&gt;O2&lt;/code&gt; instrumental (&lt;code&gt;create-instrumental&lt;/code&gt;)
&lt;/h6&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/mureka-bash#examples" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— from &lt;a href="https://useapi.net/blog/251128" rel="noopener noreferrer"&gt;Mureka: O2 and V7.6 Music Models&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Pirate Programmer — &lt;code&gt;V7.6&lt;/code&gt;, male-vocal sea-shanty-meets-electronic (&lt;code&gt;create-advanced&lt;/code&gt;)
&lt;/h6&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/mureka-bash#examples" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— from &lt;a href="https://useapi.net/blog/251128" rel="noopener noreferrer"&gt;Mureka: O2 and V7.6 Music Models&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Custom vocal clone — an uploaded voice singing custom lyrics over a reference track (&lt;code&gt;create-advanced&lt;/code&gt; with &lt;code&gt;vocal_id&lt;/code&gt; + &lt;code&gt;ref_id&lt;/code&gt;)
&lt;/h6&gt;



&lt;p&gt;— from &lt;a href="https://useapi.net/blog/250115" rel="noopener noreferrer"&gt;Mureka: Custom Vocals&lt;/a&gt;&lt;/p&gt;

&lt;h6&gt;
  
  
  Multi-speaker speech — two cloned voices in one conversation (&lt;code&gt;POST /speech&lt;/code&gt;)
&lt;/h6&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/mureka-bash#examples" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— from &lt;a href="https://useapi.net/blog/250818" rel="noopener noreferrer"&gt;Mureka: Speech Generation and Voice Cloning&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently asked questions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Is the Mureka API a Suno or Udio alternative?&lt;/strong&gt; Yes. Like Suno and Udio, Mureka generates full songs with vocals from a single text prompt — and the useapi.net Mureka API drives your own Mureka account over plain REST, with the latest &lt;code&gt;V9&lt;/code&gt; default and flagship &lt;code&gt;O2&lt;/code&gt; models, all under one flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; useapi.net subscription. See Supported models above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Mureka API?&lt;/strong&gt; Yes. Mureka runs an &lt;a href="https://platform.mureka.ai/pricing" rel="noopener noreferrer"&gt;official developer API&lt;/a&gt;, sold as prepaid top-ups (12-month validity) consumed per call — from $30 (1 concurrent request) up to $30,000 (150), with the $1,000 tier giving 5 concurrent. Generation runs ~$0.045/song on V8/V9/O2 (~$0.03 on V7.6), plus charges for lyrics and stems. useapi.net is the consumer-account route, automating the $9–$27/month &lt;a href="https://www.mureka.ai/subscribe" rel="noopener noreferrer"&gt;Mureka web plan&lt;/a&gt; you already pay for. See Pricing above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which models can I use?&lt;/strong&gt; &lt;code&gt;V9&lt;/code&gt; (default), the flagship &lt;code&gt;O2&lt;/code&gt;, &lt;code&gt;V8&lt;/code&gt;, and &lt;code&gt;V7.6&lt;/code&gt;. Omit the &lt;code&gt;model&lt;/code&gt; field and the API uses &lt;code&gt;V9&lt;/code&gt;. Older aliases (&lt;code&gt;V7.5&lt;/code&gt;, &lt;code&gt;V7&lt;/code&gt;, &lt;code&gt;O1&lt;/code&gt;, &lt;code&gt;V6&lt;/code&gt;) still work but redirect to current engines. See Supported models above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I write my own lyrics or generate an instrumental?&lt;/strong&gt; Yes. Use &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-advanced" rel="noopener noreferrer"&gt;POST /music/create-advanced&lt;/a&gt; with &lt;code&gt;[Verse]&lt;/code&gt;/&lt;code&gt;[Chorus]&lt;/code&gt;-tagged &lt;code&gt;lyrics&lt;/code&gt; to force a vocal render of your exact words, or &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-instrumental" rel="noopener noreferrer"&gt;POST /music/create-instrumental&lt;/a&gt; for a lyrics-free track. See Write your own lyrics, or force an instrumental above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I clone a voice or generate speech?&lt;/strong&gt; Yes. &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-speech-voice" rel="noopener noreferrer"&gt;POST /speech/voice&lt;/a&gt; clones a voice from an MP3 sample, then &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-speech" rel="noopener noreferrer"&gt;POST /speech&lt;/a&gt; renders text — including multi-speaker &lt;code&gt;conversation&lt;/code&gt; dialogues — with no concurrency (generation-slot) limit. See Clone a voice and generate multi-speaker speech above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What do I get back, and in what format?&lt;/strong&gt; Every music generation returns two complete songs (an A/B pair), each as an &lt;code&gt;mp3_url&lt;/code&gt; with cover art, up to about 5 minutes long. The output is finished MP3 audio — there is no MIDI or sheet-music export. See Generate a song in two API calls above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does it cost?&lt;/strong&gt; You keep your normal Mureka web plan for credits (~1.35–1.8¢ per song), plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net for API access to all services, with no per-song surcharge. See Pricing above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is this different from the official Mureka API?&lt;/strong&gt; The &lt;a href="https://platform.mureka.ai/pricing" rel="noopener noreferrer"&gt;official Mureka API&lt;/a&gt; is sold as prepaid top-ups (12-month validity) consumed per call, from $30 up to $30,000, charging ~$0.045/song on V8/V9/O2 (~$0.03 on V7.6) plus lyric and stem fees. useapi.net instead automates your own consumer Mureka account, so you generate at the &lt;a href="https://www.mureka.ai/subscribe" rel="noopener noreferrer"&gt;Mureka website subscription&lt;/a&gt; price plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; — and the same one subscription covers &lt;a href="https://useapi.net/" rel="noopener noreferrer"&gt;other AI services&lt;/a&gt; too, including the &lt;a href="https://useapi.net/docs/articles/flowmusic-bash" rel="noopener noreferrer"&gt;Flow Music&lt;/a&gt; and &lt;a href="https://useapi.net/docs/api-tempolor-v1" rel="noopener noreferrer"&gt;TemPolor&lt;/a&gt; music APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns.&lt;/p&gt;

&lt;p&gt;The full runnable example is in the &lt;a href="https://github.com/useapi/mureka-api" rel="noopener noreferrer"&gt;&lt;code&gt;mureka-api&lt;/code&gt; GitHub repo&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>mureka</category>
      <category>musicgeneration</category>
    </item>
    <item>
      <title>Seedance 2.0 API Pricing: The Cheapest Ways to Run It, Compared</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Tue, 21 Jul 2026 20:08:55 +0000</pubDate>
      <link>https://dev.to/useapi/seedance-20-api-pricing-the-cheapest-ways-to-run-it-compared-4kno</link>
      <guid>https://dev.to/useapi/seedance-20-api-pricing-the-cheapest-ways-to-run-it-compared-4kno</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Seedance 2.0 is the video model everyone is asking for right now, and the cheapest verified way to run its 1080p API is through useapi.net at about $1.20 a clip — below ByteDance's own official rate of $1.87 and below every third-party reseller we could verify.&lt;/strong&gt; We pulled live pricing on July 21, 2026 from ByteDance's official channels, sixteen third-party vendors, and our own four routes, then normalized everything to one honest unit: the dollar cost of a 5-second, 1080p, text-to-video Seedance 2.0 clip.&lt;/p&gt;

&lt;p&gt;It is worth being upfront about where we sit before the numbers. useapi.net is a bring-your-own-account layer, not an official ByteDance reseller. We drive your own &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-runwayml-v1" rel="noopener noreferrer"&gt;Runway&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-dreamina-v1" rel="noopener noreferrer"&gt;Dreamina&lt;/a&gt;, or &lt;a href="https://useapi.net/docs/api-minimax-v1" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt; account over a single REST API, so you spend those platforms' consumer credits instead of the metered developer-API rate. That is exactly why the numbers come out lower — and we will show the math rather than ask you to trust it. Prices move fast in this market, so every figure below carries its date, and you should re-check the source before committing spend.&lt;/p&gt;

&lt;h3&gt;
  
  
  What a Seedance 2.0 clip costs at the source
&lt;/h3&gt;

&lt;p&gt;ByteDance sells Seedance 2.0 through two official channels — &lt;a href="https://docs.byteplus.com/en/docs/ModelArk/1544106" rel="noopener noreferrer"&gt;BytePlus ModelArk&lt;/a&gt; internationally and &lt;a href="https://docs.volcengine.com/docs/82379/1544106" rel="noopener noreferrer"&gt;Volcano Engine&lt;/a&gt; in China. Both bill per million tokens, where a clip's token count is &lt;code&gt;width × height × 24fps × seconds ÷ 1024&lt;/code&gt;. A 1080p second is 48,600 tokens, so a 5-second clip is 243,000 tokens at 1080p's published rate of $7.7 per million — $1.87. The per-million rate itself changes with resolution — lower at 720p, and lower still at 4K — which is why a 4K clip is not simply four times a 1080p one. Normalized, per official BytePlus rates (July 2026):&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Resolution&lt;/th&gt;
&lt;th&gt;5-second clip&lt;/th&gt;
&lt;th&gt;10-second clip&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;480p&lt;/td&gt;
&lt;td&gt;$0.35&lt;/td&gt;
&lt;td&gt;$0.70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;720p&lt;/td&gt;
&lt;td&gt;$0.76&lt;/td&gt;
&lt;td&gt;$1.51&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1080p&lt;/td&gt;
&lt;td&gt;$1.87&lt;/td&gt;
&lt;td&gt;$3.74&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;td&gt;$3.89&lt;/td&gt;
&lt;td&gt;$7.78&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Seedance 2.0 Fast and Mini are cheaper but cap at 720p — there is no official 1080p or 4K on those tiers. Audio generation is included at no extra cost on the 2.0 family. Volcano runs roughly 8–13% cheaper than BytePlus at current exchange rates, but it requires Chinese real-name and face verification, so it is effectively China-only.&lt;/p&gt;

&lt;p&gt;The sticker price is not the whole cost. Activating Seedance 2.0 on BytePlus requires a prepaid resource pack — minimum $30.10, non-refundable, expiring after 90 days — and there is no free trial for the 2.0 models. Individual accounts are throttled to 3 concurrent tasks (180 requests/minute), and 4K is capped at a single concurrent task for everyone. None of that makes the official API a bad deal. It sets the bar every alternative should be measured against.&lt;/p&gt;

&lt;h3&gt;
  
  
  Four ways to run Seedance 2.0 through useapi.net
&lt;/h3&gt;

&lt;p&gt;One useapi.net token drives Seedance 2.0 on four different platforms, each with a different strength. All four sit under the same flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; that covers every service we support, on top of the underlying account plan.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Route&lt;/th&gt;
&lt;th&gt;Seedance models&lt;/th&gt;
&lt;th&gt;5s 1080p&lt;/th&gt;
&lt;th&gt;Stands out for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2.0, Fast, Mini&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$1.20&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;cheapest 1080p, 4K, and real human faces&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-dreamina-v1/post-dreamina-videos" rel="noopener noreferrer"&gt;Dreamina&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2.0, Fast, Mini, 1.5 Pro, 1.0 family&lt;/td&gt;
&lt;td&gt;~$1.57 &lt;em&gt;(Canada accounts)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;widest model range, the only route with Seedance 1.x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;2.0, Fast, Mini&lt;/td&gt;
&lt;td&gt;~$1.90&lt;/td&gt;
&lt;td&gt;4K plus a rich reference-image workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-videos-create" rel="noopener noreferrer"&gt;Runway&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;seedance-2, seedance-2-fast&lt;/td&gt;
&lt;td&gt;metered&lt;/td&gt;
&lt;td&gt;real faces with lighter moderation, plus a legacy unlimited mode&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The PixVerse route is the price leader. Its cost calculator prices a 1080p Seedance 2.0 second at 60 credits, so a 5-second clip is 300 credits — $1.20 on the $60/month Premium plan at $0.004 per credit. That is the generation cost per clip. Counter-intuitively, the Premium plan beats the pricier Ultra plan for single clips, because Ultra's 40%-off third-party discount is outweighed by its worse per-credit rate. PixVerse also reaches 2160p (4K) on Seedance 2.0, at about $2.40 for a 5-second clip — below both MiniMax's 4K and the official rate. It handles real human faces too, one of the reference workflows the official API restricts (more on that below).&lt;/p&gt;

&lt;p&gt;The Runway route earns its place on real faces, not price. It generates Seedance 2.0 at up to 1080p on metered credits, with notably lighter moderation of real people than the other routes. It also carries a legacy unlimited mode — on older Runway &lt;a href="https://help.runwayml.com/hc/en-us/articles/18053095835795-Unlimited-plan-details" rel="noopener noreferrer"&gt;Unlimited plan&lt;/a&gt; accounts that already have Explore mode enabled, &lt;code&gt;exploreMode&lt;/code&gt; runs Seedance at 480p and 720p without spending credits. Runway no longer enables Explore mode on new accounts, though, and where it does run it is slow — one clip at a time, roughly 10 to 15 minutes each. Treat it as a perk if you already have it, not a reason to pick Runway.&lt;/p&gt;

&lt;p&gt;The trade-offs are real and worth naming. Our routes automate consumer accounts, so concurrency is account-bound (typically 5–10 parallel jobs, versus the official API's per-key limits), Dreamina's 1080p and 4K are locked to Canada-region accounts, and Runway's unlimited Explore mode is a legacy perk that new accounts can no longer enable. What you get in return is a materially lower per-clip cost and one token across all four platforms.&lt;/p&gt;

&lt;h3&gt;
  
  
  The real-faces gap
&lt;/h3&gt;

&lt;p&gt;Price is not the only place the official API is restrictive. Seedance 2.0 rejects reference images and videos that contain real human faces, unless the face comes from the model's own recent output, a preset digital character, or a verified real-person asset. Doing real-person reference work at any scale means ByteDance's enterprise "Advanced Creation Rights" — &lt;a href="https://docs.byteplus.com/en/docs/modelark/2377608" rel="noopener noreferrer"&gt;$14,000 a year&lt;/a&gt; for a million assets, $42,000 for five million, corporate verification required.&lt;/p&gt;

&lt;p&gt;Three of our routes soften this. The &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse route&lt;/a&gt; accepts real human faces, the &lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-videos-create" rel="noopener noreferrer"&gt;Runway route&lt;/a&gt; documents real-face support with notably lighter content moderation, and the &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax route&lt;/a&gt; accepts real faces in image references (video references with recognizable faces are still moderated). For advertising, UGC, and creator workflows that revolve around a real person, that difference matters more than a few cents per clip — and it does not require the official API's enterprise contract.&lt;/p&gt;

&lt;h3&gt;
  
  
  The wider market, priced honestly
&lt;/h3&gt;

&lt;p&gt;Most third-party Seedance vendors are reselling ByteDance's own API with a margin on top, and the honest ones cluster at 20–60% above official. A few reference points, priced live in July 2026 for a 5-second 1080p clip:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vendor&lt;/th&gt;
&lt;th&gt;5s 1080p&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;useapi.net (PixVerse route)&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$1.20&lt;/td&gt;
&lt;td&gt;consumer-account credits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://www.segmind.com/models/seedance-2.0/pricing" rel="noopener noreferrer"&gt;Segmind&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$1.70&lt;/td&gt;
&lt;td&gt;the only reseller we verified below official&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://docs.byteplus.com/en/docs/ModelArk/1544106" rel="noopener noreferrer"&gt;Official BytePlus&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$1.87&lt;/td&gt;
&lt;td&gt;the yardstick&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://replicate.com/bytedance/seedance-2.0" rel="noopener noreferrer"&gt;Replicate&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$2.25&lt;/td&gt;
&lt;td&gt;"Official" model badge, transparent per-second pricing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://fal.ai/models/bytedance/seedance-2.0" rel="noopener noreferrer"&gt;fal.ai&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$3.41&lt;/td&gt;
&lt;td&gt;the market's default, and the most expensive standard 2.0 we found&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That last row is worth sitting with. fal.ai is where a lot of developers reach for Seedance first, and at $14 per million tokens it charges more than 1.8× ByteDance's own $7.7 — an ~82% premium for the same model.&lt;/p&gt;

&lt;p&gt;You will also see sticker prices that look far lower than official. Every one we chased down decomposed into something other than a cheaper Seedance 2.0. A few patterns to watch for when a price looks too good:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flat per-second rates that hide a cross-subsidy — a single "$0.11/second at any resolution" number is cheap at 1080p but quietly more expensive than official at 480p, and it usually leans on venture subsidy that will not last.&lt;/li&gt;
&lt;li&gt;"Turbo" or "accelerated" variants that are not the standard model — one vendor advertises a 1080p clip at $0.75 under a model name ByteDance does not publish, while its actual standard Seedance 2.0 costs four times that on the same site.&lt;/li&gt;
&lt;li&gt;Prices quoted at 720p when you wanted 1080p — several "cheapest Seedance" pages have no 1080p tier at all, so the low number is a 720p rate, and a homepage claim of "30–70% cheaper" turns into roughly 9% more than official once you match resolutions.&lt;/li&gt;
&lt;li&gt;"Unlimited" plans capped below 1080p — an unlimited tier that only reaches 720p, runs on a slow queue, and expires in a fixed window is a different product than an unlimited 1080p API.&lt;/li&gt;
&lt;li&gt;Credits with no published dollar value — if a page prices generations in credits but never tells you what a credit costs, you cannot compare it, and that is usually the point.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this means those vendors are dishonest — it means resolution, model variant, and fine print have to match before a comparison means anything. When they do, the verified market has no one meaningfully below official except Segmind at a thin margin, and our PixVerse route beneath that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Show me the API call
&lt;/h3&gt;

&lt;p&gt;Every price above is one REST call away. Generate a 1080p Seedance 2.0 clip through the PixVerse route:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s1"&gt;'https://api.useapi.net/v2/pixverse/videos/create'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer user:12345-…'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'model="seedance-2.0"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'prompt="A lone lighthouse on a storm-battered cliff at dusk, waves exploding against the rocks, beam sweeping through the rain, cinematic wide shot."'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'quality="1080p"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'duration="5"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'aspect_ratio="16:9"'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, if your Runway account already has Explore mode enabled — Runway no longer offers it on new accounts — the same shape runs unlimited at 720p by adding &lt;code&gt;exploreMode&lt;/code&gt;, one slow clip at a time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--location&lt;/span&gt; &lt;span class="s1"&gt;'https://api.useapi.net/v1/runwayml/videos/create'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--header&lt;/span&gt; &lt;span class="s1"&gt;'Authorization: Bearer user:12345-…'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'model="seedance-2"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'text_prompt="A lone lighthouse on a storm-battered cliff at dusk, waves exploding against the rocks, beam sweeping through the rain, cinematic wide shot."'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'resolution="720p"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'duration="5"'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;--form&lt;/span&gt; &lt;span class="s1"&gt;'exploreMode="true"'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both return a job id to poll (or a &lt;code&gt;replyUrl&lt;/code&gt; webhook when the clip is ready). The full parameter set — reference images, first and last frames, aspect ratios, and audio — lives on each endpoint page linked in the table above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which route should you use for Seedance 2.0?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cheapest 1080p, or you need 2160p — the &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse route&lt;/a&gt;, at $1.20 for a 5-second 1080p clip.&lt;/li&gt;
&lt;li&gt;Real human faces — the &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt;, or &lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-videos-create" rel="noopener noreferrer"&gt;Runway&lt;/a&gt; route, which avoid the official API's enterprise-gated face restriction.&lt;/li&gt;
&lt;li&gt;Widest model choice, or you specifically want Seedance 1.5 Pro / 1.0 — the &lt;a href="https://useapi.net/docs/api-dreamina-v1/post-dreamina-videos" rel="noopener noreferrer"&gt;Dreamina route&lt;/a&gt;, the only one carrying the 1.x family.&lt;/li&gt;
&lt;li&gt;4K with a deep reference-image workflow — the &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax route&lt;/a&gt;, or PixVerse for 4K at the lower price.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;Real Seedance 2.0 output from each route, reused from our blog posts — the same model, run on different platforms. Three of these lean on real human faces, the workflow the official API gates behind an enterprise contract.&lt;/p&gt;

&lt;p&gt;PixVerse · Seedance 2.0 (Standard), 1080p — a real face from a photo dropped into reference footage and given speech from a reference audio clip, all in one omni request. From &lt;a href="https://useapi.net/blog/260626a" rel="noopener noreferrer"&gt;PixVerse Seedance 2.0: Mini vs Fast vs Standard&lt;/a&gt;.&lt;/p&gt;

Your browser does not support the video element.

&lt;p&gt;MiniMax · Seedance 2.0 (Standard), 1080p — the same real-face omni workflow on the MiniMax route. From &lt;a href="https://useapi.net/blog/260626b" rel="noopener noreferrer"&gt;MiniMax Seedance 2.0: Standard vs Fast vs Mini&lt;/a&gt;.&lt;/p&gt;

Your browser does not support the video element.

&lt;p&gt;Runway · Seedance 2.0, 15 seconds, 9:16 — a real face animated on the Runway route, which applies lighter moderation on real people. From &lt;a href="https://useapi.net/blog/260415" rel="noopener noreferrer"&gt;Seedance 2.0: Using Real Faces&lt;/a&gt;.&lt;/p&gt;

Your browser does not support the video element.

&lt;p&gt;Dreamina · Seedance 2.0, text-to-video with lip-sync from a prompt alone. From &lt;a href="https://useapi.net/blog/260402" rel="noopener noreferrer"&gt;Dreamina: Seedance 2.0 Video Generation&lt;/a&gt;.&lt;/p&gt;

Your browser does not support the video element.

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Is useapi.net an official Seedance API?&lt;/strong&gt; No. useapi.net is a REST layer that automates your own &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-runwayml-v1" rel="noopener noreferrer"&gt;Runway&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-dreamina-v1" rel="noopener noreferrer"&gt;Dreamina&lt;/a&gt;, or &lt;a href="https://useapi.net/docs/api-minimax-v1" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt; account, each of which runs Seedance 2.0. You spend those platforms' consumer credits rather than ByteDance's metered developer-API rate, which is why the per-clip cost comes out lower.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the cheapest way to run Seedance 2.0 at 1080p?&lt;/strong&gt; Of everything we verified in July 2026, the &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse route&lt;/a&gt; at about $1.20 per 5-second clip, below ByteDance's official $1.87 and below every third-party reseller. See the pricing table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I generate Seedance 2.0 videos with real human faces?&lt;/strong&gt; The official API restricts real-face reference inputs to verified assets or an enterprise contract starting at $14,000 a year. The &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt; and &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt; routes accept real faces (MiniMax in image references), and the &lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-videos-create" rel="noopener noreferrer"&gt;Runway route&lt;/a&gt; documents real-face support with notably lighter moderation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does useapi.net charge less than ByteDance's own API?&lt;/strong&gt; The official developer API meters by token for scale customers. Consumer plans on PixVerse, Runway, Dreamina, and MiniMax price the same generation lower because they are sold to creators. useapi.net automates one of those consumer accounts over REST, so you get the consumer rate through an API, plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; across every service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the sub-dollar Seedance prices I see elsewhere real?&lt;/strong&gt; Usually not for a standard 1080p Seedance 2.0 clip. They tend to be 720p rates, subsidized flat-rate plans, distilled "turbo" variants, or credits with no published dollar value — see the wider market section.&lt;/p&gt;




&lt;p&gt;Ready to try it? Pick a route — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-videos-create-v4" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt; for the cheapest 1080p and real faces, &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-videos-create" rel="noopener noreferrer"&gt;MiniMax&lt;/a&gt; for 4K with a reference workflow — connect the account, and a &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net subscription&lt;/a&gt; drives all four with one token. Prices in this article were current on July 21, 2026, and this market moves quickly, so confirm the live rate before you scale.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>videogeneration</category>
      <category>bytedance</category>
    </item>
    <item>
      <title>AI Music APIs Compared: Mureka vs MiniMax vs ElevenLabs vs Lyria 3 Pro</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Fri, 17 Jul 2026 03:10:32 +0000</pubDate>
      <link>https://dev.to/useapi/ai-music-apis-compared-mureka-vs-minimax-vs-elevenlabs-vs-lyria-3-pro-2kcn</link>
      <guid>https://dev.to/useapi/ai-music-apis-compared-mureka-vs-minimax-vs-elevenlabs-vs-lyria-3-pro-2kcn</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;We gave the same briefs to five AI music models — Mureka O2, Mureka V9, MiniMax music-2.6, ElevenLabs music-v1, and Google's Lyria 3 Pro — through &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt;, and published every result: 30 full tracks below, with real prices, generation times, and the quirks we hit along the way.&lt;/strong&gt; Three test formats, two rounds each: pure instrumentals, vocals where the model writes its own lyrics, and vocals singing lyrics we wrote. Every model in a round gets the identical brief, so what you hear is the model, not the prompt.&lt;/p&gt;

&lt;p&gt;The five models arrive through three services — &lt;a href="https://useapi.net/docs/api-mureka-v1" rel="noopener noreferrer"&gt;Mureka&lt;/a&gt; directly (the strongest Suno and Udio alternative in the group), MiniMax and ElevenLabs through &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-music-create" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, and Lyria 3 Pro through &lt;a href="https://useapi.net/docs/api-flowmusic-v1" rel="noopener noreferrer"&gt;Flow Music&lt;/a&gt;. One useapi.net token drives all three. If you want the copy-paste quick starts instead of a listening test, see the &lt;a href="https://useapi.net/docs/articles/mureka-bash" rel="noopener noreferrer"&gt;Mureka tutorial&lt;/a&gt; and the &lt;a href="https://useapi.net/docs/articles/flowmusic-bash" rel="noopener noreferrer"&gt;Flow Music tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Short on time? The whole test is also a &lt;a href="https://youtu.be/9-tVK4SYuR4" rel="noopener noreferrer"&gt;15-minute YouTube video&lt;/a&gt; — a skimmable cut with every track's best 30 seconds back to back, loudness-matched, with the prompt, model, cost, and generation time on screen. The full-length tracks and the exact API call behind each one live on this page.&lt;/p&gt;

&lt;h3&gt;
  
  
  The lineup and what a track costs
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;useapi.net API&lt;/th&gt;
&lt;th&gt;Cost per track&lt;/th&gt;
&lt;th&gt;Official API&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mureka O2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-mureka-v1" rel="noopener noreferrer"&gt;Mureka API&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.0135&lt;/td&gt;
&lt;td&gt;Official &lt;a href="https://platform.mureka.ai/pricing" rel="noopener noreferrer"&gt;Mureka API&lt;/a&gt; starts at $1,000/month at 3¢/song&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mureka V9&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-mureka-v1" rel="noopener noreferrer"&gt;Mureka API&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.0135&lt;/td&gt;
&lt;td&gt;same as above&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MiniMax music-2.6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-music-create" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.16&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://platform.minimax.io/docs/guides/pricing-paygo" rel="noopener noreferrer"&gt;~$0.15/track&lt;/a&gt; up to 5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ElevenLabs music-v1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-music-create" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://elevenlabs.io/pricing/api" rel="noopener noreferrer"&gt;$0.15/min&lt;/a&gt;, about $0.75 for 5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lyria 3 Pro&lt;/td&gt;
&lt;td&gt;&lt;a href="https://useapi.net/docs/api-flowmusic-v1" rel="noopener noreferrer"&gt;Flow Music API&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;~$0.008–0.013&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://cloud.google.com/gemini-enterprise-agent-platform/generative-ai/pricing#lyria" rel="noopener noreferrer"&gt;$0.08/song&lt;/a&gt; on Google's official API&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Per-track figures are what the underlying account plan works out to — Mureka Premier at $27/month for 2,000 songs, PixVerse credits at $0.004 each on the $60/month Premium plan, Flow Music paid plans. On top of the account you pay useapi.net's flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; for API access to every supported service, with no per-generation surcharge. The standouts are at the extremes: Lyria through Flow Music runs six to ten times cheaper than Google's own API for the same model, and Mureka through useapi.net is about half the official per-song rate with no $1,000/month floor. For ElevenLabs the PixVerse route is about running everything through one account rather than price — at the one-minute tracks it likes to produce, the official API is cheaper.&lt;/p&gt;

&lt;p&gt;One playback note before you listen: Flow Music offers a lossless WAV alongside its m4a, so the Lyria players below are WAVs — the rest are the mp3s their APIs return.&lt;/p&gt;

&lt;h3&gt;
  
  
  How we tested
&lt;/h3&gt;

&lt;p&gt;Every prompt asked for "around 60 seconds" (spoiler: only one model listened — see what we learned). Generation times are wall-clock through the API, polled at 15-second intervals, so treat them as ballpark. Where a model titles its own output we kept the title. Tracks are complete and unedited.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 1 — Instrumentals
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Round 1: big-band noir
&lt;/h3&gt;

&lt;p&gt;A retro secret-agent groove — walking bass, stabbing brass, surf-twang guitar. Rhythm feel and section writing are hard to fake:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Big-band noir action theme, around 60 seconds. Walking upright-bass and
baritone-sax groove, snapping rimshot snare, stabbing trumpet-section hits,
vibraphone glints, surf-twang guitar riff over a chromatic minor progression,
roaring full-brass climax with crash cymbals. Retro secret-agent swagger,
punchy analog-style production.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “The Dead Drop” · 3:19 · generated in 119 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-1-big-band-noir" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Dead End Alley” · 3:28 · generated in 85 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-1-big-band-noir" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 2:11 · generated in 99 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-1-big-band-noir" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 1:00 · generated in 16 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-1-big-band-noir" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “The Shadow Trail” · 2:59 · generated in 34 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-1-big-band-noir" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Note the lengths: same brief, same "around 60 seconds" request — ElevenLabs delivered exactly 1:00, everyone else played on.&lt;/p&gt;

&lt;h3&gt;
  
  
  Round 2: liquid drum and bass
&lt;/h3&gt;

&lt;p&gt;Maximum contrast with round 1 — a steady 174 BPM groove exposes rhythm programming and texture instead of dynamics:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Liquid drum and bass instrumental, around 60 seconds. Fast rolling breakbeats
at 174 BPM, deep warm sub-bass, lush atmospheric pads, delicate piano motif,
airy wordless vocal-chop textures, smooth builds into a euphoric flowing drop.
Silky, melodic, late-night energy, pristine modern production.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “Silver Lining” · 3:19 · generated in 86 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-2-liquid-drum-and-bass" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Silken Motif” · 2:31 · generated in 67 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-2-liquid-drum-and-bass" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 2:22 · generated in 119 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-2-liquid-drum-and-bass" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 1:00 · generated in 16 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-2-liquid-drum-and-bass" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “Silky Liquid Flow” · 2:54 · generated in 50 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-2-liquid-drum-and-bass" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 2 — Vocals, model writes the lyrics
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Round 3: pop duet
&lt;/h3&gt;

&lt;p&gt;One sentence of direction, and a deliberate capability probe — a duet only works if the model can stage two voices. That is the thing to listen for in this round, and it is the clearest differentiator of the six.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A playful pop duet between a male and a female singer about texting too late
at night, around 60 seconds, catchy back-and-forth chorus.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “Don’t Hit Send” · 3:18 · generated in 80 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-3-pop-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Midnight Dance” · 2:53 · generated in 62 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-3-pop-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 2:40 · generated in 97 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-3-pop-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 1:00 · generated in 16 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-3-pop-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “Don’t Say Goodnight” · 2:58 · generated in 79 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-3-pop-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Round 4: Spanish flamenco-pop
&lt;/h3&gt;

&lt;p&gt;The language probe — the prompt is English, the song should not be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A fiery flamenco-pop song in Spanish about summer rain, around 60 seconds,
passionate female vocals.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “El llanto del sol” · 3:59 · generated in 79 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-4-spanish-flamenco-pop" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Lluvia de Verano” · 2:32 · generated in 63 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-4-spanish-flamenco-pop" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 2:57 · generated in 113 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-4-spanish-flamenco-pop" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 1:00 · generated in 17 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-4-spanish-flamenco-pop" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “Tierra Mojada” · 2:34 · generated in 64 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-4-spanish-flamenco-pop" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All five accepted the brief and every model sang in Spanish. Lyria even wrote a full Spanish lyric sheet ("Cae el peso del cielo gris / Sobre el polvo de este jardín…") and titled the track accordingly, as did both Murekas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Part 3 — Vocals, our lyrics and an elaborate style brief
&lt;/h2&gt;

&lt;p&gt;For the final format each model received the same original lyrics plus a detailed production brief. Mureka takes these through &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-advanced" rel="noopener noreferrer"&gt;music/create-advanced&lt;/a&gt; (&lt;code&gt;lyrics&lt;/code&gt; + a comma-separated style &lt;code&gt;desc&lt;/code&gt; + &lt;code&gt;vocal_gender&lt;/code&gt;), PixVerse and Flow Music take a &lt;code&gt;lyrics&lt;/code&gt; field next to the style prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Round 5: deep house
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Verse]
Two shadows in a velvet room
Moving slow to a midnight tune
Say it soft, we do not need more
The bass is talking through the floor

[Chorus]
Keep it low light, low light, hold me near
All we need is the bassline here
Round and round till the morning shows
Low light, low light, do not let go
(do not let go, do not let go)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Deep house at 121 BPM. Rolling sub-bass groove, shuffled hi-hats, warm Rhodes
chord stabs, subtle chopped vocal echoes, smoky intimate female lead vocal,
understated hypnotic late-night club production.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “Low Light” · 3:13 · generated in 60 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-5-deep-house" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Low Light” · 2:39 · generated in 57 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-5-deep-house" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 1:06 · generated in 59 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-5-deep-house" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 0:40 · generated in 29 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-5-deep-house" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “Low Light (Take 2)” · 2:32 · generated in 44 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-5-deep-house" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Round 6: jazzy house duet
&lt;/h3&gt;

&lt;p&gt;The hardest brief of the set — a two-voice arrangement with live-jazz layers over a house groove, voice roles tagged in the lyrics. The tags are a hint, not an API parameter, so listen for who actually trades verses between a male and a female voice and who flattens it into one singer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Verse 1 - male]
Blue hour settles on the avenue
Trumpet smoke and a table for two
I talk in rhythm, you answer in rhyme
We swing together on borrowed time

[Verse 2 - female]
You bring the thunder of a double bass
I bring the shimmer of a satin dress
Piano is asking what the night is about
We are the answer when the lights go out

[Chorus - both]
Meet me in the blue hour, where the bass goes slow (blue hour, blue hour)
Sax on the corner and the lights burn low (burn low, burn low)
You take the high note, I will hold the ground
Blue hour, blue hour - do not stop the sound
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Jazzy deep house duet at 120 BPM. Rolling deep-house groove with swung hi-hats,
walking upright-bass motif over the sub, smoky muted trumpet and tenor-sax licks
answering the vocals, extended jazz piano chords, a male and a female lead
trading verses and joining in harmony on the chorus, small backing ensemble
echoing the hook, warm vinyl texture, sophisticated late-night club production.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mureka O2 — “Blue Hour” · 2:49 · generated in 59 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-6-jazzy-house-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mureka V9 — “Blue Hour” · 2:27 · generated in 72 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-6-jazzy-house-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MiniMax music-2.6 · 1:35 · generated in 62 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-6-jazzy-house-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElevenLabs music-v1 · 1:12 · generated in 32 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-6-jazzy-house-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lyria 3 Pro — “Blue Hour Duet (Retry)” · 3:03 · generated in 60 s&lt;/p&gt;

&lt;p&gt;🎧 &lt;a href="https://useapi.net/docs/articles/ai-music-api-comparison#round-6-jazzy-house-duet" rel="noopener noreferrer"&gt;Play on useapi.net&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What we learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Nobody has a duration parameter, and only one model listens to the prompt
&lt;/h3&gt;

&lt;p&gt;None of the five APIs exposes a track-length parameter. Every brief above asked for "around 60 seconds" — here is what that request was worth across all our runs, including test takes not published here:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Asked for ~60 s, got&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ElevenLabs music-v1&lt;/td&gt;
&lt;td&gt;1:00 on every prompt-only run&lt;/td&gt;
&lt;td&gt;the only model that treats it as a spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lyria 3 Pro&lt;/td&gt;
&lt;td&gt;~0:59 on 2 prompts, 2:30–3:03 on the rest&lt;/td&gt;
&lt;td&gt;occasionally&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MiniMax music-2.6&lt;/td&gt;
&lt;td&gt;1:20–2:57&lt;/td&gt;
&lt;td&gt;ignores it&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mureka O2 / V9&lt;/td&gt;
&lt;td&gt;2:30–4:00&lt;/td&gt;
&lt;td&gt;ignores it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The lever that actually works is lyric length. With our short one-verse-one-chorus lyrics in part 3, ElevenLabs came in at 0:40, MiniMax dropped to 1:06, and Mureka fell from its usual 3–4 minutes to as short as 0:50 in test takes. If you need a fixed-length cue, write fixed-length lyrics — or trim in post.&lt;/p&gt;

&lt;h3&gt;
  
  
  ElevenLabs refuses named artists and works, the rest do not
&lt;/h3&gt;

&lt;p&gt;In side experiments we prompted "in the spirit of the James Bond GoldenEye title sequence" and, separately, "in the spirit of Pendulum and The Prodigy". ElevenLabs music-v1 failed both generations at the service level — evidently a copyrighted-reference filter that catches both named works and named artists. Mureka O2, Mureka V9, MiniMax music-2.6, and Lyria 3 Pro accepted and generated both times. Style-descriptive prompts (like round 1's unnamed secret-agent brief) sail through everywhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  Speed, titles, and what lands in your bucket
&lt;/h3&gt;

&lt;p&gt;ElevenLabs is in a different speed class — 16 to 32 seconds per track in our runs, wall-clock through the API. Lyria followed at 34–79 s, with Mureka V9 at 57–85 s and both Mureka O2 and MiniMax spanning 59–119 s. Mureka and Lyria name their own tracks — every title above is model-written, and in part 3 both pulled the name from our lyric hook, quirky suffixes included ("Take 2" and "Retry" on the Lyria tracks are Lyria's own). The PixVerse-routed models return untitled files. Mureka gives you two variants per generation at 320 kbps, PixVerse one track at 192 kbps, and Flow Music usually an A/B pair with a lossless WAV available — the only lossless source in the group.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Which AI music API is the cheapest?&lt;/strong&gt; Per track in this lineup: Lyria 3 Pro via &lt;a href="https://useapi.net/docs/api-flowmusic-v1" rel="noopener noreferrer"&gt;Flow Music&lt;/a&gt; at roughly $0.008–0.013, then Mureka at $0.0135 (Premier plan rate, two variants per generation), MiniMax music-2.6 at $0.16, and ElevenLabs music-v1 at $0.60 via &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-music-create" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;. See the lineup for how these compare with the official APIs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I control how long the generated song is?&lt;/strong&gt; Not with a parameter — no API here has one. Asking in the prompt only works reliably on ElevenLabs. The dependable lever is lyric length: short lyrics produce short songs on every model that accepts custom lyrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I bring my own lyrics?&lt;/strong&gt; Yes on all five models: Mureka through &lt;a href="https://useapi.net/docs/api-mureka-v1/post-mureka-music-create-advanced" rel="noopener noreferrer"&gt;music/create-advanced&lt;/a&gt;, MiniMax and ElevenLabs through the PixVerse &lt;code&gt;lyrics&lt;/code&gt; field, and Lyria through the Flow Music &lt;code&gt;lyrics&lt;/code&gt; field. Tag structure with &lt;code&gt;[Verse]&lt;/code&gt; and &lt;code&gt;[Chorus]&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will these models imitate a named artist or song?&lt;/strong&gt; ElevenLabs refuses generation when the prompt names a work or artist — we hit its filter twice. The other four accepted named-reference prompts in our tests. Describing a style without names works on all five.&lt;/p&gt;




&lt;p&gt;Ready to run your own listening test? The whole experiment is one script — &lt;a href="https://github.com/useapi/ai-music-comparison" rel="noopener noreferrer"&gt;github.com/useapi/ai-music-comparison&lt;/a&gt; sends any brief (the six above are included) to all five models and downloads every track. Then dig deeper with the &lt;a href="https://useapi.net/docs/articles/mureka-bash" rel="noopener noreferrer"&gt;Mureka&lt;/a&gt; and &lt;a href="https://useapi.net/docs/articles/flowmusic-bash" rel="noopener noreferrer"&gt;Flow Music&lt;/a&gt; tutorials, the &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-music-create" rel="noopener noreferrer"&gt;PixVerse music endpoint&lt;/a&gt;, and a &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net subscription&lt;/a&gt; — one token, all five models.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>music</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Nano Banana 2 Lite vs 2 vs Pro: Google Flow Image Models Compared</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Thu, 02 Jul 2026 22:22:01 +0000</pubDate>
      <link>https://dev.to/useapi/nano-banana-2-lite-vs-2-vs-pro-google-flow-image-models-compared-3b15</link>
      <guid>https://dev.to/useapi/nano-banana-2-lite-vs-2-vs-pro-google-flow-image-models-compared-3b15</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Google Flow ships three Nano Banana image models — &lt;code&gt;nano-banana-2-lite&lt;/code&gt;, &lt;code&gt;nano-banana-2&lt;/code&gt;, and &lt;code&gt;nano-banana-pro&lt;/code&gt; — and you can drive all three from one prompt through the &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt;.&lt;/strong&gt; You use your own &lt;a href="https://labs.google/fx/tools/flow" rel="noopener noreferrer"&gt;Google Flow&lt;/a&gt; account, so there's no Google Cloud project, no API key, and no per-image metering — image generation is included on any &lt;a href="https://one.google.com/ai" rel="noopener noreferrer"&gt;Google AI&lt;/a&gt; plan, even a free one, where the official Gemini API bills $0.034–$0.134 per image.&lt;/p&gt;

&lt;p&gt;This guide runs the exact same prompt through Lite, 2, and Pro so you can see how they differ, then hands you a runnable Node.js script that generates the whole set in one command. Want a from-scratch how-to first? See the sibling &lt;a href="https://useapi.net/docs/articles/google-flow-images-bash" rel="noopener noreferrer"&gt;image-generation tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What are the three Nano Banana models?
&lt;/h3&gt;

&lt;p&gt;Pick a model per request with the &lt;code&gt;model&lt;/code&gt; field. If you omit it, Google Flow uses &lt;code&gt;nano-banana-2-lite&lt;/code&gt; — its default since July 2026. All three run on any Google AI subscription, including a free account.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model id&lt;/th&gt;
&lt;th&gt;Marketing name&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;References (I2I)&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;nano-banana-2-lite&lt;/code&gt; &lt;em&gt;(default)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://deepmind.google/models/gemini-image/flash-lite/" rel="noopener noreferrer"&gt;Nano Banana 2 Lite&lt;/a&gt; / Gemini 3.1 Flash-Lite Image&lt;/td&gt;
&lt;td&gt;fast, high-volume generation on any plan&lt;/td&gt;
&lt;td&gt;max 10&lt;/td&gt;
&lt;td&gt;fastest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nano-banana-2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://deepmind.google/models/gemini-image/flash/" rel="noopener noreferrer"&gt;Nano Banana 2&lt;/a&gt; / Gemini 3.1 Flash Image&lt;/td&gt;
&lt;td&gt;balanced quality and speed&lt;/td&gt;
&lt;td&gt;max 10&lt;/td&gt;
&lt;td&gt;fast&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nano-banana-pro&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;a href="https://deepmind.google/models/gemini-image/pro/" rel="noopener noreferrer"&gt;Nano Banana Pro&lt;/a&gt; / Gemini 3 Pro Image&lt;/td&gt;
&lt;td&gt;highest fidelity and instruction-following&lt;/td&gt;
&lt;td&gt;max 10&lt;/td&gt;
&lt;td&gt;slower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three accept the same aspect ratios (&lt;code&gt;16:9&lt;/code&gt;, &lt;code&gt;4:3&lt;/code&gt;, &lt;code&gt;1:1&lt;/code&gt;, &lt;code&gt;3:4&lt;/code&gt;, &lt;code&gt;9:16&lt;/code&gt;, plus &lt;code&gt;auto&lt;/code&gt; in image-to-image mode), &lt;code&gt;count&lt;/code&gt; (1–4), &lt;code&gt;seed&lt;/code&gt; for reproducibility, up to 10 reference images, inline &lt;code&gt;@&lt;/code&gt;-mentions, and 2K/4K upscaling. The deprecated aliases &lt;code&gt;imagen-4&lt;/code&gt; (Google removed Imagen from Flow in July 2026) and &lt;code&gt;nano-banana&lt;/code&gt; are still accepted and map to &lt;code&gt;nano-banana-2-lite&lt;/code&gt; and &lt;code&gt;nano-banana-2&lt;/code&gt; respectively. Full per-model detail is on the &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-images" rel="noopener noreferrer"&gt;POST /images&lt;/a&gt; reference.&lt;/p&gt;

&lt;h4&gt;
  
  
  Upscaling to 2K/4K
&lt;/h4&gt;

&lt;p&gt;Any generated image can be upscaled with &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-images-upscale" rel="noopener noreferrer"&gt;POST /images/upscale&lt;/a&gt;: pass its &lt;code&gt;mediaGenerationId&lt;/code&gt; and a &lt;code&gt;resolution&lt;/code&gt; of &lt;code&gt;2k&lt;/code&gt; (default) or &lt;code&gt;4k&lt;/code&gt;. The response is base64 in &lt;code&gt;encodedImage&lt;/code&gt;. &lt;code&gt;2k&lt;/code&gt; works on any plan; &lt;code&gt;4k&lt;/code&gt; requires a paid Google account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Image generation is included. You keep your normal &lt;a href="https://one.google.com/ai" rel="noopener noreferrer"&gt;Google AI&lt;/a&gt; account — even a free one works for images (a paid plan is only needed for video and &lt;code&gt;4k&lt;/code&gt; upscales) — plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net for API access to every service. No per-image metering, no per-call surcharge.&lt;/p&gt;

&lt;p&gt;Third-party &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt; by &lt;a href="https://useapi.net/" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; vs. the official &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt; — drive your own Google Flow subscription instead of metered, per-call API billing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Official Gemini API&lt;/th&gt;
&lt;th&gt;useapi.net (Flow Pro)&lt;/th&gt;
&lt;th&gt;useapi.net (Flow Ultra)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Fast — 8s clip&lt;/td&gt;
&lt;td&gt;$0.80&lt;/td&gt;
&lt;td&gt;~$0.40&lt;/td&gt;
&lt;td&gt;~$0.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Quality — 8s clip&lt;/td&gt;
&lt;td&gt;$3.20&lt;/td&gt;
&lt;td&gt;~$2.00&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite — 8s clip&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;~$0.20&lt;/td&gt;
&lt;td&gt;~$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite, lower priority&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$0 &lt;em&gt;(Ultra $199)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Omni Flash — 8s clip&lt;/td&gt;
&lt;td&gt;— &lt;em&gt;(Flow only)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;~$0.50&lt;/td&gt;
&lt;td&gt;~$0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana Pro — per image&lt;/td&gt;
&lt;td&gt;$0.134&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2 — per image&lt;/td&gt;
&lt;td&gt;$0.067&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana 2 Lite — per image&lt;/td&gt;
&lt;td&gt;$0.034&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Expected daily output — Ultra ($199/mo) plan. Daily averages observed on top real accounts. These are expected, not guaranteed: Google governs the underlying Flow allowances and they vary with demand.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Free workload (no Flow credits spent)&lt;/th&gt;
&lt;th&gt;Avg generations / day*&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite — lower priority video&lt;/td&gt;
&lt;td&gt;~1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images — Nano Banana 2 Lite, Nano Banana 2, Nano Banana Pro&lt;/td&gt;
&lt;td&gt;up to ~500&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;small&gt;*Averages from the busiest real accounts — not guarantees. They are set by Google's own allowances and fluctuate with demand. Applies only to the free lower-priority video queue and image generation. Credit-metered models (Veo 3.1 Fast / Quality and Gemini Omni Flash) are not shown here — their volume is bounded by your plan's monthly Flow credits (see the &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;credit table&lt;/a&gt;), not a free allowance.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;Veo is billed per second on the Gemini API (an 8-second 720p clip shown) and images are priced per image. Through useapi.net you spend your own Flow plan credits and pay a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; — image generation is included on any Google AI plan, and there is no Google Cloud project, API key, or per-call metering.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Full plan and credit details are on the &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow overview&lt;/a&gt;. See the &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt; to connect your account.&lt;/p&gt;

&lt;h3&gt;
  
  
  The comparison prompt
&lt;/h3&gt;

&lt;p&gt;A model comparison is only useful if the prompt is hard. This one is a deliberately absurd, single-frame scene that stress-tests several things at once: a named photographic style (David LaChapelle), a multi-subject spatial layout (a swarm forming an arrow in the top-left, a forced-perspective bee in the bottom-right), prop fidelity (dripping honeycomb), a specific comedic facial expression (&lt;code&gt;o_O&lt;/code&gt; cartoon eyes), and a clashing tone — all in one cohesive image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A visually breathtaking, beautifully absurd, single-frame photograph in the hyper-saturated,
glossy, surreal-comedy editorial style of David LaChapelle, shot at a sun-dappled backyard
apiary at golden hour on an 85mm f/1.4 lens with creamy shallow depth of field. In the center
midground, a gorgeous, radiant young woman beekeeper with an elegant figure, flawless glowing
sun-kissed skin and a warm playful smile, incongruously wearing a tiny mini bikini and a
beekeeper's veil hat pushed back off her face, stands among the wooden hive boxes on the grass and lifts a single
open beehive frame heavy with golden honeycomb, thick honey oozing and stringing down in glossy
ribbons and catching the light. She looks directly into the camera, delighted and completely
unbothered by the bees swirling around her. In the top-left of the frame, a dense swarm of bees
bunches together and organizes into a bold, unmistakable arrow / pointer shape aimed straight at
her, as if frantically calling everyone's attention. In the extreme bottom-right foreground of
the exact same scene, photobombing the lens, is a huge forced-perspective close-up of a single
frazzled worker bee, staring directly into the camera with bulging, mind-blown "o_O" cartoon
googly eyes, completely frozen in comical disbelief. Single cohesive image, seamless depth of
field, no cut-ins, warm dynamic backlighting, glistening honey highlights, crazy situational
comedy, hyper-detailed, masterpiece.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Generate across all three models
&lt;/h3&gt;

&lt;p&gt;You need a useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and a connected &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;Google Flow account&lt;/a&gt;. &lt;code&gt;POST /images&lt;/code&gt; is synchronous — one call blocks until the images are ready (typically 20–60 seconds, and the Pro model can take up to ~2 minutes under load) and returns a &lt;code&gt;media[]&lt;/code&gt; array with one entry per image, so there's no &lt;code&gt;jobid&lt;/code&gt; to poll.&lt;/p&gt;

&lt;p&gt;A single call — swap &lt;code&gt;model&lt;/code&gt; to compare:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/google-flow/images"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "nano-banana-pro",
    "aspectRatio": "9:16",
    "count": 4,
    "prompt": "A beekeeper at golden hour lifting a dripping honeycomb frame, a swarm forming an arrow in the sky, a forced-perspective bee with o_O googly eyes in the foreground"
  }'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; result.json

&lt;span class="c"&gt;# each image is at .media[N].image.generatedImage.fifeUrl&lt;/span&gt;
curl &lt;span class="nt"&gt;-o&lt;/span&gt; pro_1.jpg &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.media[0].image.generatedImage.fifeUrl'&lt;/span&gt; result.json&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run the full comparison in one command, the Node.js script reads &lt;a href="https://github.com/useapi/google-flow-api/blob/main/nano-banana-compare/prompts.json" rel="noopener noreferrer"&gt;&lt;code&gt;prompts.json&lt;/code&gt;&lt;/a&gt; — one entry per model, all with the same prompt — submits each, and downloads every returned image with a model-labeled filename. You need &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; v21+. Put both files in a folder and run &lt;code&gt;node ./google-flow-nano-banana-compare.mjs API_TOKEN EMAIL&lt;/code&gt;, where &lt;code&gt;API_TOKEN&lt;/code&gt; is your useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and &lt;code&gt;EMAIL&lt;/code&gt; is your connected &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;Google Flow account&lt;/a&gt;. The script looks the account up by email and checks its &lt;code&gt;health&lt;/code&gt; before submitting, and sends no &lt;code&gt;captchaToken&lt;/code&gt; — the useapi.net worker solves the reCAPTCHA automatically.&lt;/p&gt;

&lt;p&gt;Prefer to clone and run it? The complete script, a Python port, and &lt;code&gt;prompts.json&lt;/code&gt; are on GitHub in &lt;a href="https://github.com/useapi/google-flow-api/tree/main/nano-banana-compare" rel="noopener noreferrer"&gt;&lt;code&gt;useapi/google-flow-api&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;Here is the same beekeeper prompt rendered by each model at 9:16, generated through this Google Flow API. The differences are consistent: Pro is the most polished and the most literal about the instructions, 2 is the most dynamic, and Lite is the fastest while staying close.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano-banana-pro&lt;/code&gt; — the most polished and editorial, and the only model that reliably renders the veil netting, the bees crawling on the comb, and the literal &lt;code&gt;o_O&lt;/code&gt; cartoon eyes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358032640639180%2Fnano-banana-pro.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358032640639180%2Fnano-banana-pro.jpeg" alt="Nano Banana Pro beekeeper result via the Google Flow API" width="768" height="1376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano-banana-2&lt;/code&gt; — the most dynamic and energetic interpretation, with the clearest arrow-shaped swarm and lots of situational detail (work boots, bees on the frame).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358033215131780%2Fnano-banana-2.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358033215131780%2Fnano-banana-2.jpeg" alt="Nano Banana 2 beekeeper result via the Google Flow API" width="768" height="1376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano-banana-2-lite&lt;/code&gt; — the fastest of the three (roughly half Pro's time in our runs) while keeping the composition, the honey drip, and the googly-eyed foreground bee.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358033676632074%2Fnano-banana-2-lite.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1522358033676632074%2Fnano-banana-2-lite.jpeg" alt="Nano Banana 2 Lite beekeeper result via the Google Flow API" width="768" height="1376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Which Nano Banana model should you use?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reach for &lt;code&gt;nano-banana-pro&lt;/code&gt; when fidelity matters most — hero shots, complex multi-subject scenes, precise text or instruction-following. It is the slowest of the three.&lt;/li&gt;
&lt;li&gt;Reach for &lt;code&gt;nano-banana-2&lt;/code&gt; for a strong balance of quality and speed, or when you want a more dynamic, stylized read of a prompt.&lt;/li&gt;
&lt;li&gt;Reach for &lt;code&gt;nano-banana-2-lite&lt;/code&gt; (the default) for iteration and high-volume batches where speed matters and the quality is still very close.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because they share the same request shape, switching is a one-word change to &lt;code&gt;model&lt;/code&gt; — generate a batch across all three and pick the winner, exactly like the script above does.&lt;/p&gt;

&lt;h3&gt;
  
  
  Run it yourself
&lt;/h3&gt;

&lt;p&gt;The complete Node.js script, a Python port, and &lt;code&gt;prompts.json&lt;/code&gt; live in &lt;a href="https://github.com/useapi/google-flow-api/tree/main/nano-banana-compare" rel="noopener noreferrer"&gt;&lt;code&gt;useapi/google-flow-api/nano-banana-compare&lt;/code&gt;&lt;/a&gt;. Clone it, edit &lt;code&gt;prompts.json&lt;/code&gt;, and run one command to generate the full comparison set from your own account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently asked questions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Is there a Nano Banana 2 or Nano Banana Pro API?&lt;/strong&gt; Yes — two ways. Google offers these models on the official &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt;, which meters per image on a Google Cloud project. Or use useapi.net's &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt;, which exposes the same models as &lt;code&gt;nano-banana-2&lt;/code&gt;, &lt;code&gt;nano-banana-2-lite&lt;/code&gt;, and &lt;code&gt;nano-banana-pro&lt;/code&gt; on the &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-images" rel="noopener noreferrer"&gt;POST /images&lt;/a&gt; endpoint — driving your own Google Flow account with no Cloud project and no per-image metering, on any Google AI plan including the free tier.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the difference between Nano Banana 2 Lite, 2, and Pro?&lt;/strong&gt; They are three tiers of Google's Nano Banana image family. &lt;code&gt;nano-banana-pro&lt;/code&gt; (Gemini 3 Pro Image) is the highest-fidelity model, &lt;code&gt;nano-banana-2&lt;/code&gt; (Gemini 3.1 Flash Image) balances quality and speed, and &lt;code&gt;nano-banana-2-lite&lt;/code&gt; (Gemini 3.1 Flash-Lite Image) is the fastest and the default. All three accept up to 10 reference images, the &lt;code&gt;auto&lt;/code&gt; aspect ratio in image-to-image mode, and 2K/4K upscaling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Which Nano Banana model is best?&lt;/strong&gt; For maximum quality, &lt;code&gt;nano-banana-pro&lt;/code&gt;. For everyday and high-volume work, &lt;code&gt;nano-banana-2-lite&lt;/code&gt; is the default and the fastest, with quality very close to the larger models. See Which model should you use? above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is it free?&lt;/strong&gt; Image generation works on any &lt;a href="https://one.google.com/ai" rel="noopener noreferrer"&gt;Google AI&lt;/a&gt; plan, including a free account, plus a flat monthly &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;subscription&lt;/a&gt; to useapi.net for API access to every service. The official &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt; meters per image instead — see Pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much does the Nano Banana API cost?&lt;/strong&gt; Through useapi.net there is no per-image charge — you keep your own Google AI plan (a free account works for images) and pay a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; for API access to every service. On the official Gemini API the same models meter per image: roughly $0.034 (2 Lite), $0.067 (2), and $0.134 (Pro) per 1K image — see Pricing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do generations get moderated?&lt;/strong&gt; Google applies content moderation, and a rejected request returns an empty result. Moderation decisions vary between requests and between models, so retrying, editing the prompt, or switching models often succeeds — each Nano Banana model moderates a little differently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do I need a captcha or a Google Cloud project?&lt;/strong&gt; No Google Cloud project. Generation requires reCAPTCHA, but you don't solve it — the useapi.net worker does it automatically, and your first Google Flow account comes with 300 free captcha credits (a one-time grant powered by CapSolver). The script here sends no &lt;code&gt;captchaToken&lt;/code&gt; and relies on that automatic solving.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns.&lt;/p&gt;

&lt;p&gt;Check our &lt;a href="https://github.com/useapi/google-flow-api" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; with code examples.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cross posted
&lt;/h4&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>nanobanana</category>
      <category>googleflow</category>
    </item>
    <item>
      <title>17+ AI Image Models: The Showdown</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Sat, 27 Jun 2026 20:03:57 +0000</pubDate>
      <link>https://dev.to/useapi/17-ai-image-models-the-showdown-18oc</link>
      <guid>https://dev.to/useapi/17-ai-image-models-the-showdown-18oc</guid>
      <description>&lt;p&gt;&lt;em&gt;Midjourney v7 · GPT Image 2/1.5/Mini · Nano Banana Pro/2/1 · Kling Kolors v3.0/v2.1 · Seedream 5.0→4.0 · Imagen 4 · Qwen Image · Runway Gen4&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;We ran the same text-to-image prompt through 17 image generation models — all of them available through the &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; API — to see how each one interprets it. useapi.net is a third-party API that automates these models across six provider platforms (MiniMax, PixVerse, Dreamina, Kling, Runway, and Google Flow), so every model in this showdown is reachable from one account and token. All images use 16:9 aspect ratio with resolution closest to 1080p — not all models support it since some start at 2K and up.&lt;/p&gt;

&lt;p&gt;Google Flow's version of Nano Banana models was too restrictive for this prompt, so Nano Banana generation was done via &lt;a href="https://pixverse.ai" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt; instead.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this prompt
&lt;/h3&gt;

&lt;p&gt;This prompt stress-tests NSFW content moderation boundaries, multi-subject composition with precise spatial layout, forced perspective depth of field, contradictory context (bikini + jackhammer), specific animal facial expressions, prop fidelity, single cohesive frame rendering, dynamic action, and clashing tone contrast — all in one image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prompt
&lt;/h3&gt;

&lt;p&gt;14 of 17 models used the same prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A visually breathtaking, beautifully absurd, single-frame street photography
shot on a sunny city sidewalk. In the center midground, a gorgeous, stunningly
beautiful young woman with a soft, elegant feminine figure, a flawless glowing
complexion, and a radiant, upbeat laugh is wearing a tiny, elegant black-lace
string bikini. She is effortlessly operating a heavy, rattling, bright yellow
pneumatic jackhammer, busting up the concrete pavement while dust and debris
fly around her beautifully. In the extreme bottom-right foreground of the exact
same scene, standing on the sidewalk and photobombing the camera lens, is a
huge forced-perspective close-up of a city squirrel. The squirrel is holding a
half-eaten hotdog, staring directly into the lens with bulging, mind-blown
"o_O" eyes, completely frozen in comical disbelief. Single cohesive image,
seamless depth of field, no cut-ins, dynamic lighting, crazy situational
comedy, delicate feminine features contrasting with heavy machinery, masterpiece.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Imagen 4&lt;/strong&gt; — Google's content moderation required a toned-down version: &lt;code&gt;...is wearing a stylish summer swimsuit...&lt;/code&gt; (all other text identical).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT Image 2&lt;/strong&gt; — like Imagen 4, OpenAI's content moderation required the toned-down version (&lt;code&gt;...stylish summer swimsuit...&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Midjourney v7&lt;/strong&gt; — rewritten for Midjourney's style:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A wide-angle GoPro action-camera shot of a sunny city sidewalk. In the extreme
bottom-right foreground, a shocked squirrel's face photobombs the lens while
holding a hotdog. In the center midground, a stunning woman in a tiny black
lace bikini is clearly visible and in sharp focus, operating a heavy yellow
jackhammer. Concrete debris flying, 8k, deep depth of field, f/11, high-speed
shutter, absurd comedy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  How it was generated
&lt;/h3&gt;

&lt;p&gt;All images were generated on the actual provider websites (&lt;a href="https://pixverse.ai" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, &lt;a href="https://dreamina.bytedance.com" rel="noopener noreferrer"&gt;Dreamina&lt;/a&gt;, &lt;a href="https://hailuoai.video" rel="noopener noreferrer"&gt;MiniMax/HailuoAI&lt;/a&gt;, &lt;a href="https://app.runwayml.com" rel="noopener noreferrer"&gt;Runway&lt;/a&gt;, &lt;a href="https://labs.google/fx/tools/video-fx" rel="noopener noreferrer"&gt;Google Flow&lt;/a&gt;, &lt;a href="https://klingai.com" rel="noopener noreferrer"&gt;Kling&lt;/a&gt;, &lt;a href="https://midjourney.com" rel="noopener noreferrer"&gt;Midjourney&lt;/a&gt;) — our &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;third-party API&lt;/a&gt; is just a smart proxy service that automates interaction with the provider websites and does not generate images itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unlimited generations
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-dreamina-v1" rel="noopener noreferrer"&gt;Dreamina&lt;/a&gt;, and &lt;a href="https://useapi.net/docs/api-runwayml-v1" rel="noopener noreferrer"&gt;Runway&lt;/a&gt; support unlimited image generations for select models depending on the underlying website subscription plan.&lt;/p&gt;




&lt;h2&gt;
  
  
  Midjourney v7
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666585277403286%2Fmidjourney-v7_via_midjourney_api_by_useapi.net.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666585277403286%2Fmidjourney-v7_via_midjourney_api_by_useapi.net.jpeg" width="799" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666585277403286/midjourney-v7_via_midjourney_api_by_useapi.net.jpeg" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Midjourney v7 via &lt;a href="https://useapi.net/docs/api-minimax-v1" rel="noopener noreferrer"&gt;MiniMax API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt; (model &lt;code&gt;midjourney-v7&lt;/code&gt;)&lt;/p&gt;




&lt;h2&gt;
  
  
  GPT Image 2
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1520499902638194729%2Fgpt-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1520499902638194729%2Fgpt-2.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1520499902638194729/gpt-2.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;GPT Image 2 (OpenAI) via &lt;a href="https://useapi.net/docs/api-minimax-v1" rel="noopener noreferrer"&gt;MiniMax API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt; (model &lt;code&gt;gpt-image-2&lt;/code&gt;)&lt;/p&gt;




&lt;h2&gt;
  
  
  GPT Image 1.5
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666582333263962%2Fgpt-image-1.5_via_minimax_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666582333263962%2Fgpt-image-1.5_via_minimax_api_by_useapi.net.png" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666582333263962/gpt-image-1.5_via_minimax_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;GPT Image 1.5 (OpenAI) via &lt;a href="https://useapi.net/docs/api-minimax-v1" rel="noopener noreferrer"&gt;MiniMax API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-minimax-v1/post-minimax-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  GPT Image 1 Mini
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666582811283536%2Fgpt-image-1-mini_via_runway_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666582811283536%2Fgpt-image-1-mini_via_runway_api_by_useapi.net.png" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666582811283536/gpt-image-1-mini_via_runway_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;GPT Image 1 Mini (OpenAI) via &lt;a href="https://useapi.net/docs/api-runwayml-v1" rel="noopener noreferrer"&gt;Runway API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Nano Banana Pro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666166098792699%2Fnano-banana-pro_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666166098792699%2Fnano-banana-pro_via_pixverse_api_by_useapi.net.png" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666166098792699/nano-banana-pro_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Nano Banana Pro (&lt;a href="https://deepmind.google/technologies/gemini/" rel="noopener noreferrer"&gt;Gemini 3.0&lt;/a&gt;) via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Nano Banana 2
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666581787742329%2Fnano-banana-2_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666581787742329%2Fnano-banana-2_via_pixverse_api_by_useapi.net.png" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666581787742329/nano-banana-2_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Nano Banana 2 (&lt;a href="https://deepmind.google/technologies/gemini/flash/" rel="noopener noreferrer"&gt;Gemini 3.1 Flash&lt;/a&gt;) via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Nano Banana
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666585768398909%2Fnano-banana_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666585768398909%2Fnano-banana_via_pixverse_api_by_useapi.net.png" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666585768398909/nano-banana_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Nano Banana (&lt;a href="https://deepmind.google/technologies/gemini/flash/" rel="noopener noreferrer"&gt;Gemini 2.5 Flash&lt;/a&gt;) via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Kling Kolors v3.0
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666584841191696%2Fkling-kolors-v3.0_via_kling_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666584841191696%2Fkling-kolors-v3.0_via_kling_api_by_useapi.net.png" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666584841191696/kling-kolors-v3.0_via_kling_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Kling Kolors v3.0 via &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-images-kolors" rel="noopener noreferrer"&gt;POST images/kolors&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Kling Kolors v2.1
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666584078094427%2Fkling-kolors-v2.1_via_kling_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666584078094427%2Fkling-kolors-v2.1_via_kling_api_by_useapi.net.png" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666584078094427/kling-kolors-v2.1_via_kling_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Kling Kolors v2.1 via &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-images-kolors" rel="noopener noreferrer"&gt;POST images/kolors&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seedream 5.0 Lite
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666170389696623%2Fseedream-5.0-lite_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666170389696623%2Fseedream-5.0-lite_via_pixverse_api_by_useapi.net.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666170389696623/seedream-5.0-lite_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seed.bytedance.com/en/seedream" rel="noopener noreferrer"&gt;Seedream 5.0 Lite&lt;/a&gt; via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seedream 4.6
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666169714282556%2Fseedream-4.6_via_dreamina_api_by_useapi.net.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666169714282556%2Fseedream-4.6_via_dreamina_api_by_useapi.net.jpeg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666169714282556/seedream-4.6_via_dreamina_api_by_useapi.net.jpeg" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seed.bytedance.com/en/seedream" rel="noopener noreferrer"&gt;Seedream 4.6&lt;/a&gt; via &lt;a href="https://useapi.net/docs/api-dreamina-v1" rel="noopener noreferrer"&gt;Dreamina API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-dreamina-v1/post-dreamina-images" rel="noopener noreferrer"&gt;POST images&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seedream 4.5
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666169340854312%2Fseedream-4.5_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666169340854312%2Fseedream-4.5_via_pixverse_api_by_useapi.net.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666169340854312/seedream-4.5_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seed.bytedance.com/en/seedream" rel="noopener noreferrer"&gt;Seedream 4.5&lt;/a&gt; via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seedream 4.1
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666168393207818%2Fseedream-4.1_via_dreamina_api_by_useapi.net.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666168393207818%2Fseedream-4.1_via_dreamina_api_by_useapi.net.jpeg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666168393207818/seedream-4.1_via_dreamina_api_by_useapi.net.jpeg" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seed.bytedance.com/en/seedream" rel="noopener noreferrer"&gt;Seedream 4.1&lt;/a&gt; via &lt;a href="https://useapi.net/docs/api-dreamina-v1" rel="noopener noreferrer"&gt;Dreamina API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-dreamina-v1/post-dreamina-images" rel="noopener noreferrer"&gt;POST images&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Seedream 4.0
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666167952539741%2Fseedream-4.0_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666167952539741%2Fseedream-4.0_via_pixverse_api_by_useapi.net.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666167952539741/seedream-4.0_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://seed.bytedance.com/en/seedream" rel="noopener noreferrer"&gt;Seedream 4.0&lt;/a&gt; via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Imagen 4
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666583297691739%2Fimagen-4_via_google-flow_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666583297691739%2Fimagen-4_via_google-flow_api_by_useapi.net.png" width="799" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666583297691739/imagen-4_via_google-flow_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Imagen 4 (Google) via &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-images" rel="noopener noreferrer"&gt;POST images&lt;/a&gt; Note: uses toned-down prompt (see above)&lt;/p&gt;




&lt;h2&gt;
  
  
  Qwen Image
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666166731997286%2Fqwen-image_via_pixverse_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666166731997286%2Fqwen-image_via_pixverse_api_by_useapi.net.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666166731997286/qwen-image_via_pixverse_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Qwen Image (&lt;a href="https://github.com/QwenLM/Qwen2.5-VL" rel="noopener noreferrer"&gt;Qwen2.5-VL&lt;/a&gt;) via &lt;a href="https://useapi.net/docs/api-pixverse-v2" rel="noopener noreferrer"&gt;PixVerse API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-pixverse-v2/post-pixverse-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Runway Gen4
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666167357214730%2Frunway-gen4_via_runway_api_by_useapi.net.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdemo.useapi.net%2Fdiscord-cdn-proxy%2F%3Fhttps%3A%2F%2Fmedia.discordapp.net%2Fattachments%2F1239264794394234985%2F1480666167357214730%2Frunway-gen4_via_runway_api_by_useapi.net.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://media.discordapp.net/attachments/1239264794394234985/1480666167357214730/runway-gen4_via_runway_api_by_useapi.net.png" rel="noopener noreferrer"&gt;open in new tab&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Runway Gen4 via &lt;a href="https://useapi.net/docs/api-runwayml-v1" rel="noopener noreferrer"&gt;Runway API&lt;/a&gt; — &lt;a href="https://useapi.net/docs/api-runwayml-v1/post-runwayml-images-create" rel="noopener noreferrer"&gt;POST images/create&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>imagegeneration</category>
      <category>comparison</category>
      <category>generativeai</category>
    </item>
    <item>
      <title>How to Generate AI Video with Kling v3 via the Kling API</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Mon, 22 Jun 2026 05:46:24 +0000</pubDate>
      <link>https://dev.to/useapi/how-to-generate-ai-video-with-kling-v3-via-the-kling-api-5d4j</link>
      <guid>https://dev.to/useapi/how-to-generate-ai-video-with-kling-v3-via-the-kling-api-5d4j</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Kling AI is rated by independent text-to-video leaderboards among the strongest models for prompt adherence and motion realism — and you can drive every Kling model from code against your own account.&lt;/strong&gt; &lt;a href="https://app.klingai.com" rel="noopener noreferrer"&gt;Kling AI&lt;/a&gt; is the generative video service from Chinese short-video giant &lt;a href="https://www.kuaishou.com/en" rel="noopener noreferrer"&gt;Kuaishou Technology&lt;/a&gt;, and &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; fronts it with a third-party &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API&lt;/a&gt; that runs your own Kling account over a standard REST endpoint — no enterprise contract, no per-call billing from us.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported models
&lt;/h3&gt;

&lt;p&gt;Pick a model per request with the &lt;code&gt;model_name&lt;/code&gt; field on &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-videos-text2video" rel="noopener noreferrer"&gt;POST /videos/text2video&lt;/a&gt;. &lt;code&gt;kling-v1-6&lt;/code&gt; is the default. Capabilities differ by version:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Durations&lt;/th&gt;
&lt;th&gt;Modes / resolution&lt;/th&gt;
&lt;th&gt;Audio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v3-0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3–15s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;std&lt;/code&gt; 720p · &lt;code&gt;pro&lt;/code&gt; 1080p · &lt;code&gt;4k&lt;/code&gt; 4K&lt;/td&gt;
&lt;td&gt;Default on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v3-0-turbo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;3–15s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;std&lt;/code&gt; 720p · &lt;code&gt;pro&lt;/code&gt; 1080p&lt;/td&gt;
&lt;td&gt;Always on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v2-6&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5 / 10s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;std&lt;/code&gt; 720p · &lt;code&gt;pro&lt;/code&gt; 1080p&lt;/td&gt;
&lt;td&gt;Native Audio (&lt;code&gt;pro&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v2-5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5 / 10s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;pro&lt;/code&gt; 1080p only&lt;/td&gt;
&lt;td&gt;Sound effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v2-1-master&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5 / 10s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;pro&lt;/code&gt; 1080p only&lt;/td&gt;
&lt;td&gt;Sound effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;kling-v1-6&lt;/code&gt; (default)&lt;/td&gt;
&lt;td&gt;5 / 10s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;std&lt;/code&gt; 720p · &lt;code&gt;pro&lt;/code&gt; 1080p&lt;/td&gt;
&lt;td&gt;Sound effects&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;kling-v1-5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;5 / 10s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;std&lt;/code&gt; 720p · &lt;code&gt;pro&lt;/code&gt; 1080p&lt;/td&gt;
&lt;td&gt;Sound effects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Model &lt;code&gt;v3-0&lt;/code&gt; is the most capable: it adds &lt;code&gt;4k&lt;/code&gt; mode and audio on by default. Model &lt;code&gt;v3-0-turbo&lt;/code&gt; is the faster v3 — it keeps v3.0 quality with shorter generation times, audio always on, and &lt;code&gt;std&lt;/code&gt;/&lt;code&gt;pro&lt;/code&gt; modes (no &lt;code&gt;4k&lt;/code&gt;). Model &lt;code&gt;2.6&lt;/code&gt; produces Native Audio, but only in &lt;code&gt;pro&lt;/code&gt; mode. The &lt;code&gt;negative_prompt&lt;/code&gt; and &lt;code&gt;cfg_scale&lt;/code&gt; parameters apply only to the 1.x models — &lt;code&gt;2.5&lt;/code&gt;, &lt;code&gt;2.6&lt;/code&gt;, and &lt;code&gt;3.0&lt;/code&gt; do not support &lt;code&gt;negative_prompt&lt;/code&gt;, and &lt;code&gt;cfg_scale&lt;/code&gt; is a 1.x-only control. The same account and token also drive Kling's multi-shot storytelling, Video Elements, Avatars, and lip-sync — see the &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API overview&lt;/a&gt; for the full lineup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;You keep your normal &lt;a href="https://kling.ai/app/membership/membership-plan" rel="noopener noreferrer"&gt;Kling&lt;/a&gt; website subscription for the underlying account — Kling starts with a free tier and a $10/month Standard plan — and add a single flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net that covers API access to every supported service, with no per-generation surcharge from us. Generations draw from your Kling account's own credit balance at Kling's standard rates, which vary by model, mode, duration, and audio. The &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API overview&lt;/a&gt; has a live cost calculator that maps each model and mode to its credit cost for your plan.&lt;/p&gt;

&lt;p&gt;This is the consumer-account route. Kuaishou's &lt;a href="https://klingai.com/global/dev/pricing" rel="noopener noreferrer"&gt;official Kling API&lt;/a&gt; bills per generation at developer rates on a separate developer account, while useapi.net automates the consumer account you already pay for at the &lt;a href="https://kling.ai/app/membership/membership-plan" rel="noopener noreferrer"&gt;website subscription&lt;/a&gt; price.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate a video in two API calls
&lt;/h3&gt;

&lt;p&gt;You need a useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and a connected &lt;a href="https://useapi.net/docs/start-here/setup-kling" rel="noopener noreferrer"&gt;Kling account&lt;/a&gt; — export the token so the &lt;code&gt;curl&lt;/code&gt; examples below run as-is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"user:1234-..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generation is asynchronous — the create call returns a task object immediately, then you poll until the video is ready.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Submit the job&lt;/strong&gt; — &lt;code&gt;POST https://api.useapi.net/v1/kling/videos/text2video&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/kling/videos/text2video"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "prompt": "A majestic mountain landscape with snow-capped peaks and flowing rivers, camera slowly panning right",
    "model_name": "kling-v3-0",
    "aspect_ratio": "16:9",
    "mode": "pro",
    "duration": "5"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response returns immediately with a task object. The task id you poll on is &lt;code&gt;task.id&lt;/code&gt; (a number):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"task"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123456789&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"m2v_aio2video"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"submitted"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status_final"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"works"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"submitted"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status_final"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;email&lt;/code&gt; field is required in the body only when you have more than one Kling account configured. A &lt;code&gt;500&lt;/code&gt; from Kling almost always means a content-moderation rejection rather than a server fault — read the &lt;code&gt;error&lt;/code&gt; text (the &lt;code&gt;message&lt;/code&gt; field is generic and often misleading) to tell them apart.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Poll for the result&lt;/strong&gt; — &lt;code&gt;GET https://api.useapi.net/v1/kling/tasks/{task_id}&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.useapi.net/v1/kling/tasks/123456789?email=user@example.com"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The task is done when &lt;code&gt;status_final&lt;/code&gt; is &lt;code&gt;true&lt;/code&gt;. Success is &lt;code&gt;status_name: "succeed"&lt;/code&gt; (&lt;code&gt;status: 99&lt;/code&gt;); the MP4 is in &lt;code&gt;works[0].resource.resource&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"succeed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status_final"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"works"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"workId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;123456789&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"status_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"succeed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://s21-kling.klingai.com/....mp4"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"height"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1268&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"width"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;724&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"duration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5041&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The MP4 at &lt;code&gt;works[0].resource.resource&lt;/code&gt; is watermarked. To get the clean, non-watermarked master, take the &lt;code&gt;workId&lt;/code&gt; from the &lt;code&gt;works&lt;/code&gt; array and call &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-assets-download" rel="noopener noreferrer"&gt;GET /assets/download&lt;/a&gt; — it returns a &lt;code&gt;cdnUrl&lt;/code&gt; to the file (a single &lt;code&gt;workId&lt;/code&gt; plus a single &lt;code&gt;fileTypes&lt;/code&gt; value yields a direct MP4 link, otherwise a &lt;code&gt;.zip&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.useapi.net/v1/kling/assets/download?email=user@example.com&amp;amp;workIds=123456789&amp;amp;fileTypes=MP4"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A video typically finishes in a few minutes depending on model, mode, and duration — &lt;code&gt;std&lt;/code&gt; is faster than &lt;code&gt;pro&lt;/code&gt; or &lt;code&gt;4k&lt;/code&gt;. Prefer not to poll? Pass a &lt;code&gt;replyUrl&lt;/code&gt; in the create body to receive a webhook callback when the task completes. On the poll, a &lt;code&gt;404&lt;/code&gt; means the task was deleted, failed at moderation, or your Kling account ran out of credits — check your balance at &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-accounts-email" rel="noopener noreferrer"&gt;GET /accounts/&lt;code&gt;email&lt;/code&gt;&lt;/a&gt;. The terminal failure statuses are &lt;code&gt;6&lt;/code&gt;, &lt;code&gt;7&lt;/code&gt;, &lt;code&gt;9&lt;/code&gt;, &lt;code&gt;50&lt;/code&gt;, &lt;code&gt;53&lt;/code&gt;, &lt;code&gt;54&lt;/code&gt;, and &lt;code&gt;58&lt;/code&gt; (all &lt;code&gt;status_final: true&lt;/code&gt;); see &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-tasks-task_id#model" rel="noopener noreferrer"&gt;GET /tasks/&lt;code&gt;task_id&lt;/code&gt;&lt;/a&gt; for what each one means.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image-to-video
&lt;/h3&gt;

&lt;p&gt;To animate a still image, use &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-videos-image2video-frames" rel="noopener noreferrer"&gt;POST /videos/image2video-frames&lt;/a&gt;. Upload your image first with &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-assets" rel="noopener noreferrer"&gt;POST /assets&lt;/a&gt;, then pass the returned URL as &lt;code&gt;image&lt;/code&gt; (the start frame) and optionally &lt;code&gt;image_tail&lt;/code&gt; (the end frame, for a start→end transition):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/kling/videos/image2video-frames"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "image": "https://example.com/start-frame.jpg",
    "image_tail": "https://example.com/end-frame.jpg",
    "prompt": "the character turns and smiles, camera pushes in",
    "model_name": "kling-v2-5",
    "mode": "pro"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At least one of &lt;code&gt;image&lt;/code&gt; or &lt;code&gt;image_tail&lt;/code&gt; is required. On &lt;code&gt;kling-v3-0&lt;/code&gt; / &lt;code&gt;kling-v3-0-turbo&lt;/code&gt; the aspect ratio is derived from the input image, so there is no &lt;code&gt;aspect_ratio&lt;/code&gt; parameter — and &lt;code&gt;kling-v3-0-turbo&lt;/code&gt; supports the start frame only (no &lt;code&gt;image_tail&lt;/code&gt;). The response is the same task object as text-to-video, and you poll and download it exactly the same way (with &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-assets-download" rel="noopener noreferrer"&gt;GET /assets/download&lt;/a&gt; for the clean master).&lt;/p&gt;

&lt;h3&gt;
  
  
  Batch-generate with a script
&lt;/h3&gt;

&lt;p&gt;Finding the right shot takes many attempts, and running them by hand is tedious. The Node.js script reads a list of prompts from &lt;a href="https://github.com/useapi/kling-api/prompts.json" rel="noopener noreferrer"&gt;&lt;code&gt;prompts.json&lt;/code&gt;&lt;/a&gt;, submits each text-to-video job, then polls every task until it is final and downloads the finished MP4 — preferring the clean, non-watermarked master via &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-assets-download" rel="noopener noreferrer"&gt;GET /assets/download&lt;/a&gt; and falling back to the watermarked &lt;code&gt;works[0].resource.resource&lt;/code&gt; if needed. So you can queue a batch and come back to the winners.&lt;/p&gt;

&lt;p&gt;You need &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; v21 or newer. Put &lt;code&gt;prompts.json&lt;/code&gt; and &lt;a href="https://github.com/useapi/kling-api/kling.mjs" rel="noopener noreferrer"&gt;&lt;code&gt;kling.mjs&lt;/code&gt;&lt;/a&gt; in the same folder and run &lt;code&gt;node ./kling.mjs API_TOKEN EMAIL&lt;/code&gt;, where &lt;code&gt;API_TOKEN&lt;/code&gt; is your useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and &lt;code&gt;EMAIL&lt;/code&gt; is your connected &lt;a href="https://useapi.net/docs/start-here/setup-kling" rel="noopener noreferrer"&gt;Kling account&lt;/a&gt; email. The script looks the account up by email automatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;The clip below is a real Kling generation produced through this Kling API, straight from our blog walkthrough.&lt;/p&gt;

&lt;h6&gt;
  
  
  Kling v3 Turbo — &lt;code&gt;kling-v3-0-turbo&lt;/code&gt;, image-to-video, 1080p 10s with spoken dialogue and scene cuts
&lt;/h6&gt;



&lt;p&gt;— from &lt;a href="https://useapi.net/blog/260617" rel="noopener noreferrer"&gt;Kling 3.0 Turbo: faster video with dialogue and scene changes&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Frequently asked questions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Is there a Kling API?&lt;/strong&gt; Yes — a few ways. Kuaishou offers an official Kling developer API, and third-party resellers (fal.ai, Replicate, PiAPI, and others) expose Kling too, all billed per generation at developer rates. useapi.net is the consumer-account route: programmatic access to every Kling model by driving your own Kling account at the &lt;a href="https://kling.ai/app/membership/membership-plan" rel="noopener noreferrer"&gt;website subscription&lt;/a&gt; price through a standard REST endpoint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I access Kling v3 (and v3 Turbo) through the API?&lt;/strong&gt; Pass &lt;code&gt;"model_name": "kling-v3-0"&lt;/code&gt; (or &lt;code&gt;"kling-v3-0-turbo"&lt;/code&gt; for the faster variant) to &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-videos-text2video" rel="noopener noreferrer"&gt;POST /videos/text2video&lt;/a&gt; or &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-videos-image2video-frames" rel="noopener noreferrer"&gt;POST /videos/image2video-frames&lt;/a&gt;. Kling v3 supports 3–15s durations, &lt;code&gt;std&lt;/code&gt;/&lt;code&gt;pro&lt;/code&gt;/&lt;code&gt;4k&lt;/code&gt; modes, and audio on by default. See Supported models above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I turn an image into a video (image-to-video)?&lt;/strong&gt; Yes. Upload the still with &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-assets" rel="noopener noreferrer"&gt;POST /assets&lt;/a&gt;, then pass the returned URL as &lt;code&gt;image&lt;/code&gt; (start frame) and optionally &lt;code&gt;image_tail&lt;/code&gt; (end frame) to &lt;a href="https://useapi.net/docs/api-kling-v1/post-kling-videos-image2video-frames" rel="noopener noreferrer"&gt;POST /videos/image2video-frames&lt;/a&gt;. See Image-to-video above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much does the Kling API cost?&lt;/strong&gt; You keep your normal &lt;a href="https://kling.ai/app/membership/membership-plan" rel="noopener noreferrer"&gt;Kling&lt;/a&gt; website subscription, plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net for API access to all services. Generations draw from your Kling account's own credits at Kling's standard rates, which vary by model, mode, duration, and audio — the &lt;a href="https://useapi.net/docs/api-kling-v1" rel="noopener noreferrer"&gt;Kling API overview&lt;/a&gt; has a live cost calculator. See Pricing above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why is my video watermarked?&lt;/strong&gt; The MP4 at &lt;code&gt;works[0].resource.resource&lt;/code&gt; returned by the poll is the watermarked preview. To get the clean, non-watermarked master, take the &lt;code&gt;workId&lt;/code&gt; from the task's &lt;code&gt;works&lt;/code&gt; array and call &lt;a href="https://useapi.net/docs/api-kling-v1/get-kling-assets-download" rel="noopener noreferrer"&gt;GET /assets/download&lt;/a&gt; — it returns a &lt;code&gt;cdnUrl&lt;/code&gt; to the watermark-free file. This requires a paid Kling account. See Generate a video in two API calls above.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is this different from the official Kling API?&lt;/strong&gt; Kuaishou's &lt;a href="https://klingai.com/global/dev/pricing" rel="noopener noreferrer"&gt;official Kling API&lt;/a&gt; bills per generation at developer rates on a separate developer account. useapi.net instead automates your own consumer Kling account, so you generate at the &lt;a href="https://kling.ai/app/membership/membership-plan" rel="noopener noreferrer"&gt;website subscription&lt;/a&gt; price plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; — and the same one subscription covers &lt;a href="https://useapi.net/" rel="noopener noreferrer"&gt;10+ other AI services&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My generation returns a 500 — what does that mean?&lt;/strong&gt; Kling reuses the &lt;code&gt;500&lt;/code&gt; response for content-moderation rejections as well as genuine server faults, and the generic &lt;code&gt;message&lt;/code&gt; field rarely makes the difference clear. Read the &lt;code&gt;error&lt;/code&gt; text instead — a moderation rejection reads like "The content you uploaded appears to violate the community guidelines." If a job clears creation but the poll later returns &lt;code&gt;404&lt;/code&gt;, the task was deleted, failed at moderation, or your account ran out of credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns.&lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The full runnable example is in the &lt;a href="https://github.com/useapi/kling-api" rel="noopener noreferrer"&gt;&lt;code&gt;kling-api&lt;/code&gt; GitHub repo&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cross posted
&lt;/h4&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>kling</category>
      <category>videogeneration</category>
    </item>
    <item>
      <title>How to Generate AI Video with Veo 3.1 via the Google Flow API</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Thu, 18 Jun 2026 04:23:24 +0000</pubDate>
      <link>https://dev.to/useapi/how-to-generate-ai-video-with-veo-31-via-the-google-flow-api-2g4i</link>
      <guid>https://dev.to/useapi/how-to-generate-ai-video-with-veo-31-via-the-google-flow-api-2g4i</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://deepmind.google/technologies/veo/" rel="noopener noreferrer"&gt;Veo 3.1&lt;/a&gt;, Google's flagship video model, runs from a single &lt;code&gt;curl&lt;/code&gt; through &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt;.&lt;/strong&gt; You drive your own &lt;a href="https://labs.google/fx/tools/flow" rel="noopener noreferrer"&gt;Google Flow&lt;/a&gt; account — no Google Cloud project, no enterprise approval, and up to several times lower cost per generation than the official metered API.&lt;/p&gt;

&lt;p&gt;The official Gemini API and Vertex meter Veo per second of output. This third-party &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt; runs on a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;subscription&lt;/a&gt; instead — you spend your normal Flow credits plus one monthly fee for API access, far cheaper per clip. Below: the models you get, the price gap versus the official API, then the two-call workflow and a runnable batch script.&lt;/p&gt;

&lt;h3&gt;
  
  
  Supported models
&lt;/h3&gt;

&lt;p&gt;Pick a model per request with the &lt;code&gt;model&lt;/code&gt; field (default &lt;code&gt;veo-3.1-fast&lt;/code&gt;). Credit costs come from Google's &lt;a href="https://support.google.com/flow/answer/16526234" rel="noopener noreferrer"&gt;official Flow credits table&lt;/a&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model id&lt;/th&gt;
&lt;th&gt;Tier / speed&lt;/th&gt;
&lt;th&gt;Durations&lt;/th&gt;
&lt;th&gt;Credits per generation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;veo-3.1-lite&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Cheapest Veo&lt;/td&gt;
&lt;td&gt;4s, 6s, 8s&lt;/td&gt;
&lt;td&gt;10 (Non-Ultra) · 5 (Ultra)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;veo-3.1-lite-low-priority&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Lite, lower priority&lt;/td&gt;
&lt;td&gt;4s, 6s, 8s&lt;/td&gt;
&lt;td&gt;0 — Ultra $199 only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;veo-3.1-fast&lt;/code&gt; &lt;em&gt;(default)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;Fast Veo&lt;/td&gt;
&lt;td&gt;4s, 6s, 8s&lt;/td&gt;
&lt;td&gt;20 (Non-Ultra) · 10 (Ultra)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;veo-3.1-quality&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Highest-quality Veo&lt;/td&gt;
&lt;td&gt;8s only&lt;/td&gt;
&lt;td&gt;100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;omni-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Gemini Omni Flash, audio-native&lt;/td&gt;
&lt;td&gt;4s, 6s, 8s, 10s&lt;/td&gt;
&lt;td&gt;15 / 20 / 25 / 30 (by length)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notes from the &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;overview&lt;/a&gt;: &lt;code&gt;4s&lt;/code&gt;/&lt;code&gt;6s&lt;/code&gt; are Ultra-only on Veo, &lt;code&gt;veo-3.1-quality&lt;/code&gt; is &lt;code&gt;8s&lt;/code&gt; only, &lt;code&gt;veo-3.1-lite-low-priority&lt;/code&gt; costs 0 credits but is available only to Google AI Ultra $199 subscribers, and &lt;code&gt;10s&lt;/code&gt; clips are &lt;code&gt;omni-flash&lt;/code&gt; only. Google Flow can also generate stills with Imagen 4 and the Nano Banana models via the separate &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-images" rel="noopener noreferrer"&gt;POST /images&lt;/a&gt; endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;You spend your Google AI plan's Flow credits as usual, plus a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; to useapi.net for API access to every supported service — no per-call surcharge.&lt;/p&gt;

&lt;p&gt;Third-party &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt; by &lt;a href="https://useapi.net/" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; vs. the official &lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt; — drive your own Google Flow subscription instead of metered, per-call API billing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Official Gemini API&lt;/th&gt;
&lt;th&gt;useapi.net (Flow Pro)&lt;/th&gt;
&lt;th&gt;useapi.net (Flow Ultra)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Fast — 8s clip&lt;/td&gt;
&lt;td&gt;$0.80&lt;/td&gt;
&lt;td&gt;~$0.40&lt;/td&gt;
&lt;td&gt;~$0.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Quality — 8s clip&lt;/td&gt;
&lt;td&gt;$3.20&lt;/td&gt;
&lt;td&gt;~$2.00&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite — 8s clip&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;~$0.20&lt;/td&gt;
&lt;td&gt;~$0.05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite, lower priority&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$0 &lt;em&gt;(Ultra $199)&lt;/em&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini Omni Flash — 8s clip&lt;/td&gt;
&lt;td&gt;— &lt;em&gt;(Flow only)&lt;/em&gt;
&lt;/td&gt;
&lt;td&gt;~$0.50&lt;/td&gt;
&lt;td&gt;~$0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana Pro — per image&lt;/td&gt;
&lt;td&gt;$0.134&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nano Banana — per image&lt;/td&gt;
&lt;td&gt;$0.039&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Imagen 4 — per image&lt;/td&gt;
&lt;td&gt;metered&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;td&gt;included&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Expected daily output — Ultra ($199/mo) plan. Daily averages observed on top real accounts. These are expected, not guaranteed: Google governs the underlying Flow allowances and they vary with demand.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Free workload (no Flow credits spent)&lt;/th&gt;
&lt;th&gt;Avg generations / day*&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1 Lite — lower priority video&lt;/td&gt;
&lt;td&gt;~1,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images — Nano Banana, Nano Banana Pro, Imagen 4&lt;/td&gt;
&lt;td&gt;up to ~500&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;small&gt;*Averages from the busiest real accounts — not guarantees. They are set by Google's own allowances and fluctuate with demand. Applies only to the free lower-priority video queue and image generation. Credit-metered models (Veo 3.1 Fast / Quality and Gemini Omni Flash) are not shown here — their volume is bounded by your plan's monthly Flow credits (see the &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;credit table&lt;/a&gt;), not a free allowance.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;Veo is billed per second on the Gemini API (an 8-second 720p clip shown) and images are priced per image. Through useapi.net you spend your own Flow plan credits and pay a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;$15/month&lt;/a&gt; — image generation is included on any Google AI plan, and there is no Google Cloud project, API key, or per-call metering.&lt;/small&gt;&lt;/p&gt;

&lt;p&gt;Full per-tier credit allowances and the per-model cost breakdown live on the &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow overview&lt;/a&gt;. See the &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt; to connect your account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate a video in two API calls
&lt;/h3&gt;

&lt;p&gt;You need a useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and a connected &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;Google Flow account&lt;/a&gt;. Generation is asynchronous: pass &lt;code&gt;async: true&lt;/code&gt; and the create call returns a &lt;code&gt;jobid&lt;/code&gt; immediately, then you poll until the video is ready.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Submit the job — &lt;code&gt;POST https://api.useapi.net/v1/google-flow/videos&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/google-flow/videos"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "prompt": "A serene mountain landscape at sunset, camera slowly panning right",
    "model": "veo-3.1-fast",
    "aspectRatio": "landscape",
    "duration": 8,
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In async mode the response returns immediately with &lt;code&gt;201 Created&lt;/code&gt;, a lowercase &lt;code&gt;jobid&lt;/code&gt;, and &lt;code&gt;status: "created"&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"j1731859234567v-u12345-email:jo***@gmail.com-bot:google-flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"video"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"created"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-06-15T12:34:56.789Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"request"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"async"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"prompt"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"A serene mountain landscape at sunset, camera slowly panning right"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"veo-3.1-fast"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"aspectRatio"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"landscape"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"duration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Poll for the result — &lt;code&gt;GET https://api.useapi.net/v1/google-flow/jobs/{jobId}&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.useapi.net/v1/google-flow/jobs/{jobId}"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;status&lt;/code&gt; moves through &lt;code&gt;created&lt;/code&gt; → &lt;code&gt;started&lt;/code&gt; → &lt;code&gt;completed&lt;/code&gt;. When it reaches &lt;code&gt;completed&lt;/code&gt;, the finished MP4 is in &lt;code&gt;response.media[].videoUrl&lt;/code&gt; (a single prompt with &lt;code&gt;count &amp;gt; 1&lt;/code&gt; returns one entry per clip):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jobid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"j1731859234567v-..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"video"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"completed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"response"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"media"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"mediaGenerationId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user:12345-email:6a6f...-video:a1d95d21-..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"videoUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://flow-content.google/video/a1d95d21-...?Expires=..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"thumbnailUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://flow-content.google/image/a1d95d21-...?Expires=..."&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"remainingCredits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;18760&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Veo 3.1 typically finishes in 60–180 seconds depending on model and mode. The signed &lt;code&gt;videoUrl&lt;/code&gt; is valid for about 24 hours, so download promptly. Prefer not to poll? Pass a &lt;code&gt;replyUrl&lt;/code&gt; in the create body to receive a webhook callback when the job completes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Image-to-video and reference-to-video
&lt;/h3&gt;

&lt;p&gt;Veo takes image inputs two different ways. Upload each image first with &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-assets-email" rel="noopener noreferrer"&gt;POST /assets/&lt;code&gt;email&lt;/code&gt;&lt;/a&gt; (raw bytes, an image &lt;code&gt;Content-Type&lt;/code&gt;, PNG/JPEG/WebP up to 20 MB). The upload response nests the id at &lt;code&gt;mediaGenerationId.mediaGenerationId&lt;/code&gt; — that nested string is what you pass back. When you supply any image input you can omit &lt;code&gt;email&lt;/code&gt;: the request routes to the account where the image was uploaded.&lt;/p&gt;

&lt;h4&gt;
  
  
  First / last frame (I2V)
&lt;/h4&gt;

&lt;p&gt;Your image becomes a literal frame of the clip. Pass it as &lt;code&gt;startImage&lt;/code&gt; to start from that frame:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/google-flow/videos"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "prompt": "Brave Captain Cat chasing away the pirates!",
    "model": "veo-3.1-fast",
    "aspectRatio": "portrait",
    "startImage": "user:12345-email:6a6f...-image:ff9aa5cc-...",
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add &lt;code&gt;endImage&lt;/code&gt; (a second uploaded reference id) to pin the last frame so Veo generates the transition between the two. &lt;code&gt;endImage&lt;/code&gt; requires &lt;code&gt;startImage&lt;/code&gt; — end-frame-only is not supported. On &lt;code&gt;omni-flash&lt;/code&gt;, only &lt;code&gt;startImage&lt;/code&gt; is accepted.&lt;/p&gt;

&lt;h4&gt;
  
  
  Reference images (R2V)
&lt;/h4&gt;

&lt;p&gt;Your images guide the whole clip — subject, character, or style — rather than a specific frame. Pass &lt;code&gt;referenceImage_1&lt;/code&gt; through &lt;code&gt;referenceImage_3&lt;/code&gt; (Veo accepts up to 3, on 8-second clips only, and not on &lt;code&gt;veo-3.1-quality&lt;/code&gt;). R2V cannot be combined with &lt;code&gt;startImage&lt;/code&gt;/&lt;code&gt;endImage&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.useapi.net/v1/google-flow/videos"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$USEAPI_TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "prompt": "A lady says to the dog, \"Say meow meow meow.\" The dog looks at the lady with a surprised, frustrated look and woofs in a human voice, \"What the heck lady?!\"",
    "model": "veo-3.1-fast",
    "aspectRatio": "portrait",
    "referenceImage_1": "user:12345-email:6a6f...-image:abcde-...",
    "async": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mention each reference inline with an &lt;code&gt;@referenceImage_N&lt;/code&gt; marker in the prompt, add a &lt;code&gt;referenceAudio_1&lt;/code&gt; (a system voice name like &lt;code&gt;Zephyr&lt;/code&gt;) for narration, or pass a reusable &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-characters" rel="noopener noreferrer"&gt;character&lt;/a&gt; as &lt;code&gt;character_1&lt;/code&gt; (it drives the same R2V mode and counts toward the 3-reference budget). Omni Flash takes references further — up to 7, plus video-to-video editing and synced voices — see the &lt;a href="https://useapi.net/docs/articles/omni-flash-bash" rel="noopener noreferrer"&gt;Omni Flash tutorial&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Batch-generate with a script
&lt;/h3&gt;

&lt;p&gt;Finding the right shot takes many attempts, and running them by hand is tedious. The Node.js script reads a list of prompts from &lt;a href="https://github.com/useapi/google-flow-api/blob/main/veo-video/prompts.json" rel="noopener noreferrer"&gt;&lt;code&gt;prompts.json&lt;/code&gt;&lt;/a&gt;, uploads any start/end frame images, submits each job in async mode, then polls and downloads every finished MP4 — so you can queue a batch and come back to the winners.&lt;/p&gt;

&lt;p&gt;You need &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt; v21 or newer. Put &lt;code&gt;prompts.json&lt;/code&gt; and &lt;a href="https://github.com/useapi/google-flow-api/blob/main/veo-video/google-flow.mjs" rel="noopener noreferrer"&gt;&lt;code&gt;google-flow.mjs&lt;/code&gt;&lt;/a&gt; in the same folder and run &lt;code&gt;node ./google-flow.mjs API_TOKEN EMAIL&lt;/code&gt;, where &lt;code&gt;API_TOKEN&lt;/code&gt; is your useapi.net &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;API token&lt;/a&gt; and &lt;code&gt;EMAIL&lt;/code&gt; is your connected &lt;a href="https://useapi.net/docs/start-here/setup-google-flow" rel="noopener noreferrer"&gt;Google Flow account&lt;/a&gt; email. The script looks the account up by email automatically and checks its &lt;code&gt;health&lt;/code&gt; field before submitting.&lt;/p&gt;

&lt;p&gt;Prefer to clone and run it locally? The complete &lt;code&gt;google-flow.mjs&lt;/code&gt; and &lt;code&gt;prompts.json&lt;/code&gt; are on GitHub in &lt;a href="https://github.com/useapi/google-flow-api/tree/main/veo-video" rel="noopener noreferrer"&gt;&lt;code&gt;useapi/google-flow-api&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;Real Veo 3.1 clips generated through this Google Flow API, taken straight from our release notes.&lt;/p&gt;

&lt;h6&gt;
  
  
  veo-3.1-fast » Brave Captain Cat chasing away the pirates (image-to-video)
&lt;/h6&gt;

&lt;p&gt;From &lt;a href="https://useapi.net/blog/251117" rel="noopener noreferrer"&gt;Google Flow API v1: Initial Release&lt;/a&gt;. Animated from a Nano Banana still passed as &lt;code&gt;startImage&lt;/code&gt;.&lt;/p&gt;



&lt;h6&gt;
  
  
  veo-3.1-fast » Lady and her dog, with AI voice narration
&lt;/h6&gt;

&lt;p&gt;From &lt;a href="https://useapi.net/blog/260403" rel="noopener noreferrer"&gt;Veo 3.1 Lite and Voice Narration&lt;/a&gt;. A reference-to-video generation with the &lt;code&gt;referenceAudio_1: "Zephyr"&lt;/code&gt; preset adding spoken dialogue.&lt;/p&gt;


    


&lt;h6&gt;
  
  
  veo-3.1-fast » Dancing cha-cha (portrait reference-to-video)
&lt;/h6&gt;

&lt;p&gt;From &lt;a href="https://useapi.net/blog/260113" rel="noopener noreferrer"&gt;Veo 3.1 Portrait R2V&lt;/a&gt;. Portrait R2V from a single reference image.&lt;/p&gt;



&lt;h3&gt;
  
  
  Frequently asked questions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Is there a Veo 3.1 API?&lt;/strong&gt; Yes — two ways. Google offers Veo 3.1 directly through the official &lt;a href="https://ai.google.dev/gemini-api/docs/video" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt; (and Vertex AI), billed per second on a Google Cloud project. Or use useapi.net's &lt;a href="https://useapi.net/docs/api-google-flow-v1" rel="noopener noreferrer"&gt;Google Flow API&lt;/a&gt;, which gives you programmatic access to Veo 3.1 (Quality, Fast, Lite) by driving your own Google Flow account through a standard REST endpoint — no Cloud project, and you pay your flat Flow subscription instead of metered per-second rates (often cheaper per clip — see Pricing).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What's the difference between Veo 3.1 Quality, Fast, and Lite?&lt;/strong&gt; They trade quality for speed and cost: &lt;code&gt;veo-3.1-quality&lt;/code&gt; is the highest-fidelity model, &lt;code&gt;veo-3.1-fast&lt;/code&gt; is the default balance, and &lt;code&gt;veo-3.1-lite&lt;/code&gt; is the cheapest, with &lt;code&gt;veo-3.1-lite-low-priority&lt;/code&gt; available to Ultra subscribers at lower scheduling priority. See Supported models above for per-model credits and durations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can I do image-to-video with Veo?&lt;/strong&gt; Yes. Upload your start frame with &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-assets-email" rel="noopener noreferrer"&gt;POST /assets/&lt;code&gt;email&lt;/code&gt;&lt;/a&gt;, then pass the returned reference id (nested at &lt;code&gt;mediaGenerationId.mediaGenerationId&lt;/code&gt;) as &lt;code&gt;startImage&lt;/code&gt; — and optionally &lt;code&gt;endImage&lt;/code&gt; for a first→last transition (Veo only, requires &lt;code&gt;startImage&lt;/code&gt;). See Image-to-video above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do I need to solve a captcha?&lt;/strong&gt; Google Flow video generation requires reCAPTCHA, but you do not solve it yourself. The useapi.net worker solves the captcha automatically — your first Google Flow account comes with 100 free captcha credits as a one-time grant (powered by CapSolver), and after that you configure your own provider keys via &lt;a href="https://useapi.net/docs/api-google-flow-v1/post-google-flow-accounts-captcha-providers" rel="noopener noreferrer"&gt;POST /accounts/captcha-providers&lt;/a&gt;. The script in this guide sends no &lt;code&gt;captchaToken&lt;/code&gt; and relies on this automatic solving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How much does it cost?&lt;/strong&gt; You keep your paid Google AI subscription (needed for video) and add a flat &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;useapi.net subscription&lt;/a&gt; for API access to all services. Each generation then spends your normal Flow credits from your Google plan — far cheaper than the official metered API; see Pricing above.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How is this different from the official Google / Gemini API?&lt;/strong&gt; Google's official Veo 3.1 access runs through the &lt;a href="https://ai.google.dev/gemini-api/docs/video" rel="noopener noreferrer"&gt;Gemini API&lt;/a&gt; / Vertex AI on a Google Cloud project, billed per second. Google Flow — the consumer app — has no public API of its own. useapi.net bridges that gap by driving your own consumer Flow account at its flat subscription price — no Cloud project or per-second metering (see the side-by-side Pricing comparison above), and the same subscription covers &lt;a href="https://useapi.net/" rel="noopener noreferrer"&gt;other AI services&lt;/a&gt; too.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns.&lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check our &lt;a href="https://github.com/useapi/google-flow-api" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; with code examples.&lt;/p&gt;

&lt;h4&gt;
  
  
  Cross posted
&lt;/h4&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>veo</category>
      <category>googleflow</category>
    </item>
    <item>
      <title>Create breath-taking videos with PixVerse AI</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Sun, 09 Jun 2024 06:19:23 +0000</pubDate>
      <link>https://dev.to/useapi/create-breath-taking-videos-with-pixverse-ai-41l2</link>
      <guid>https://dev.to/useapi/create-breath-taking-videos-with-pixverse-ai-41l2</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;In this article we will show hot to use an &lt;a href="https://useapi.net/docs/api-pixverse-v1" rel="noopener noreferrer"&gt;experimental API&lt;/a&gt; for the &lt;a href="https://discord.com/invite/MXHErdJHMg" rel="noopener noreferrer"&gt;PixVerse Discord Bot&lt;/a&gt; by &lt;a href="https://pixverse.ai/" rel="noopener noreferrer"&gt;PixVerse.AI&lt;/a&gt; to generate videos. PixVerse currently supports text and image inputs for generating 4-second-long videos. The available video styles include &lt;code&gt;Realistic&lt;/code&gt;, &lt;code&gt;Anime&lt;/code&gt;, and &lt;code&gt;3D Animation&lt;/code&gt;. For the &lt;code&gt;Anime&lt;/code&gt; style you can reference one of the &lt;a href="https://pixverse.notion.site/Available-Characters-for-Anime-Style-6648259c5db146be9e35509bfb9a3c86" rel="noopener noreferrer"&gt;anime characters&lt;/a&gt;. PixVerse can also create a &lt;a href="https://pixverse.notion.site/Use-Meme_face-To-Create-Videos-With-The-Face-You-Upload-c6399111aced4b0aa04cb456bc3866d2" rel="noopener noreferrer"&gt;meme face&lt;/a&gt; video from a provided image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-animate" rel="noopener noreferrer"&gt;/animate&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Source &lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://cdn.discordapp.com/attachments/1239264794394234985/1249165862900994138/source.jpg" rel="noopener noreferrer"&gt;image&lt;/a&gt;  &lt;/p&gt;



&lt;p&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-meme_face" rel="noopener noreferrer"&gt;/meme_face&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Source &lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://cdn.discordapp.com/attachments/1239264794394234985/1249165862900994138/source.jpg" rel="noopener noreferrer"&gt;image&lt;/a&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A girl smiling by the beach, sunset in the background   &lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-create_single" rel="noopener noreferrer"&gt;/create_single&lt;/a&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A cinematic shot of a tiny hedgehog dressed in a complete astronaut suit, floating in the vastness of outer space. The hedgehog is repairing a small satellite with tiny tools. The Earth shines in the distance, and stars and constellations illuminate the dark cosmic background. Nearby, a futuristic spaceship with another animal peeking from a window completes the cosmic scene   &lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-create" rel="noopener noreferrer"&gt;/create&lt;/a&gt;  &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A front view, head to toe, beautiful female model walking the runway. Emphasis is on the Great Gatsby inspired evening gown in the style of John Galliano   &lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote&gt;
&lt;p&gt;A women silhouette dancing provocative with flashing strobe lights flashing with laser beams   &lt;/p&gt;
&lt;/blockquote&gt;



&lt;blockquote&gt;
&lt;p&gt;A girl smiling in a magic redwood forest   &lt;/p&gt;
&lt;/blockquote&gt;



&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;We will use the experimental API provided by &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; to interact with &lt;a href="https://useapi.net/docs/api-v2" rel="noopener noreferrer"&gt;Midjourney&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-faceswap-v1" rel="noopener noreferrer"&gt;InsightFaceSwap&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-pika-v1" rel="noopener noreferrer"&gt;Pika&lt;/a&gt; and &lt;a href="https://useapi.net/docs/api-pixverse-v1" rel="noopener noreferrer"&gt;PixVerse&lt;/a&gt; Discord bots.&lt;/p&gt;

&lt;h4&gt;
  
  
  Useapi.net
&lt;/h4&gt;

&lt;p&gt;You need a monthly &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;subscription&lt;/a&gt; to use the &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; experimental APIs mentioned in this article.&lt;br&gt;
Follow these &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;steps&lt;/a&gt; to get started.&lt;/p&gt;

&lt;h4&gt;
  
  
  PixVerse
&lt;/h4&gt;

&lt;p&gt;The PixVerse Discord bot is currently free, please follow these &lt;a href="https://useapi.net/docs/start-here/setup-pixverse" rel="noopener noreferrer"&gt;simple steps&lt;/a&gt; to obtain the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discord server ID number, referred to in this article as &lt;code&gt;server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord channel ID number, referred to in this article as &lt;code&gt;channel&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord token, referred to in this article as &lt;code&gt;discord&lt;/code&gt;. &lt;a href="https://useapi.net/docs/start-here/setup-pixverse#verify-discord-access" rel="noopener noreferrer"&gt;Verify Discord access&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Once you have all the above, please create or update your &lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-account-channel" rel="noopener noreferrer"&gt;PixVerse account information&lt;/a&gt; so that you no longer need to provide them with every API call. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useapi.net provides an easy way to experiment with all API endpoints without writing any code. Check the &lt;code&gt;Try It&lt;/code&gt; section at the end of each document page, such as PixVerse's &lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-create#try-it" rel="noopener noreferrer"&gt;/create&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-animate#try-it" rel="noopener noreferrer"&gt;/animate&lt;/a&gt;, or &lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-meme_face#try-it" rel="noopener noreferrer"&gt;/meme_face&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For your convenience, we have published all the &lt;a href="https://github.com/useapi/examples/tree/main/pixverse-demo" rel="noopener noreferrer"&gt;source code&lt;/a&gt; used in this article. You can choose between JavaScript and Python examples. Clone this repository locally and use it as a starting point for your experiments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ngrok
&lt;/h3&gt;

&lt;p&gt;Follow official &lt;a href="https://ngrok.com/docs/getting-started/#step-2-connect-your-account" rel="noopener noreferrer"&gt;instructions&lt;/a&gt; to sign up for an ngrok account and copy your ngrok &lt;code&gt;authtoken&lt;/code&gt; from your ngrok dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preparing PixVerse prompts
&lt;/h3&gt;

&lt;p&gt;An array of desired prompts should be saved to a locally cloned &lt;a href="https://github.com/useapi/examples/blob/main/pixverse-demo/prompts.json" rel="noopener noreferrer"&gt;prompts.json&lt;/a&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Executing prompts using PixVerse experimental API by useapi.net
&lt;/h3&gt;

&lt;p&gt;Create a file locally in the same folder named &lt;code&gt;example.sh&lt;/code&gt; with the following content:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/pixverse-demo/example.js" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;NGROK_AUTHTOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ngrok authtoken"&lt;/span&gt; node ./example.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/pixverse-demo/example.py" rel="noopener noreferrer"&gt;Python&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;NGROK_AUTHTOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ngrok authtoken"&lt;/span&gt; python3 ./example.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute it from the command line like this: &lt;code&gt;./example.sh&lt;/code&gt; and observe the magic of the experimental API. &lt;/p&gt;

&lt;p&gt;The generated videos will be saved locally. You may proceed with the generation process within a Discord channel to further refine your creations. Alternatively, you can continue automate the process by using the &lt;a href="https://useapi.net/docs/api-pixverse-v1/post-pixverse-button" rel="noopener noreferrer"&gt;/button&lt;/a&gt; API endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns. &lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>pixverse</category>
      <category>discord</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Discord CDN Proxy</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Mon, 13 May 2024 21:44:20 +0000</pubDate>
      <link>https://dev.to/useapi/discord-cdn-proxy-211c</link>
      <guid>https://dev.to/useapi/discord-cdn-proxy-211c</guid>
      <description>&lt;h3&gt;
  
  
  Host your images and videos on Discord CDN
&lt;/h3&gt;

&lt;p&gt;Suppose you want to take advantage of the free Discord CDN to host your images or videos. With the simple script below, you can upload your assets to a desired Discord channel:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://discord.com/api/v10/channels/&amp;lt;Discord channel&amp;gt;/messages"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: &amp;lt;Discord token&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'payload_json={"content":"Here is your file!","attachments":[{"id":0,"filename":"&amp;lt;file name&amp;gt;"}]}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'files[0]=@&amp;lt;path to file name&amp;gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://discord.com/api/v10/channels/123456789/messages"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: ABc.your.discord.token.xYZ"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'payload_json={"content":"Here is your file!","attachments":[{"id":0,"filename":"source.jpg"}]}'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s1"&gt;'files[0]=@./source.jpg'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please refer to our &lt;a href="https://useapi.net/docs/start-here/setup-midjourney" rel="noopener noreferrer"&gt;guide&lt;/a&gt; on how to obtain your Discord token and set up a private channel. Omit the Midjourney setup steps if you do not plan to use it.&lt;/p&gt;

&lt;p&gt;Response JSON will contain &lt;code&gt;attachments[0].url&lt;/code&gt; with Discord CDN attachment link.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a Proxy for Discord CDN
&lt;/h3&gt;

&lt;p&gt;Starting December 2023 all Discord CDN attachment links have following format: &lt;code&gt;https://cdn.discordapp.com/attachments/channel/message/filename.ext?ex=EXPIRES&amp;amp;is=ISSUED&amp;amp;hm=CODE&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Query parameters values &lt;code&gt;EXPIRES&lt;/code&gt; and &lt;code&gt;ISSUED&lt;/code&gt; are timestamps in &lt;a href="https://www.epochconverter.io/hex-timestamp-converter" rel="noopener noreferrer"&gt;unix/epoch hex format&lt;/a&gt;, &lt;code&gt;CODE&lt;/code&gt; is encoded checksum used to verify &lt;code&gt;EXPIRES&lt;/code&gt; and &lt;code&gt;ISSUED&lt;/code&gt; values.&lt;br&gt;&lt;br&gt;
Attempt to retrieve Discord CDN attachments URL without above query parameters or with &lt;code&gt;EXPIRES&lt;/code&gt; past current time will result in 404 &lt;code&gt;This content is no longer available.&lt;/code&gt; response, see &lt;a href="https://cdn.discordapp.com/attachments/1239264794394234985/1239266735992078447/vault_boy.png" rel="noopener noreferrer"&gt;example&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
In practical terms this means that you can no longer link attachments from Discord on your website, share them on Reddit, Facebook.  &lt;/p&gt;

&lt;p&gt;This article provides you with effective solution to continue sharing your Discord CDN content publicly without incurring any costs.  &lt;/p&gt;

&lt;p&gt;The Discord CND proxy especially handy for users of &lt;a href="https://useapi.net/docs/api-v2" rel="noopener noreferrer"&gt;Midjourney API&lt;/a&gt;, &lt;a href="https://useapi.net/docs/api-pika-v1" rel="noopener noreferrer"&gt;Pika API&lt;/a&gt; or &lt;a href="https://useapi.net/docs/api-faceswap-v1" rel="noopener noreferrer"&gt;InsightFaceSwap API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Once your public proxy deployed you can use public image links using &lt;code&gt;https://your-discord-cdn-proxy-url/?https://cdn.discordapp.com/attachments/channel/message/filename.ext&lt;/code&gt; format.&lt;br&gt;&lt;br&gt;
These links can be shared publicly, published on your website, etc.&lt;br&gt;&lt;br&gt;
The proxy will refresh the links provided after the &lt;code&gt;?&lt;/code&gt; and redirect the browser to the refreshed Discord CDN link.&lt;br&gt;&lt;br&gt;
You can include original Discord attachment link query parameters as well &lt;code&gt;?ex=EXPIRES&amp;amp;is=ISSUED&amp;amp;hm=CODE&lt;/code&gt;, the proxy will check if the link has expired, and may return the original URL immediately if it is not expired.  &lt;/p&gt;

&lt;p&gt;When responding with &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302" rel="noopener noreferrer"&gt;HTTP 302&lt;/a&gt; the proxy will set response headers &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires" rel="noopener noreferrer"&gt;Expires&lt;/a&gt; with link expiration time.&lt;br&gt;&lt;br&gt;
Custom response header &lt;code&gt;x-discord-cdn-proxy&lt;/code&gt; will be set to one of following values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;original&lt;/code&gt; - provided link query parameters &lt;code&gt;?ex=EXPIRES&amp;amp;is=ISSUED&amp;amp;hm=CODE&lt;/code&gt; indicate that link is still "fresh"&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;refreshed&lt;/code&gt; - call to &lt;code&gt;https://discord.com/api/v9/attachments/refresh-urls&lt;/code&gt; Discord API was made to retrieve refreshed link&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;memory&lt;/code&gt; - refreshed link returned from the memory cache&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bucket&lt;/code&gt; - refreshed link returned from the R2 bucket cache (optional for Cloudflare Worker deployment)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://useapi.net/assets/images/articles/discord-cdn-proxy.svg" rel="noopener noreferrer"&gt;Diagram&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuseapi.net%2Fassets%2Fimages%2Farticles%2Fdiscord-cdn-proxy.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuseapi.net%2Fassets%2Fimages%2Farticles%2Fdiscord-cdn-proxy.svg" width="950" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Original Discord CDN link &lt;a href="https://cdn.discordapp.com/attachments/1239264794394234985/1239266735992078447/vault_boy.png?ex=66424c96&amp;amp;is=6640fb16&amp;amp;hm=0b3d3210b4ea0916d5c8c0b2d998a4f4b64f5b95b79cdb9b58ff96b8287dace4&amp;amp;" rel="noopener noreferrer"&gt;open&lt;/a&gt; (&lt;code&gt;404: This content is no longer available.&lt;/code&gt;)&lt;br&gt;
Discord CDN link using proxy &lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://cdn.discordapp.com/attachments/1239264794394234985/1239266735992078447/vault_boy.png?ex=66424c96&amp;amp;is=6640fb16&amp;amp;hm=0b3d3210b4ea0916d5c8c0b2d998a4f4b64f5b95b79cdb9b58ff96b8287dace4&amp;amp;" rel="noopener noreferrer"&gt;open&lt;/a&gt;&lt;br&gt;
Discord CDN link using proxy (without query parameters) &lt;a href="https://demo.useapi.net/discord-cdn-proxy/?https://cdn.discordapp.com/attachments/1239264794394234985/1239266735992078447/vault_boy.png" rel="noopener noreferrer"&gt;open&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;Two deployment options covered in the article: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google App Engine instructions.

&lt;ul&gt;
&lt;li&gt;F1 instance is free to run 24/7/365 &lt;a href="https://cloud.google.com/appengine/docs/standard/quotas#Instances" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Google &lt;strong&gt;asks&lt;/strong&gt; for a credit card or other payment method when you sign up for the Free Trial/Free Tier &lt;a href="https://cloud.google.com/free/docs/free-cloud-features#why-credit-card" rel="noopener noreferrer"&gt;link&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cloudflare Worker instructions.

&lt;ul&gt;
&lt;li&gt;100K requests per day are included in the free tier account &lt;a href="https://developers.cloudflare.com/workers/platform/pricing/" rel="noopener noreferrer"&gt;link&lt;/a&gt;.
&lt;/li&gt;
&lt;li&gt;Cloudflare &lt;strong&gt;does not&lt;/strong&gt; require the entering of payment information.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can choose either option based on your preferences.  &lt;/p&gt;

&lt;p&gt;The &lt;a href="https://github.com/useapi/discord-cdn-proxy/blob/main/google-app-engine/server.js" rel="noopener noreferrer"&gt;source code&lt;/a&gt; for Google App Engine is a standard Node.js Express server.&lt;br&gt;&lt;br&gt;
You can deploy it in any compatible environment, see the instructions below:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://vercel.com/guides/using-express-with-vercel" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://devcenter.heroku.com/articles/deploying-nodejs" rel="noopener noreferrer"&gt;Heroku&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://glitch.com/~hello-express" rel="noopener noreferrer"&gt;Glitch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.microsoft.com/en-us/azure/cloud-services/cloud-services-nodejs-develop-deploy-express-app" rel="noopener noreferrer"&gt;Microsoft Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/amplify/latest/userguide/deploy-express-server.html" rel="noopener noreferrer"&gt;Amazon AWS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.oracle.com/en-us/iaas/developer-tutorials/tutorials/node-on-ol/01oci-ol-node-summary.htm" rel="noopener noreferrer"&gt;Oracle Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Deploy Google App Engine
&lt;/h3&gt;

&lt;p&gt;Assuming you have Google Cloud &lt;a href="https://cloud.google.com/" rel="noopener noreferrer"&gt;account&lt;/a&gt; and installed &lt;a href="https://cloud.google.com/sdk/docs/install" rel="noopener noreferrer"&gt;gcloud CLI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Clone git repository &lt;a href="https://github.com/useapi/discord-cdn-proxy?tab=readme-ov-file" rel="noopener noreferrer"&gt;discord-cdn-proxy&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Navigate to &lt;code&gt;./google-app-engine&lt;/code&gt; folder and install npm packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can follow along the official Google App Engine deployment steps for &lt;a href="https://cloud.google.com/appengine/docs/standard" rel="noopener noreferrer"&gt;Node.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Log in to your Google Cloud account:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create new project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud projects create discord-cdn-proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select created project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud config &lt;span class="nb"&gt;set &lt;/span&gt;project discord-cdn-proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find created project on your Google Cloud Dashboard and link billing account to the project.  &lt;/p&gt;

&lt;p&gt;Create App Engine project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud app create
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create &lt;code&gt;.env.yaml&lt;/code&gt; file with following yaml:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;env_variables&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;discord&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;token"&lt;/span&gt;
  &lt;span class="na"&gt;CHANNELS&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;['channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'another&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;etc']"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How to &lt;a href="https://useapi.net/docs/start-here/setup-midjourney#obtain-discord-token" rel="noopener noreferrer"&gt;extract discord token&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Optional array &lt;code&gt;CHANNELS&lt;/code&gt; defines which Discord channels should be proxied.&lt;br&gt;&lt;br&gt;
You can remove it but it is strongly not recommended for public proxies.  &lt;/p&gt;

&lt;p&gt;Deploy App Engine project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud app deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may have to run the above command a few times, as it often fails on the first run.&lt;/p&gt;

&lt;p&gt;Notice the name of the deployed service, which will look like:&lt;br&gt;
&lt;code&gt;Deployed service [default] to [https://discord-cdn-proxy.it.r.appspot.com]&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Update &lt;code&gt;.env.yaml&lt;/code&gt; file and add DISCORD_CDN_PROXY_URL with value from deployed service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;env_variables&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;discord&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;token"&lt;/span&gt;
  &lt;span class="na"&gt;CHANNELS&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;['channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'another&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id',&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;'channel&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;etc']"&lt;/span&gt;
  &lt;span class="na"&gt;DISCORD_CDN_PROXY_URL&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://discord-cdn-proxy.it.r.appspot.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy App Engine project with updated configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud app deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can test deployed proxy.&lt;br&gt;&lt;br&gt;
Example (adjust to include actual values): &lt;code&gt;https://discord-cdn-proxy.it.r.appspot.com/?https://cdn.discordapp.com/attachments/channel/message/filename.ext&lt;/code&gt;    &lt;/p&gt;
&lt;h4&gt;
  
  
  Debugging locally
&lt;/h4&gt;

&lt;p&gt;Update DISCORD_TOKEN value in your &lt;code&gt;package.json&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"discord-cdn-proxy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Discord CDN proxy"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"server.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node server.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"debug"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DISCORD_TOKEN='discord token' DISCORD_CDN_PROXY_URL='http://localhost:8090/' node server.js"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"useapi.net"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"license"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ISC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dependencies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"express"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"^4.19.2"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute script with npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run debug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deploy Cloudflare Worker
&lt;/h3&gt;

&lt;p&gt;Assuming you have free Cloudflare account &lt;a href="https://developers.cloudflare.com/fundamentals/setup/account/create-account/" rel="noopener noreferrer"&gt;setup&lt;/a&gt; completed  and installed &lt;a href="https://developers.cloudflare.com/workers/wrangler/install-and-update/" rel="noopener noreferrer"&gt;Wrangler CLI&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Clone git repository &lt;a href="https://github.com/useapi/discord-cdn-proxy?tab=readme-ov-file" rel="noopener noreferrer"&gt;discord-cdn-proxy&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Navigate to &lt;code&gt;./cloudflare-web-worker&lt;/code&gt; folder and install npm packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are familiar with Cloudflare Workers, you can adjust the deployment configuration in the &lt;code&gt;wrangler.toml&lt;/code&gt; file.&lt;br&gt;&lt;br&gt;
You can fine-tune it later at any time once you have acquired some initial experience.  &lt;/p&gt;

&lt;p&gt;Deploy Worker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrangler deploy &lt;span class="nt"&gt;--keep-vars&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice deployment url which will look like &lt;code&gt;https://discord-cdn-proxy.your-user-name.workers.dev&lt;/code&gt;&lt;br&gt;&lt;br&gt;
You can use that url to test by adding Discord link at the end after  &lt;code&gt;?&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Example: &lt;code&gt;https://your-discord-cdn-proxy-url/?https://cdn.discordapp.com/attachments/channel/message/filename.ext&lt;/code&gt;    &lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;.secrets&lt;/code&gt; file with following JSON:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"DISCORD_TOKEN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"discord token"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"CHANNELS"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"['channel id', 'another channel id', 'channel id etc']"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;How to &lt;a href="https://useapi.net/docs/start-here/setup-midjourney#obtain-discord-token" rel="noopener noreferrer"&gt;extract discord token&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Optional array &lt;code&gt;CHANNELS&lt;/code&gt; defines which Discord channels should be proxied.&lt;br&gt;&lt;br&gt;
You can remove it but it is strongly not recommended for public proxies.  &lt;/p&gt;

&lt;p&gt;Deploy secrets from local file &lt;code&gt;.secrets&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrangler secret:bulk .secrets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can test deployed proxy.&lt;br&gt;&lt;br&gt;
Example (adjust to include actual values): &lt;code&gt;https://your-discord-cdn-proxy-url/?https://cdn.discordapp.com/attachments/channel/message/filename.ext&lt;/code&gt;  &lt;/p&gt;
&lt;h4&gt;
  
  
  Debugging locally
&lt;/h4&gt;

&lt;p&gt;Create &lt;code&gt;.dev.vars&lt;/code&gt; file with following text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;DISCORD_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;discord token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="nx"&gt;CHANNELS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;channel id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;another channel id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;channel id etc&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run local development using &lt;code&gt;.dev.var&lt;/code&gt; secrets:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrangler dev  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Refreshing Discord links using an R2 bucket for caching
&lt;/h4&gt;

&lt;p&gt;This allows you to store refreshed Discord links in a Cloudflare R2 bucket to minimize the number of calls to the Discord API. &lt;/p&gt;

&lt;p&gt;To create an R2 bucket, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrangler r2 bucket create discord-cdn-proxy-cache
wrangler r2 bucket list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uncomment &lt;code&gt;r2_buckets&lt;/code&gt; configuration in &lt;code&gt;wrangler.toml&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Redeploy Worker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wrangler deploy &lt;span class="nt"&gt;--keep-vars&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns. &lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check our &lt;a href="https://github.com/useapi/examples" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; with code examples.&lt;/p&gt;

</description>
      <category>discord</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Face swap and animate images generated by Midjourney using InsightFaceSwap and Pika</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Mon, 26 Feb 2024 02:50:16 +0000</pubDate>
      <link>https://dev.to/useapi/face-swap-and-animate-images-generated-by-midjourney-using-insightfaceswap-and-pika-4c1e</link>
      <guid>https://dev.to/useapi/face-swap-and-animate-images-generated-by-midjourney-using-insightfaceswap-and-pika-4c1e</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;This article covers multiple experimental APIs provided by &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You will learn how you can easily generate and upscale images from your prompt(s) using Midjourney, apply face swap via InsightFaceSwap, and finally animate the result using Pika.&lt;/p&gt;

&lt;p&gt;First, we will be generating images using the &lt;a href="https://docs.midjourney.com/docs/quick-start#5-use-the-imagine-command" rel="noopener noreferrer"&gt;/imagine&lt;/a&gt; command from &lt;a href="https://midjourney.com" rel="noopener noreferrer"&gt;Midjourney&lt;/a&gt; and upscaling them with the &lt;a href="https://useapi.net/docs/api-v2/post-jobs-button" rel="noopener noreferrer"&gt;/button&lt;/a&gt; command using the experimental &lt;a href="https://useapi.net/docs/api-v2" rel="noopener noreferrer"&gt;Midjorney API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Next, we will use the &lt;a href="https://discord.gg/Ym3X8U59ZN" rel="noopener noreferrer"&gt;InsightFaceSwap Discord Bot&lt;/a&gt; by &lt;a href="https://www.picsi.ai/" rel="noopener noreferrer"&gt;Picsi.Ai&lt;/a&gt; using the experimental &lt;a href="https://useapi.net/docs/api-faceswap-v1" rel="noopener noreferrer"&gt;InsightFaceSwap API&lt;/a&gt; to swap faces on the upscaled images mentioned above.&lt;/p&gt;

&lt;p&gt;Finally, animation provided by the &lt;a href="https://discord.gg/pika" rel="noopener noreferrer"&gt;Pika Discord Bot&lt;/a&gt; will be applied to the face swapped images via the experimental &lt;a href="https://useapi.net/docs/api-pika-v1" rel="noopener noreferrer"&gt;Pika API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Please check out the 👉 &lt;a href="https://www.youtube.com/watch?v=fTBi4-cG5DY" rel="noopener noreferrer"&gt;YouTube video&lt;/a&gt; 👈 showcasing the final results of these generations from this article.&lt;/p&gt;

&lt;p&gt;This article explains how to use a &lt;code&gt;webhook&lt;/code&gt; to retrieve generated results and how to structure a basic query to submit requests to the API. This approach is much more performant and consumes fewer resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;We will use the experimental API provided by &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; to interact with Midjourney, InsightFaceSwap and Pika Discord bots.&lt;/p&gt;

&lt;h4&gt;
  
  
  Useapi.net
&lt;/h4&gt;

&lt;p&gt;You need a monthly &lt;a href="https://useapi.net/docs/subscription" rel="noopener noreferrer"&gt;subscription&lt;/a&gt; to use the &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; experimental APIs mentioned in this article.&lt;br&gt;
Follow these &lt;a href="https://useapi.net/docs/start-here/setup-useapi" rel="noopener noreferrer"&gt;steps&lt;/a&gt; to get started.&lt;/p&gt;
&lt;h4&gt;
  
  
  Midjourney
&lt;/h4&gt;

&lt;p&gt;Naturally you'll need a Discord account with an active &lt;a href="https://docs.midjourney.com/docs/plans#plan-comparison" rel="noopener noreferrer"&gt;Midjourney subscription&lt;/a&gt;. The $10 Basic Plan will suffice.&lt;/p&gt;

&lt;p&gt;Follow these &lt;a href="https://useapi.net/docs/start-here" rel="noopener noreferrer"&gt;simple steps&lt;/a&gt; to obtain the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discord server ID number, referred to in this article as &lt;code&gt;server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord channel ID number, referred to in this article as &lt;code&gt;channel&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord token, referred to in this article as &lt;code&gt;discord&lt;/code&gt;. &lt;a href="https://useapi.net/docs/start-here/setup-midjourney#verify-discord-access" rel="noopener noreferrer"&gt;Verify Discord access&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Once you have all the above, please create or update your &lt;a href="https://useapi.net/docs/api-v2/post-account-midjourney-channel" rel="noopener noreferrer"&gt;Midjourney account information&lt;/a&gt; so that you no longer need to provide them with every API call. &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  InsightFaceSwap
&lt;/h4&gt;

&lt;p&gt;The InsightFaceSwap setup is similar to Midjourney's, please follow &lt;a href="https://useapi.net/docs/start-here/setup-faceswap" rel="noopener noreferrer"&gt;our instructions&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;InsightFaceSwap allows users to swap faces from source images onto different target images. It offers free and paid &lt;a href="https://www.patreon.com/picsi" rel="noopener noreferrer"&gt;subscriptions&lt;/a&gt;. Paid subscribers have access to a wide selection of extra features, such as &lt;a href="https://www.patreon.com/posts/89036144" rel="noopener noreferrer"&gt;HiFidelity Mode&lt;/a&gt;, &lt;a href="https://www.patreon.com/posts/picsi-ai-v2-0-97389077" rel="noopener noreferrer"&gt;ARTIFY&lt;/a&gt;, oldify/youngify, morphing multiple faces in one image, and &lt;a href="https://discord.com/channels/1095014106576212101/1128550062683865178" rel="noopener noreferrer"&gt;many more&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You can add the InsightFaceSwap Discord bot to the same server and channel as the Midjourney bot to speed up and simplify the setup process. If you're planning to use the free plan, you may want to consider setting up multiple Discord/InsightFaceSwap accounts so that you can execute more operations daily, since one account alone may not suffice.&lt;/p&gt;
&lt;h4&gt;
  
  
  Pika
&lt;/h4&gt;

&lt;p&gt;The Pika Discord bot is currently free. The setup process is very similar to the ones above. Please refer to the &lt;a href="https://useapi.net/docs/start-here/setup-pika" rel="noopener noreferrer"&gt;Pika setup steps&lt;/a&gt;. Since you have already retrieved your Discord token during the Midjourney setup, you only need to identify the channel for Pika Direct Messages.&lt;/p&gt;

&lt;p&gt;Useapi.net provides an easy way to experiment with all API endpoints without writing any code. Check the &lt;code&gt;Try It&lt;/code&gt; section at the end of each document page, such as Midjourney's &lt;a href="https://useapi.net/docs/api-v2/post-jobs-imagine#try-it" rel="noopener noreferrer"&gt;jobs/imagine&lt;/a&gt;, InsightFaceSwap's &lt;a href="https://useapi.net/docs/api-faceswap-v1/post-faceswap-swap#try-it" rel="noopener noreferrer"&gt;faceswap/swap&lt;/a&gt;, or Pika's &lt;a href="https://useapi.net/docs/api-pika-v1/post-pika-animate#try-it" rel="noopener noreferrer"&gt;pika/animate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For your convenience, we have published all the &lt;a href="https://github.com/useapi/examples/tree/main/imagine-faceswap-animate" rel="noopener noreferrer"&gt;source code&lt;/a&gt; used in this article. You can choose between JavaScript and Python examples. Clone this repository locally and use it as a starting point for your experiments.&lt;/p&gt;
&lt;h4&gt;
  
  
  Ngrok
&lt;/h4&gt;

&lt;p&gt;Follow official &lt;a href="https://ngrok.com/docs/getting-started/#step-2-connect-your-account" rel="noopener noreferrer"&gt;instructions&lt;/a&gt; to sign up for an ngrok account and copy your ngrok &lt;code&gt;authtoken&lt;/code&gt; from your ngrok dashboard.&lt;/p&gt;
&lt;h3&gt;
  
  
  Preparing Midjourney Prompts
&lt;/h3&gt;

&lt;p&gt;Let's use &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; to create a list of prompts. Here's our ChatGPT prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a simple JSON array of strings containing Midjourney prompts to generate the world's most renowned portrait paintings.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The output will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"Portrait of a Young Man by Raphael"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"Salvator Mundi by Leonardo da Vinci"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;…&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="s2"&gt;"Mona Lisa (La Gioconda) by Leonardo da Vinci"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An array of prompts generated by ChatGPT needs to be saved to a locally cloned &lt;a href="https://github.com/useapi/examples/blob/main/imagine-faceswap-animate/prompts.json" rel="noopener noreferrer"&gt;prompts.json&lt;/a&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Executing Prompts Using the Midjourney, InsightFaceSwap and Pika experimental API by useapi.net
&lt;/h3&gt;

&lt;p&gt;Create a file locally in the same folder named &lt;code&gt;example.sh&lt;/code&gt; with the following content:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/imagine-faceswap-animate/example.js" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;NGROK_AUTHTOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ngrok authtoken"&lt;/span&gt; node ./example.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/imagine-faceswap-animate/example.py" rel="noopener noreferrer"&gt;Python&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;NGROK_AUTHTOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ngrok authtoken"&lt;/span&gt; python3 ./example.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-upscaled.png" rel="noopener noreferrer"&gt;Upscaled image&lt;/a&gt; generated by Midjourney.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-faceswap.png" rel="noopener noreferrer"&gt;Face swapped image&lt;/a&gt; generated by InsightFaceSwap from upscaled image above.
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-animated.mp4" rel="noopener noreferrer"&gt;Video&lt;/a&gt; generated from face swapped image above using &lt;code&gt;text + image&lt;/code&gt; animation by Pika.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We used &lt;a href="https://github.com/useapi/examples/blob/main/imagine-faceswap-animate/source.jpg" rel="noopener noreferrer"&gt;Rick Astley&lt;/a&gt; as a source image for face swapping, feel free to change it per your liking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns. &lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Execute it from the command line like this: &lt;code&gt;./example.sh&lt;/code&gt; and observe the magic of the experimental API. &lt;/p&gt;

&lt;p&gt;The generated images and videos will be saved locally. You may proceed with the generation process within a Discord channel to further refine your creations. Alternatively, you can continue automate the process by using the &lt;a href="https://useapi.net/docs/api-v2/post-jobs-button" rel="noopener noreferrer"&gt;jobs/button&lt;/a&gt; along with &lt;a href="https://useapi.net/docs/api-pika-v1" rel="noopener noreferrer"&gt;Pika&lt;/a&gt; or perhaps &lt;a href="https://useapi.net/docs/api-faceswap-v1" rel="noopener noreferrer"&gt;InsightFaceSwap&lt;/a&gt;, following the same process as demonstrated above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-upscaled.png" rel="noopener noreferrer"&gt;Upscaled image&lt;/a&gt; generated by Midjourney.&lt;br&gt;&lt;br&gt;
&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-faceswap.png" rel="noopener noreferrer"&gt;Face swapped image&lt;/a&gt; generated by InsightFaceSwap from upscaled image above.&lt;br&gt;&lt;br&gt;
&lt;a href="https://useapi.net/assets/images/articles/imagine-faceswap-animate-animated.mp4" rel="noopener noreferrer"&gt;Video&lt;/a&gt; generated from face swapped image above using &lt;code&gt;text + image&lt;/code&gt; animation by Pika.  &lt;/p&gt;

&lt;p&gt;We used &lt;a href="https://github.com/useapi/examples/blob/main/imagine-faceswap-animate/source.jpg" rel="noopener noreferrer"&gt;Rick Astley&lt;/a&gt; as a source image for face swapping, feel free to change it per your liking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; or &lt;a href="https://t.me/use_api" rel="noopener noreferrer"&gt;Telegram Channel&lt;/a&gt; for any support questions and concerns. &lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>midjourney</category>
      <category>insightfaceswap</category>
      <category>pika</category>
      <category>api</category>
    </item>
    <item>
      <title>Automating Asset Generation with the Midjourney API • Part I</title>
      <dc:creator>useapi.net</dc:creator>
      <pubDate>Sun, 12 Nov 2023 05:12:39 +0000</pubDate>
      <link>https://dev.to/useapi/automating-asset-generation-with-the-midjourney-api-part-i-1a39</link>
      <guid>https://dev.to/useapi/automating-asset-generation-with-the-midjourney-api-part-i-1a39</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;If you are a designer, a game developer, or simply experimenting with &lt;a href="https://midjourney.com" rel="noopener noreferrer"&gt;Midjourney&lt;/a&gt; and want to create a large number of &lt;a href="https://docs.midjourney.com/docs/quick-start#5-use-the-imagine-command" rel="noopener noreferrer"&gt;/imagine&lt;/a&gt; generations based on your ideas, it may be very tedious and time-consuming to do so manually.&lt;/p&gt;

&lt;p&gt;In this article, we will explore methods to efficiently execute such tasks with minimal effort.   &lt;/p&gt;

&lt;p&gt;We will also attempt to measure the time it takes to generate 50 Midjourney /imagine generations and compare it with the time reported by Midjourney for their Fast GPU.&lt;/p&gt;

&lt;p&gt;Please check a &lt;a href="https://youtu.be/SIiPnTJ9SHU" rel="noopener noreferrer"&gt;YouTube video&lt;/a&gt; covering this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setup
&lt;/h3&gt;

&lt;p&gt;We will use the Midjourney API provided by &lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; to interact with Midjourney.&lt;/p&gt;

&lt;p&gt;To get started, you'll need a Discord account with an active &lt;a href="https://docs.midjourney.com/docs/plans#plan-comparison" rel="noopener noreferrer"&gt;Midjourney subscription&lt;/a&gt;. The $10 Basic Plan will suffice.&lt;/p&gt;

&lt;p&gt;Follow these &lt;a href="https://useapi.net/docs/start-here" rel="noopener noreferrer"&gt;simple steps&lt;/a&gt; to obtain the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Discord server id number, referred to in this article as &lt;code&gt;server&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord channel id number, referred to in this article as &lt;code&gt;channel&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Discord token, referred to in this article as &lt;code&gt;discord&lt;/code&gt;. &lt;a href="https://useapi.net/docs/start-here/setup-midjourney#verify-discord-access" rel="noopener noreferrer"&gt;Verify Discord access&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://useapi.net" rel="noopener noreferrer"&gt;useapi.net&lt;/a&gt; API token, referred to in this article as &lt;code&gt;token&lt;/code&gt;. &lt;a href="https://useapi.net/docs/start-here/setup-useapi#verify-useapinet-api-access" rel="noopener noreferrer"&gt;Verify useapi.net API access&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Useapi.net provides an easy way to experiment with all API endpoints without writing any code. Check the &lt;code&gt;Try It&lt;/code&gt; section at the end of each document page, such as &lt;a href="https://useapi.net/docs/api-v1/jobs-imagine#try-it" rel="noopener noreferrer"&gt;jobs/imagine&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For your convenience, we have published all the &lt;a href="https://github.com/useapi/examples/tree/main/generate-assets" rel="noopener noreferrer"&gt;code&lt;/a&gt; used in this article. You can choose between JavaScript and Python examples. Clone this repository locally and use it as a starting point for your experiments.&lt;/p&gt;

&lt;h3&gt;
  
  
  Preparing Midjourney Prompts
&lt;/h3&gt;

&lt;p&gt;Let's use &lt;a href="https://chat.openai.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt; to create a list of prompts. For this article, we will be generating fairy tale characters. Here's our ChatGPT prompt:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a JSON array of strings with 50 Midjourney prompts. Each prompt should describe a popular fairy tale protagonist or antagonist placed in the modern world, solving contemporary problems using fairy tale methods. Be creative!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The output will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Cinderella, now a well-known fashion designer, uses her knack for transforming rags into fabulous outfits to help those in poverty dress for success."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Jack, of Jack and the Beanstalk fame, is a successful botanist who tackles the issue of world hunger by growing gigantic, genetically modified crops."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"Rapunzel, a professional rock climber, uses her long-braided hair for safety ropes during rescue missions in difficult terrains."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="s2"&gt;"The Big Bad Wolf, a top-notch security consultant, fortifies homes against break-ins, teaching the importance of strong construction materials."&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An array of prompts generated by ChatGPT needs to be saved to a locally cloned &lt;a href="https://github.com/useapi/examples/blob/main/generate-assets/prompts.json" rel="noopener noreferrer"&gt;prompts.json&lt;/a&gt; file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Executing Prompts Using the Midjourney API
&lt;/h3&gt;

&lt;p&gt;Create a file locally in the same folder named &lt;code&gt;example.sh&lt;/code&gt; with the following content:&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/generate-assets/example.js" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_SERVER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord server"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_CHANNEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord channel"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_DISCORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord token"&lt;/span&gt; node ./example.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;a href="https://github.com/useapi/examples/blob/main/generate-assets/example.py" rel="noopener noreferrer"&gt;Python&lt;/a&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;USEAPI_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"useapi API token"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_SERVER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord server"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_CHANNEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord channel"&lt;/span&gt; &lt;span class="nv"&gt;USEAPI_DISCORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Discord token"&lt;/span&gt; python3 ./example.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute it from the command line like this: &lt;code&gt;./example.sh&lt;/code&gt; and observe the magic of the API. We have created a &lt;a href="https://youtu.be/SIiPnTJ9SHU" rel="noopener noreferrer"&gt;YouTube video&lt;/a&gt; covering this entire process.&lt;/p&gt;

&lt;p&gt;The generated images will be saved locally. You can continue the generation process in a Discord channel to refine your desired creations, or you can use the &lt;a href="https://useapi.net/docs/api-v1/jobs-button" rel="noopener noreferrer"&gt;jobs/button&lt;/a&gt; to automate it, following the same process as demonstrated above.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;As shown in the &lt;a href="https://youtu.be/SIiPnTJ9SHU" rel="noopener noreferrer"&gt;YouTube video&lt;/a&gt;, you can observe the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time to generate 50 Midjourney /imagine creations using the Midjourney API: ~&lt;strong&gt;19&lt;/strong&gt; minutes&lt;/li&gt;
&lt;li&gt;Utilization of the Midjourney Fast GPU: ~&lt;strong&gt;26&lt;/strong&gt; minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visit our &lt;a href="https://discord.gg/w28uK3cnmF" rel="noopener noreferrer"&gt;Discord Server&lt;/a&gt; for any support questions and concerns. &lt;/p&gt;

&lt;p&gt;We regularly post guides and tutorials on the &lt;a href="https://www.youtube.com/@midjourneyapi" rel="noopener noreferrer"&gt;YouTube Channel&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>midjourney</category>
      <category>ai</category>
      <category>api</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
