<?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: deAPI</title>
    <description>The latest articles on DEV Community by deAPI (@deapi).</description>
    <link>https://dev.to/deapi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3937780%2F41e3950f-ce14-44f3-a79e-4d54737c5d24.png</url>
      <title>DEV Community: deAPI</title>
      <link>https://dev.to/deapi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deapi"/>
    <language>en</language>
    <item>
      <title>How to Generate Images with Flux API in Python</title>
      <dc:creator>deAPI</dc:creator>
      <pubDate>Thu, 28 May 2026 10:26:17 +0000</pubDate>
      <link>https://dev.to/deapi/how-to-generate-images-with-flux-api-in-python-1fkf</link>
      <guid>https://dev.to/deapi/how-to-generate-images-with-flux-api-in-python-1fkf</guid>
      <description>&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw4f9fcc57uk7snn2f8w.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw4f9fcc57uk7snn2f8w.png" alt=" " width="799" height="335"&gt;&lt;/a&gt;Flux, built by Black Forest Labs, has become the go-to open-source model for image generation. This tutorial walks you through generating your first image with the Flux API using Python — from API key to saved file in under 5 minutes.&lt;/p&gt;

&lt;p&gt;We'll use &lt;a href="https://deapi.ai" rel="noopener noreferrer"&gt;deAPI&lt;/a&gt;, which runs Flux models on decentralized GPUs and exposes an OpenAI-compatible endpoint. If you've ever used the OpenAI SDK, you already know 90% of what you need.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.8+&lt;/li&gt;
&lt;li&gt;The OpenAI Python package and &lt;code&gt;requests&lt;/code&gt; (&lt;code&gt;pip install openai requests&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;A deAPI account (sign up at app.deapi.ai/dashboard — $5 free credits, no card required)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Get your API key
&lt;/h2&gt;

&lt;p&gt;Head to &lt;a href="https://app.deapi.ai/dashboard" rel="noopener noreferrer"&gt;app.deapi.ai/dashboard&lt;/a&gt; and create an account. Your API key lives under Settings &amp;gt; API Keys. It starts with &lt;code&gt;dpn-sk-&lt;/code&gt; — copy it and keep it safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Generate your first image
&lt;/h2&gt;

&lt;p&gt;Because deAPI is OpenAI-compatible, you use the standard &lt;code&gt;openai&lt;/code&gt; Python package. The only thing that really changes is &lt;code&gt;base_url&lt;/code&gt; — point it at deAPI and pass your deAPI key.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dpn-sk-your-key-here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://oai.deapi.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Flux1schnell&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A neon-lit Tokyo alley at midnight, rain reflections on asphalt, cinematic photography&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. Run the script, and you'll get back a URL pointing to your generated image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Save the image to disk
&lt;/h2&gt;

&lt;p&gt;Most use cases need the actual file, not just a URL. Here's a complete script that generates and saves:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dpn-sk-your-key-here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://oai.deapi.ai/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;images&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Flux1schnell&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A neon-lit Tokyo alley at midnight, rain reflections on asphalt, cinematic photography&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;size&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1024x1024&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;image_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;
&lt;span class="n"&gt;image_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;image_response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;generated_image.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;image_response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Image saved! URL: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;image_url&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Tweaking your generations
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Resolution.&lt;/strong&gt; For FLUX.1 Schnell the &lt;code&gt;size&lt;/code&gt; parameter accepts values from 256×256 up to 2048×2048 in 128px increments. Smaller sizes are faster and cheaper — start with 768×768 for quick iterations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompting tips.&lt;/strong&gt; Flux responds well to specific visual language. Instead of "a beautiful sunset," try "golden hour over Santorini, whitewashed buildings, warm film grain, shot on 35mm." Lighting descriptions and camera terms give the model something concrete to work with.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Batch generation.&lt;/strong&gt; Set &lt;code&gt;n=2&lt;/code&gt; or &lt;code&gt;n=4&lt;/code&gt; to generate multiple variations in a single call. Useful for exploring prompt directions before committing to a final version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flux models on deAPI
&lt;/h2&gt;

&lt;p&gt;deAPI currently offers two Flux variants:&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;Slug&lt;/th&gt;
&lt;th&gt;Max resolution&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;FLUX.1 Schnell 12B NF4&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Flux1schnell&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;2048×2048&lt;/td&gt;
&lt;td&gt;Fast prototyping, iterations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FLUX.2 Klein 4B BF16&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Flux_2_Klein_4B_BF16&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1536×1536&lt;/td&gt;
&lt;td&gt;Higher quality, also supports img2img&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Switch between them by changing the &lt;code&gt;model&lt;/code&gt; parameter. Everything else stays identical.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps
&lt;/h2&gt;

&lt;p&gt;Want to test prompts without writing code? The &lt;a href="https://deapi.ai" rel="noopener noreferrer"&gt;playground&lt;/a&gt; lets you experiment directly in the browser.&lt;/p&gt;

&lt;p&gt;The full API reference lives at &lt;a href="https://docs.deapi.ai" rel="noopener noreferrer"&gt;docs.deapi.ai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This same OpenAI-compatible pattern works for &lt;a href="https://docs.deapi.ai/openai-compatibility" rel="noopener noreferrer"&gt;text-to-speech, transcription, and video generation&lt;/a&gt; too — swap the model slug and endpoint, keep everything else.&lt;/p&gt;




&lt;p&gt;Built with &lt;a href="https://deapi.ai" rel="noopener noreferrer"&gt;deAPI&lt;/a&gt; — open-source AI models, decentralized GPUs, &lt;a href="https://app.deapi.ai/dashboard" rel="noopener noreferrer"&gt;$5 free credits to start&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
