<?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: vvvvking</title>
    <description>The latest articles on DEV Community by vvvvking (@vvvvking).</description>
    <link>https://dev.to/vvvvking</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%2F4038144%2Ff8340364-3125-46f8-88f1-745344ed51d4.png</url>
      <title>DEV Community: vvvvking</title>
      <link>https://dev.to/vvvvking</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vvvvking"/>
    <language>en</language>
    <item>
      <title>Only 15 of 111 Chinese AI models price per token - that breaks every cheapest comparison</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Tue, 03 Nov 2026 10:05:14 +0000</pubDate>
      <link>https://dev.to/vvvvking/only-15-of-111-chinese-ai-models-price-per-token-that-breaks-every-cheapest-comparison-413f</link>
      <guid>https://dev.to/vvvvking/only-15-of-111-chinese-ai-models-price-per-token-that-breaks-every-cheapest-comparison-413f</guid>
      <description>&lt;p&gt;I set out to build a simple thing: a table that answers "which Chinese AI model is cheapest for this task".&lt;/p&gt;

&lt;p&gt;It took about a day to discover the question is malformed. Of the 111 models I normalised, &lt;strong&gt;only 15 charge per token&lt;/strong&gt;. The rest charge per image, per generation, or a flat rate per call. Comparing them by their headline number is comparing nothing.&lt;/p&gt;

&lt;p&gt;Here is the distribution, from the feed I rebuild daily:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Billing unit&lt;/th&gt;
&lt;th&gt;Models&lt;/th&gt;
&lt;th&gt;Share&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Flat (per call)&lt;/td&gt;
&lt;td&gt;49&lt;/td&gt;
&lt;td&gt;44%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per generation&lt;/td&gt;
&lt;td&gt;33&lt;/td&gt;
&lt;td&gt;30%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per 1M tokens&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;14%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per image&lt;/td&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Why this breaks most "cheapest model" tables
&lt;/h2&gt;

&lt;p&gt;Take two entries from the feed at the time of writing: one image model at $0.0215 per image, one chat model at $0.075 per 1M tokens.&lt;/p&gt;

&lt;p&gt;Neither number is smaller than the other. One answers "what does an image cost", the other answers "what does a million tokens cost". A table that sorts them together is just sorting strings.&lt;/p&gt;

&lt;p&gt;This is not a Chinese-provider quirk, but the mix is unusual: outside China most API pricing is token-shaped, so tooling assumes tokens everywhere. Import a feed where 44% of rows are flat-priced into a token-shaped calculator and every total is wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I did instead
&lt;/h2&gt;

&lt;p&gt;Normalise &lt;strong&gt;within a category&lt;/strong&gt;, never across:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;text → 1M input tokens&lt;/li&gt;
&lt;li&gt;image → per generated image&lt;/li&gt;
&lt;li&gt;video → per 5 second clip&lt;/li&gt;
&lt;li&gt;3D / audio → per generation&lt;/li&gt;
&lt;li&gt;embedding → 1M tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then keep the unit next to the price, in the same row, so the comparison cannot silently drop it. A row that says &lt;code&gt;$0.054 | per 5s clip&lt;/code&gt; cannot be mistaken for &lt;code&gt;$0.054 | per 1M tokens&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The feed itself records &lt;code&gt;platform_markup_pct: 0&lt;/code&gt; on every row, so you can tell list price from resale price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this breaks anyway
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Retries are invisible.&lt;/strong&gt; A video generation that fails twice and succeeds on the third attempt costs three times the listed price. The feed has no notion of retry rate, and neither does any provider's pricing page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flat pricing is not comparable to itself.&lt;/strong&gt; Two models both billing "flat" can be wildly different: one flat rate might cover 4k tokens, another an entire 1080p video. The unit label is honest and still useless.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regional pricing and provider-side discounts are ignored.&lt;/strong&gt; I read the public price page; if you have an enterprise agreement, your numbers differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;And the data can be wrong.&lt;/strong&gt; I am parsing other people's pages. If a provider changes their table layout, a row can silently keep yesterday's price. That is why the feed carries a &lt;code&gt;generated_at&lt;/code&gt; timestamp — check it before trusting a number.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check the distribution yourself
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://aiapi-pro.com/china-ai-leaderboard.json &lt;span class="se"&gt;\&lt;/span&gt;
  | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'[.categories[].models[].unit] | group_by(.) | map({unit: .[0], n: length}) | sort_by(-.n)'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ten seconds, no key, and you do not have to take my numbers on faith.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I would want next
&lt;/h2&gt;

&lt;p&gt;The useful version of this table is per-workload, not per-model: "what does 10,000 product images with one retry each cost" is a question with an answer; "which model is cheapest" is not.&lt;/p&gt;

&lt;p&gt;If you have a workload in mind, I would rather normalise that than argue about a leaderboard.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>pricing</category>
      <category>discuss</category>
    </item>
    <item>
      <title>AI video pricing is unanswerable — so I normalised it to cost per minute</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Fri, 30 Oct 2026 12:43:49 +0000</pubDate>
      <link>https://dev.to/vvvvking/ai-video-pricing-is-unanswerable-so-i-normalised-it-to-cost-per-minute-4kli</link>
      <guid>https://dev.to/vvvvking/ai-video-pricing-is-unanswerable-so-i-normalised-it-to-cost-per-minute-4kli</guid>
      <description>&lt;p&gt;Every video model quotes a per-second rate. Almost none of them quote the same configuration: one is 720p without audio, another is 1080p with native audio, a third bills per token and hides the conversion. Ask "which is cheaper" and you get three numbers that cannot be compared.&lt;/p&gt;

&lt;p&gt;So I converted all of them to one unit: &lt;strong&gt;dollars per minute of finished output&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The spread is bigger than I expected. The same 8 seconds of video costs &lt;strong&gt;$0.34 on the cheapest model and $5.44 on the most expensive&lt;/strong&gt; — a 16x difference, before retries.&lt;/p&gt;

&lt;h2&gt;
  
  
  The table, per minute
&lt;/h2&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;Resolution&lt;/th&gt;
&lt;th&gt;Per second&lt;/th&gt;
&lt;th&gt;1 minute&lt;/th&gt;
&lt;th&gt;8 seconds&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Kling 2.6&lt;/td&gt;
&lt;td&gt;720p&lt;/td&gt;
&lt;td&gt;$0.042&lt;/td&gt;
&lt;td&gt;$2.52&lt;/td&gt;
&lt;td&gt;$0.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wan 3&lt;/td&gt;
&lt;td&gt;480p&lt;/td&gt;
&lt;td&gt;$0.050&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runway Gen-4 Turbo&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$0.050&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kling 3.0&lt;/td&gt;
&lt;td&gt;720p&lt;/td&gt;
&lt;td&gt;$0.084&lt;/td&gt;
&lt;td&gt;$5.04&lt;/td&gt;
&lt;td&gt;$0.67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hailuo 3&lt;/td&gt;
&lt;td&gt;768p&lt;/td&gt;
&lt;td&gt;$0.100&lt;/td&gt;
&lt;td&gt;$6.00&lt;/td&gt;
&lt;td&gt;$0.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kling 3.0&lt;/td&gt;
&lt;td&gt;1080p&lt;/td&gt;
&lt;td&gt;$0.112&lt;/td&gt;
&lt;td&gt;$6.72&lt;/td&gt;
&lt;td&gt;$0.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Runway Gen-4.5&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;$0.120&lt;/td&gt;
&lt;td&gt;$7.20&lt;/td&gt;
&lt;td&gt;$0.96&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kling 3.0 + native audio&lt;/td&gt;
&lt;td&gt;1080p&lt;/td&gt;
&lt;td&gt;$0.168&lt;/td&gt;
&lt;td&gt;$10.08&lt;/td&gt;
&lt;td&gt;$1.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1&lt;/td&gt;
&lt;td&gt;no audio&lt;/td&gt;
&lt;td&gt;$0.200&lt;/td&gt;
&lt;td&gt;$12.00&lt;/td&gt;
&lt;td&gt;$1.60&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.5&lt;/td&gt;
&lt;td&gt;720p&lt;/td&gt;
&lt;td&gt;$0.300&lt;/td&gt;
&lt;td&gt;$18.00&lt;/td&gt;
&lt;td&gt;$2.40&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Veo 3.1&lt;/td&gt;
&lt;td&gt;with audio&lt;/td&gt;
&lt;td&gt;$0.400&lt;/td&gt;
&lt;td&gt;$24.00&lt;/td&gt;
&lt;td&gt;$3.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kling 3.0&lt;/td&gt;
&lt;td&gt;4K&lt;/td&gt;
&lt;td&gt;$0.420&lt;/td&gt;
&lt;td&gt;$25.20&lt;/td&gt;
&lt;td&gt;$3.36&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.5&lt;/td&gt;
&lt;td&gt;1080p&lt;/td&gt;
&lt;td&gt;$0.680&lt;/td&gt;
&lt;td&gt;$40.80&lt;/td&gt;
&lt;td&gt;$5.44&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Prices checked 2026-10-30 from provider rate cards. Rows sourced to Runway are the rates published on Runway's developer pricing page, which resells those models; Kling rows are Kuaishou's own rates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three things the rate card hides
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The resolution step is not linear.&lt;/strong&gt; Kling 3.0 is $0.112/s at 1080p and $0.42/s at 4K — 3.75x the price for 4x the pixels. If a shot only ships at 1080p, rendering at 4K "to be safe" is the most expensive habit in the table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Native audio is a flat 50%.&lt;/strong&gt; Same model, same resolution: $0.112/s silent, $0.168/s with audio. Whether that beats adding sound in post depends on your pipeline — but it never appears in a comparison table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Retries double everything.&lt;/strong&gt; Every number above is a first take. For shots with people, hands or text, a 1-in-2 hit rate is normal. So 300 finished clips at 8 seconds is 4,800 generated seconds: about &lt;strong&gt;$202/month&lt;/strong&gt; on the cheapest tier, &lt;strong&gt;$538&lt;/strong&gt; on Kling 3.0 1080p, &lt;strong&gt;$3,264&lt;/strong&gt; on Seedance 2.5 1080p.&lt;/p&gt;

&lt;p&gt;That last one is the number that actually decides the budget, and it is the one nobody quotes.&lt;/p&gt;

&lt;h2&gt;
  
  
  The formula
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;generated_seconds = clips × seconds_per_clip × takes_per_clip
cost              = generated_seconds × per_second_rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nothing more complicated than that — the work is collecting rates that share a unit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it with your own numbers
&lt;/h2&gt;

&lt;p&gt;I turned the table into a calculator: clip count, duration, retries in, dollars out, across 13 models, cheapest first. No signup, no email.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Calculator: &lt;a href="https://aiapi-pro.com/video-cost-calculator" rel="noopener noreferrer"&gt;https://aiapi-pro.com/video-cost-calculator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sourced table: &lt;a href="https://aiapi-pro.com/video-cost-2026" rel="noopener noreferrer"&gt;https://aiapi-pro.com/video-cost-2026&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a number looks wrong, the source link for that row is on the table page — tell me and I will fix it. Some of the reseller-sourced rows in particular deserve a second pair of eyes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not cover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retries and failed generations.&lt;/strong&gt; Every figure is list price per successful call. A job that fails twice and succeeds on the third attempt costs three times this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional and contract pricing.&lt;/strong&gt; These are public list prices; enterprise agreements and regional tables differ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drift.&lt;/strong&gt; The underlying feed is rebuilt daily, so a number quoted in this post may already be stale. Each entry carries a &lt;code&gt;generated_at&lt;/code&gt; timestamp for exactly this reason.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>video</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Free Chinese AI API without a credit card: 5 models, 10 calls a day, and the catch</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:01:11 +0000</pubDate>
      <link>https://dev.to/vvvvking/free-chinese-ai-api-without-a-credit-card-2026-4kp4</link>
      <guid>https://dev.to/vvvvking/free-chinese-ai-api-without-a-credit-card-2026-4kp4</guid>
      <description>&lt;h1&gt;
  
  
  Free Chinese AI API Without a Credit Card (2026)
&lt;/h1&gt;

&lt;p&gt;Source: &lt;a href="https://aiapi-pro.com/blog/free-chinese-ai-api-without-card-2026" rel="noopener noreferrer"&gt;https://aiapi-pro.com/blog/free-chinese-ai-api-without-card-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free models ($0 to call): glm-4.7-flash (text), glm-4.6v-flash (vision), glm-4.1v-thinking-flash (vision+reasoning),&lt;br&gt;
cogview-3-flash (image), cogvideox-flash (video).&lt;/p&gt;

&lt;p&gt;Limits (published): 5 requests/min before the first top-up; no NovAI-side request cap after any completed top-up.&lt;br&gt;
New accounts also get $2 trial credit usable on any paid model at provider list price (0% platform fee, 1.0x multiplier).&lt;br&gt;
Top-ups start at $5 (card or USDT TRC20); no subscriptions.&lt;/p&gt;

&lt;p&gt;Sign up: &lt;a href="https://aiapi-pro.com/free/index.html" rel="noopener noreferrer"&gt;https://aiapi-pro.com/free/index.html&lt;/a&gt;&lt;br&gt;
Endpoint: &lt;a href="https://aiapi-pro.com/v1" rel="noopener noreferrer"&gt;https://aiapi-pro.com/v1&lt;/a&gt; (OpenAI-compatible)&lt;/p&gt;

&lt;p&gt;Policy: &lt;a href="https://aiapi-pro.com/transparency.json" rel="noopener noreferrer"&gt;https://aiapi-pro.com/transparency.json&lt;/a&gt;&lt;br&gt;
Price feed: &lt;a href="https://aiapi-pro.com/china-ai-leaderboard.json" rel="noopener noreferrer"&gt;https://aiapi-pro.com/china-ai-leaderboard.json&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>free</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>What a coding agent actually costs on Chinese models: list price vs the bill you get</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Sun, 25 Oct 2026 15:01:10 +0000</pubDate>
      <link>https://dev.to/vvvvking/cheapest-api-for-coding-agents-in-2026-4fng</link>
      <guid>https://dev.to/vvvvking/cheapest-api-for-coding-agents-in-2026-4fng</guid>
      <description>&lt;h1&gt;
  
  
  Cheapest API for Coding Agents in 2026
&lt;/h1&gt;

&lt;p&gt;Source: &lt;a href="https://aiapi-pro.com/blog/cheapest-api-for-coding-agents-2026" rel="noopener noreferrer"&gt;https://aiapi-pro.com/blog/cheapest-api-for-coding-agents-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agents make many calls per task. Compare cost per successful task, not price per token.&lt;br&gt;
Prices below are provider list prices passed through at 1.0x with no platform fee (snapshot 2026-10-26; unit as published in the feed):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GLM-5.3-Flash $0.08 flat - cheap bulk edits&lt;/li&gt;
&lt;li&gt;Qwen3 Coder Flash $0.15 flat - coding-tuned, low price&lt;/li&gt;
&lt;li&gt;DeepSeek-V4-Flash $0.21 flat - balanced agent-loop default&lt;/li&gt;
&lt;li&gt;DeepSeek V4.1 Flash $0.308 flat&lt;/li&gt;
&lt;li&gt;Doubao-Seed-2.0-Code $0.45 per generation&lt;/li&gt;
&lt;li&gt;DeepSeek-V4-Pro $0.63 flat - harder planning/debugging&lt;/li&gt;
&lt;li&gt;Kimi-K2.5 $0.64 flat - long-context repo reading&lt;/li&gt;
&lt;li&gt;Kimi-K2.7-Code $1.04 flat - coding-tuned&lt;/li&gt;
&lt;li&gt;Kimi-K2.7-Code HighSpeed $2.07 flat - latency sensitive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free: GLM-4.7-Flash ($0). Policy: /transparency.json (0% fee, 1.0x, refunds, pre-top-up rate limit).&lt;br&gt;
Feed: /china-ai-leaderboard.json (daily).&lt;/p&gt;

&lt;p&gt;Setup: OpenAI-compatible endpoint &lt;a href="https://aiapi-pro.com/v1" rel="noopener noreferrer"&gt;https://aiapi-pro.com/v1&lt;/a&gt;, model id per step.&lt;br&gt;
MCP: claude mcp add --transport http novai-prices &lt;a href="https://aiapi-pro.com/api/mcp" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp&lt;/a&gt;&lt;br&gt;
Measure: 30-100 real tasks, tokens per task, retries, cost per successful task.&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>coding</category>
      <category>pricing</category>
    </item>
    <item>
      <title>Adding a Chinese model price index to Claude Code in 4 minutes (MCP, no key)</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Fri, 23 Oct 2026 20:26:01 +0000</pubDate>
      <link>https://dev.to/vvvvking/chinese-ai-models-in-claude-code-and-cursor-via-mcp-2026-hbp</link>
      <guid>https://dev.to/vvvvking/chinese-ai-models-in-claude-code-and-cursor-via-mcp-2026-hbp</guid>
      <description>&lt;h1&gt;
  
  
  Chinese AI Models in Claude Code and Cursor via MCP (2026)
&lt;/h1&gt;

&lt;p&gt;Source: &lt;a href="https://aiapi-pro.com/blog/chinese-ai-models-in-claude-code-cursor-mcp-2026" rel="noopener noreferrer"&gt;https://aiapi-pro.com/blog/chinese-ai-models-in-claude-code-cursor-mcp-2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remote MCP server (read-only, no auth): &lt;a href="https://aiapi-pro.com/api/mcp" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp&lt;/a&gt;&lt;br&gt;
Tools: cheapest_models, model_price, list_categories.&lt;br&gt;
Registry: io.github.vvvvking/novai-prices (official MCP Registry); listed under Aggregators in&lt;br&gt;
punkpeye/awesome-remote-mcp-servers.&lt;/p&gt;

&lt;p&gt;Claude Code:&lt;br&gt;
    claude mcp add --transport http novai-prices &lt;a href="https://aiapi-pro.com/api/mcp" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor (~/.cursor/mcp.json):&lt;br&gt;
    {"mcpServers":{"novai-prices":{"url":"&lt;a href="https://aiapi-pro.com/api/mcp%22%7D%7D" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp"}}&lt;/a&gt;}&lt;/p&gt;

&lt;p&gt;VS Code (.vscode/mcp.json):&lt;br&gt;
    {"servers":{"novai-prices":{"type":"http","url":"&lt;a href="https://aiapi-pro.com/api/mcp%22%7D%7D" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp"}}&lt;/a&gt;}&lt;/p&gt;

&lt;p&gt;Claude Desktop:&lt;br&gt;
    {"mcpServers":{"novai-prices":{"command":"npx","args":["-y","mcp-remote","&lt;a href="https://aiapi-pro.com/api/mcp%22%5D%7D%7D" rel="noopener noreferrer"&gt;https://aiapi-pro.com/api/mcp"]}}&lt;/a&gt;}&lt;/p&gt;

&lt;p&gt;Snapshot of cheapest paid options (list price, unit as published in the feed, 2026-10-23):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat/LLM: Hunyuan MT2 Lite $0.043 flat&lt;/li&gt;
&lt;li&gt;Image: Wan 2.2 T2I Flash $0.0215 per generation&lt;/li&gt;
&lt;li&gt;Video: Seedance 2.0 Fast $0.054 flat&lt;/li&gt;
&lt;li&gt;3D: Hunyuan 3D Motion $0.185 per generation&lt;/li&gt;
&lt;li&gt;Audio: Qwen3 TTS Flash $0.0145 flat&lt;/li&gt;
&lt;li&gt;Embedding: Kinfra Text Embedding 0.6B $0.0769 flat&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Free models: GLM-4.7-Flash, GLM-4.6V-Flash, GLM-4.1V-Thinking-Flash, CogView3-Flash, CogVideoX-Flash&lt;br&gt;
(free tier: 10 free-model calls/day, 5 req/min, no card).&lt;/p&gt;

&lt;p&gt;Inference: OpenAI-compatible endpoint &lt;a href="https://aiapi-pro.com/v1" rel="noopener noreferrer"&gt;https://aiapi-pro.com/v1&lt;/a&gt; with a key from /free.&lt;br&gt;
Policy: /transparency.json (0% platform fee, 1.0x multiplier). Feed: /china-ai-leaderboard.json (daily).&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not cover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retries and failed generations.&lt;/strong&gt; Every figure is list price per successful call. A job that fails twice and succeeds on the third attempt costs three times this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional and contract pricing.&lt;/strong&gt; These are public list prices; enterprise agreements and regional tables differ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drift.&lt;/strong&gt; The underlying feed is rebuilt daily, so a number quoted in this post may already be stale. Each entry carries a &lt;code&gt;generated_at&lt;/code&gt; timestamp for exactly this reason.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>cursor</category>
      <category>api</category>
    </item>
    <item>
      <title>Using Chinese AI APIs from outside China: 3 blockers and how I got past each</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Fri, 23 Oct 2026 17:50:26 +0000</pubDate>
      <link>https://dev.to/vvvvking/chinese-ai-apis-from-outside-china-payments-phone-numbers-and-access-2026-1pl</link>
      <guid>https://dev.to/vvvvking/chinese-ai-apis-from-outside-china-payments-phone-numbers-and-access-2026-1pl</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Draft prepared 2026-10-23. Publish with a DEV.to API key (&lt;code&gt;DEV_TO_API_KEY&lt;/code&gt;) once available.&lt;br&gt;
Set &lt;code&gt;canonical_url&lt;/code&gt; so the article points back to the original on aiapi-pro.com.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Chinese models are now among the cheapest and most capable options for many workloads — but if you are outside mainland China, the friction is rarely the model itself. It is the sign-up, the payment method, the network path, and the question of whether the endpoint you are calling is really serving the model you paid for.&lt;/p&gt;

&lt;p&gt;Here is what overseas developers actually run into in 2026, and a checklist you can apply to any provider.&lt;/p&gt;

&lt;h2&gt;
  
  
  The three friction points
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Identity and sign-up.&lt;/strong&gt; Several Chinese platforms ask for a mainland phone number or local real-name verification. Others support email sign-up and are usable from abroad — it varies by platform and product line, and it changes over time.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Payment.&lt;/strong&gt; Alipay and WeChat Pay are the default rails. Some platforms accept international cards; others do not. Minimum top-ups and currencies differ too.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Network path.&lt;/strong&gt; The endpoint you reach (mainland vs. international) affects latency and stability. The same model can behave differently from Singapore, Frankfurt or Virginia.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Option 1: go direct to the official platforms
&lt;/h2&gt;

&lt;p&gt;DeepSeek, Alibaba Cloud Model Studio (DashScope), Zhipu, Moonshot (Kimi) and ByteDance Volcengine (Doubao) all run their own API platforms. Going direct is the most transparent route when it works for you.&lt;/p&gt;

&lt;p&gt;Before committing, check on the provider's own site: international email/card sign-up, API key creation without a mainland phone, English documentation, and minimum top-up.&lt;/p&gt;

&lt;p&gt;One caveat: a provider's consumer app, domestic API platform and international cloud arm can have completely different sign-up rules. Check the exact platform you will use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: an OpenAI-compatible gateway
&lt;/h2&gt;

&lt;p&gt;A gateway gives you one base URL and one key for several providers. Because the wire format is OpenAI's Chat Completions, existing SDK code usually works with a two-line change.&lt;/p&gt;

&lt;p&gt;The catch is that gateways vary enormously in quality. Before routing production traffic, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Is it official-direct?&lt;/strong&gt; Does the operator say which upstream API each model is forwarded to?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is pricing published and machine-readable?&lt;/strong&gt; A price table on a marketing page is not a feed you can diff.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is model identity verifiable?&lt;/strong&gt; Can you run your own checks instead of trusting a logo?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Can you pay from abroad?&lt;/strong&gt; Card, USDT, or both — and what is the minimum top-up?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What happens on failure?&lt;/strong&gt; Refund policy for failed generations and unused balance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Five-minute setup
&lt;/h2&gt;

&lt;p&gt;Any OpenAI SDK works:&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;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://aiapi-pro.com/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;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;nvai-...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;resp&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&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;Summarise this in one line: ...&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Verify the model is real before you commit
&lt;/h2&gt;

&lt;p&gt;"Model swapping" — a relay quietly serving a cheaper or quantised model under a flagship name — is the main trust risk in this market. You can test it yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Usage consistency.&lt;/strong&gt; Same prompt, several lengths: compare &lt;code&gt;prompt_tokens&lt;/code&gt; against the official endpoint. A different tokenizer shows a persistent skew.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Capability probes.&lt;/strong&gt; Fixed prompts with exact expected answers catch quantisation and prompt tampering.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context integrity.&lt;/strong&gt; Put a marker near the start of a long prompt and ask the model to repeat it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Streaming and error shape.&lt;/strong&gt; Confirm stream events and error payloads follow the OpenAI schema.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The open-source &lt;code&gt;canary_check.py&lt;/code&gt; from the awesome-ai-gateway project automates the first two checks against any OpenAI-compatible endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  First-week measurements
&lt;/h2&gt;

&lt;p&gt;Latency from your region, error rate at your real concurrency, prompt-cache pricing, and retry economics. A model that is 20% cheaper but retries twice as often is not cheaper in aggregate.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I work on NovAI, an OpenAI-compatible gateway for Chinese models. The checklist above is provider-agnostic on purpose; run it on us too.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>ai</category>
      <category>deepseek</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Your video, not our logo: how Seedance 2.0 API providers handle watermarks</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Wed, 05 Aug 2026 15:09:31 +0000</pubDate>
      <link>https://dev.to/vvvvking/your-video-not-our-logo-how-seedance-20-api-providers-handle-watermarks-2nad</link>
      <guid>https://dev.to/vvvvking/your-video-not-our-logo-how-seedance-20-api-providers-handle-watermarks-2nad</guid>
      <description>&lt;h2&gt;
  
  
  The question nobody asks (but should)
&lt;/h2&gt;

&lt;p&gt;You're building a product on top of a Chinese video API. Ad creative, e-commerce demos, short-form content for clients. You pick a Seedance 2.0 provider based on pricing, write the integration, test with a placeholder prompt.&lt;/p&gt;

&lt;p&gt;Then you look at the output and there's a logo in the corner.&lt;/p&gt;

&lt;p&gt;Not a subtle one. Not one you can ignore. A burned-in, visible watermark that says &lt;code&gt;kie.ai&lt;/code&gt; or &lt;code&gt;AI生成&lt;/code&gt; and makes the clip unusable for any client-facing work.&lt;/p&gt;

&lt;p&gt;This happened to us — except it happened on a competitor's output, not ours. So we tested.&lt;/p&gt;

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

&lt;p&gt;We run &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, an API gateway for Chinese AI models. We compared watermark behaviour across the major Seedance 2.0 API providers using three sources:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Direct API testing&lt;/strong&gt; (for NovAI's own output): real call → MP4 download → frame extraction → OCR on corner crops → 4× zoom&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider documentation analysis&lt;/strong&gt;: does the API expose a watermark parameter? What's the default?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Third-party reports&lt;/strong&gt;: Reddit threads, comparison blogs, user complaints&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We checked this on 5 August 2026. Here's what we found.&lt;/p&gt;

&lt;h2&gt;
  
  
  The results
&lt;/h2&gt;

&lt;h3&gt;
  
  
  kie.ai: your video, their logo
&lt;/h3&gt;

&lt;p&gt;kie.ai's API documentation includes a &lt;code&gt;waterMark&lt;/code&gt; parameter with example value &lt;code&gt;"kie.ai"&lt;/code&gt;. Their Veo 3 landing page explicitly describes watermark addition. They also sell a "Sora Watermark Remover" tool on their own marketplace — which is a strange thing to sell when your API might be adding the watermark in the first place.&lt;/p&gt;

&lt;p&gt;Third-party directory unifuncs.com labels kie.ai's watermark as "Yes (limited)."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom line&lt;/strong&gt;: kie.ai output may carry a platform watermark on top of whatever the model layer does. For client-facing work, this is a dealbreaker.&lt;/p&gt;

&lt;h3&gt;
  
  
  evolink.ai: clean output, professional caveats
&lt;/h3&gt;

&lt;p&gt;evolink.ai is the only provider that explicitly commits to clean output in their FAQ: &lt;em&gt;"Videos generated through the EvoLink API have no watermark and can be used commercially."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Their Chinese blog goes further, acknowledging that ByteDance embeds invisible provenance metadata (C2PA-style) at the model layer — and correctly stating that this is not a "watermark" in the visual sense. This is the most honest, professional treatment of the topic we've seen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bottom line&lt;/strong&gt;: evolink claims clean visible output. They're a smaller provider with less public trust history, but their technical explanation is accurate.&lt;/p&gt;

&lt;h3&gt;
  
  
  atlascloud.ai: clean by default
&lt;/h3&gt;

&lt;p&gt;Reddit tutorials in r/AtlasCloudAI show their API has a &lt;code&gt;watermark&lt;/code&gt; parameter with &lt;code&gt;default: false&lt;/code&gt;. No platform watermark unless you explicitly opt in.&lt;/p&gt;

&lt;h3&gt;
  
  
  NovAI: tested clean
&lt;/h3&gt;

&lt;p&gt;We tested our own Seedance 2.0 output directly on 4 August 2026. Both Standard and Fast variants returned &lt;strong&gt;no visible label&lt;/strong&gt; in video frames. Method: frame extraction → OCR → 4× visual zoom. Full per-model table with methodology: &lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;aiapi-pro.com/watermark-notice&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Image models are a different story — all five of our image models carry a visible &lt;code&gt;AI生成&lt;/code&gt; label. This is upstream ByteDance/Tencent/Zhipu behaviour that no provider can control.&lt;/p&gt;

&lt;h3&gt;
  
  
  fal.ai, replicate.com, wavespeed.ai, poyo.ai: silence
&lt;/h3&gt;

&lt;p&gt;None of these providers publicly discuss watermarks. No documentation, no FAQ, no blog post. Silence = model default behaviour, which in ByteDance's case means no visible label on video.&lt;/p&gt;

&lt;p&gt;But silence also means you're trusting without evidence. If the model layer changes behaviour (as it did with Tencent's Hunyuan Video), you won't know until you test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters for your integration
&lt;/h2&gt;

&lt;p&gt;The pattern across providers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Visible watermark?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0 video via API&lt;/td&gt;
&lt;td&gt;❌ No (most providers)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0 video via kie.ai&lt;/td&gt;
&lt;td&gt;⚠️ Possible (platform parameter)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0 video via evolink&lt;/td&gt;
&lt;td&gt;❌ No (explicitly claimed)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0 video via NovAI&lt;/td&gt;
&lt;td&gt;❌ No (tested)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance via Dreamina/CapCut (consumer)&lt;/td&gt;
&lt;td&gt;✅ Yes (user complaints on Reddit)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;All image models (any provider)&lt;/td&gt;
&lt;td&gt;✅ Yes (upstream, not removable)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The "web version has watermark, API version is clean" distinction is real and important. If you've seen watermark complaints about Seedance on Reddit, those are about the consumer Dreamina/CapCut products — not the API. The API channels pass through clean output.&lt;/p&gt;

&lt;p&gt;But kie.ai is the exception that proves the rule: they're adding a platform watermark on top of the model's clean output.&lt;/p&gt;

&lt;h2&gt;
  
  
  The invisible layer everyone shares
&lt;/h2&gt;

&lt;p&gt;All providers face the same constraint: ByteDance embeds invisible provenance metadata at the model layer. This is not a visible watermark — it's metadata for traceability and compliance. No API provider can remove it, because it's embedded before the output leaves ByteDance's infrastructure.&lt;/p&gt;

&lt;p&gt;Providers who say "no watermark" mean no visible label. Providers who say "no watermark &lt;em&gt;and&lt;/em&gt; no invisible watermark" are either wrong or misleading.&lt;/p&gt;

&lt;p&gt;evolink.ai handles this best: they promise clean visible output while acknowledging the invisible layer exists. That's the honest position.&lt;/p&gt;

&lt;h2&gt;
  
  
  Payment is the other watermark
&lt;/h2&gt;

&lt;p&gt;There's a second barrier that gets less attention: payment methods.&lt;/p&gt;

&lt;p&gt;Most Seedance 2.0 providers accept credit cards only. If you're in Southeast Asia, Latin America, the Middle East, or Africa, you may not have a Visa or Mastercard that works for international API payments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Payment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;NovAI&lt;/td&gt;
&lt;td&gt;PayPal, USDT, debit card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fal.ai&lt;/td&gt;
&lt;td&gt;Credit card (Stripe)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;replicate.com&lt;/td&gt;
&lt;td&gt;Credit card&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenRouter&lt;/td&gt;
&lt;td&gt;Credit card, USDC, Alipay&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Others&lt;/td&gt;
&lt;td&gt;Credit card (or unconfirmed)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;NovAI is the only provider we've verified that accepts PayPal and USDT. This isn't a feature comparison — it's an access barrier. If PayPal is your payment method and you need Seedance 2.0, NovAI may be your only option.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do about it
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Test before you commit.&lt;/strong&gt; Every provider has a free tier or free credits. Generate 5 clips, download them, OCR the corners yourself. 10 minutes of work saves you weeks of integration pain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Check the API docs for a &lt;code&gt;watermark&lt;/code&gt; parameter.&lt;/strong&gt; If the provider exposes one, check the default value. &lt;code&gt;default: false&lt;/code&gt; is fine. &lt;code&gt;default: "provider-name"&lt;/code&gt; is a red flag.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;If you need PayPal/USDT&lt;/strong&gt;, your options are limited. NovAI is the only confirmed provider. OpenRouter has USDC and Alipay but not PayPal yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't trust silence.&lt;/strong&gt; If a provider doesn't discuss watermarks publicly, their output is probably clean (model default) but you have no guarantee. Test it yourself.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Dr 2 free credit on NovAI, no credit card required. Test Seedance 2.0 output quality and watermark behaviour yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://aiapi-pro.com/media" rel="noopener noreferrer"&gt;Media hub with playground&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;Watermark test report&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aiapi-pro.com/blog/seedance-2.0-api-providers-compared" rel="noopener noreferrer"&gt;Full provider comparison&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Watermark behaviour verified 4–5 August 2026. May change without notice. NovAI is an independent API gateway, not affiliated with ByteDance, kie.ai, evolink.ai, or any other provider listed. Full methodology and caveats on our watermark notice page.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>testing</category>
      <category>showdev</category>
    </item>
    <item>
      <title>We OCR'd every frame from 9 Chinese AI video models. 3 came back clean.</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Tue, 04 Aug 2026 18:00:49 +0000</pubDate>
      <link>https://dev.to/vvvvking/we-ocrd-every-frame-from-9-chinese-ai-video-models-3-came-back-clean-j5l</link>
      <guid>https://dev.to/vvvvking/we-ocrd-every-frame-from-9-chinese-ai-video-models-3-came-back-clean-j5l</guid>
      <description>&lt;h2&gt;
  
  
  The assumption
&lt;/h2&gt;

&lt;p&gt;Most developers I talk to assume that every Chinese AI model burns a visible &lt;code&gt;AI生成&lt;/code&gt; label into generated content. It's a reasonable assumption — China's &lt;a href="https://www.cac.gov.cn/" rel="noopener noreferrer"&gt;labelling regulations&lt;/a&gt; (in force since September 2025) require it.&lt;/p&gt;

&lt;p&gt;But "required" and "actually visible" turned out to be two different things. So we tested.&lt;/p&gt;

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

&lt;p&gt;We run &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, an API gateway for Chinese AI models. We have 9 media generation models on the platform — 5 image, 4 video. For each one, we:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Made a real API call (same prompt for all: "A serene mountain landscape at golden hour, cinematic, high detail")&lt;/li&gt;
&lt;li&gt;Downloaded the output&lt;/li&gt;
&lt;li&gt;For video: extracted first, middle, and last frames with ffmpeg&lt;/li&gt;
&lt;li&gt;Cropped the bottom-right corner (where labels typically appear)&lt;/li&gt;
&lt;li&gt;Ran OCR on the crop&lt;/li&gt;
&lt;li&gt;Zoomed 3–4× and re-inspected visually&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No simulated output. No provider-supplied samples. Everything came from our own API endpoint.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Every image model has a visible label.&lt;/strong&gt; All 5 of them. Paid or free, ByteDance/Tencent/Zhipu — doesn't matter. There's a &lt;code&gt;AI生成&lt;/code&gt; (or &lt;code&gt;图片由AI生成&lt;/code&gt;) stamp in the lower right.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Video models split by provider, not by price tier:&lt;/strong&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;Provider&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Visible label?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0&lt;/td&gt;
&lt;td&gt;ByteDance&lt;/td&gt;
&lt;td&gt;$0.067–$1.00/s&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seedance 2.0 Fast&lt;/td&gt;
&lt;td&gt;ByteDance&lt;/td&gt;
&lt;td&gt;$0.054–$0.802/s&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CogVideoX-Flash&lt;/td&gt;
&lt;td&gt;Zhipu AI&lt;/td&gt;
&lt;td&gt;Free forever&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hunyuan Video 1.5&lt;/td&gt;
&lt;td&gt;Tencent&lt;/td&gt;
&lt;td&gt;$0.21/gen&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three out of four video models came back clean. The pattern is &lt;strong&gt;provider × media type&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ByteDance&lt;/strong&gt;: Labels images (Seedream), does not visibly label videos (Seedance)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tencent&lt;/strong&gt;: Labels both images and videos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zhipu AI&lt;/strong&gt;: Labels images (CogView), does not visibly label videos (CogVideoX)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;If you're building a product on top of a Chinese video API — ad creative, e-commerce demos, short-form content — a burned-in corner label is a dealbreaker for client-facing output. Until now, the common assumption was that &lt;em&gt;all&lt;/em&gt; Chinese models label everything. That assumption is wrong, and it's costing developers good options.&lt;/p&gt;

&lt;p&gt;Seedance 2.0 at 720p costs ~$0.82 for a 5-second clip on our platform. It's a genuinely good model — cinematic motion, decent prompt adherence, 5-second duration. And in our tests, the frames are clean.&lt;/p&gt;

&lt;p&gt;CogVideoX-Flash is free forever. 6-second clips. Also clean frames in our test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three honest caveats
&lt;/h2&gt;

&lt;p&gt;I want to be careful here, because the internet has a way of stripping nuance:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. "No visible label" ≠ "no labelling at all."&lt;/strong&gt; Providers may still embed invisible metadata watermarks. CogVideoX's cover image, for example, is served through Zhipu's watermark pipeline even though nothing is visible in the video frames. We only report what we can see and OCR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. This is upstream behaviour, not ours.&lt;/strong&gt; Providers can change how they apply labels at any time. If our next scheduled check finds a change, we'll update the &lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;watermark notice page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Paying never removes an image label.&lt;/strong&gt; All 5 image models carry the label regardless of whether they're paid or free. The pattern is provider × media type, not free vs paid.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why providers differ
&lt;/h2&gt;

&lt;p&gt;China's labelling rules require providers to attach labels to AI-generated content, but they don't specify the exact method. Each provider implements compliance differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ByteDance&lt;/strong&gt;: Likely relies on metadata for video (no visible mark), but stamps images&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tencent&lt;/strong&gt;: Stamps everything — images and videos both get a corner mark&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zhipu AI&lt;/strong&gt;: Stamps images, leaves video frames clean (though the cover image goes through their watermark service)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This means the "safest" bet for visible-label-free video is currently ByteDance or Zhipu AI video models. But — caveat #2 — upstream behaviour can change.&lt;/p&gt;

&lt;h2&gt;
  
  
  The code
&lt;/h2&gt;

&lt;p&gt;If you want to try Seedance 2.0 yourself:&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="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;BASE&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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;KEY&lt;/span&gt; &lt;span class="o"&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;Authorization&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;Bearer sk-novai-xxx&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Submit a Seedance 2.0 video task
&lt;/span&gt;&lt;span class="n"&gt;task&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;post&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="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/video/generations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&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;model&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;doubao-seedance-2.0&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;prompt&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;A drone shot over a neon city at night, cinematic&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;duration&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;resolution&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;720p&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Poll until done
&lt;/span&gt;&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;r&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/video/generations/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;task&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;queued&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;processing&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&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;r&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;video_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;r&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&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;p&gt;Or the free option, CogVideoX-Flash — same code, just change the model name:&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="n"&gt;task&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;post&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="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/video/generations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&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;model&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;cogvideox-flash&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;prompt&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;A paper plane gliding over a calm ocean&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$2 free credit on signup, no credit card. &lt;a href="https://aiapi-pro.com/register" rel="noopener noreferrer"&gt;Register here&lt;/a&gt; if you want to test it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bigger picture
&lt;/h2&gt;

&lt;p&gt;Most API gateways and relay services won't tell you which models have watermarks. They'll either say "no watermark" (often false) or say nothing at all. We think that's bad for everyone — developers waste time integrating models that don't work for their use case, and gateways lose trust when the output doesn't match the claim.&lt;/p&gt;

&lt;p&gt;Our approach: test every model, publish the results with the method and date, and update it on a schedule. The &lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;watermark notice page&lt;/a&gt; has the full 9-model table, the three caveats, and a FAQ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tested, not guessed.&lt;/strong&gt; That's the standard we're holding ourselves to.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Full per-model watermark table with methodology and FAQ: &lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;aiapi-pro.com/watermark-notice&lt;/a&gt;. NovAI is an independent API gateway, not affiliated with ByteDance, Tencent, or Zhipu AI.&lt;/em&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Alibaba's Qwen3.8-Max: What 2.4 Trillion Parameters Actually Means for Developers</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Mon, 03 Aug 2026 06:05:46 +0000</pubDate>
      <link>https://dev.to/vvvvking/alibabas-qwen38-max-what-24-trillion-parameters-actually-means-for-developers-b86</link>
      <guid>https://dev.to/vvvvking/alibabas-qwen38-max-what-24-trillion-parameters-actually-means-for-developers-b86</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I run &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, an API gateway serving Qwen3.8-Max and 40+ other models. This is an analysis piece, not a product pitch — the technical observations below come from Alibaba's announcement and independent reviewers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  The parameter race is back (but it's different this time)
&lt;/h2&gt;

&lt;p&gt;Remember 2024, when everyone was rushing to ship 400B models and the discourse was "parameters don't matter anymore, it's all about data quality"? That was true — for dense models. Then DeepSeek proved that MoE (mixture-of-experts) changes the math: you can have 671B total parameters but only activate 37B per token, getting dense-model quality at a fraction of the compute cost.&lt;/p&gt;

&lt;p&gt;Now Alibaba has taken this to its logical extreme. &lt;strong&gt;Qwen3.8-Max-Preview&lt;/strong&gt;, released 19 July at WAIC Shanghai, packs &lt;strong&gt;2.4 trillion total parameters&lt;/strong&gt; into a sparse MoE architecture. That's nearly 4x DeepSeek V3's total parameter count, and it puts Qwen in the same league as Kimi K3's 2.8T — the two largest models available via API today.&lt;/p&gt;

&lt;p&gt;But here's what's actually interesting: it's not just bigger. It's the first Qwen model that's &lt;strong&gt;natively multimodal&lt;/strong&gt; at this scale, and it's the first trillion-parameter model from a Chinese lab that independent reviewers say genuinely competes with Fable 5 and GPT-5.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's genuinely new (not just "more parameters")
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Native multimodality at 2.4T
&lt;/h3&gt;

&lt;p&gt;Previous Qwen flagships (Qwen3-Max, Qwen3.7-Max) were text-only. Qwen3.8-Max processes &lt;strong&gt;text, images, video, and documents&lt;/strong&gt; natively — no separate vision adapter, no "vision model" bolted on. This matters because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't need to route different input types to different models&lt;/li&gt;
&lt;li&gt;The model can reason across modalities (e.g., "read this PDF, look at this screenshot, and tell me if the UI matches the spec")&lt;/li&gt;
&lt;li&gt;Document processing (PDF, HTML, Markdown) works without pre-processing to plain text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the real differentiator vs. Kimi K3, which is text + image only.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The self-verification behavior
&lt;/h3&gt;

&lt;p&gt;An independent reviewer, &lt;a href="https://thomas-wiegold.com/blog/qwen-3-8-max-review/" rel="noopener noreferrer"&gt;Thomas Wiegold&lt;/a&gt;, ran Qwen3.8-Max through 4 coding benchmarks. His most interesting observation wasn't about quality — it was about &lt;strong&gt;process&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"It checked buttons, menus, animations and aspect ratios with Playwright like it was getting paid per test run."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The model doesn't just generate code and stop. It generates, then &lt;strong&gt;tests its own output&lt;/strong&gt; using browser automation, then iterates. This is agentic behavior baked into the model's default response pattern. It's slow — a website build took 30+ minutes — but the output quality was described as "the best I've ever gotten from this prompt."&lt;/p&gt;

&lt;p&gt;This is a meaningful shift. We're moving from "models that generate code" to "models that generate, test, debug, and iterate." The parameter count isn't what enables this — it's the training methodology. But 2.4T parameters give the model enough capacity to hold both generation and evaluation capabilities simultaneously.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. OpenAI + Anthropic protocol support
&lt;/h3&gt;

&lt;p&gt;This sounds boring, but it's actually a big deal. Qwen3.8-Max's API speaks &lt;strong&gt;both&lt;/strong&gt; OpenAI and Anthropic protocols natively. That means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; users can swap in Qwen3.8-Max by changing one config line (OpenAI protocol)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Claude Code&lt;/strong&gt; users can do the same (Anthropic protocol)&lt;/li&gt;
&lt;li&gt;No wrapper, no adapter, no translation layer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most Chinese models only speak OpenAI format. Supporting Anthropic protocol natively means Qwen3.8-Max can serve as a drop-in replacement for Claude in tools that only support the Anthropic API.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's marketing (be honest)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  "Second only to Fable 5"
&lt;/h3&gt;

&lt;p&gt;Alibaba's claim. No benchmark table has been published. No model card exists. The only independent evaluation found (Trilogy AI's StackPerf) scored Qwen3.8-Max at 80 vs. Kimi K3's 83 — on a single task, single run. Take it as a data point, not a verdict.&lt;/p&gt;

&lt;h3&gt;
  
  
  The 2.4T number itself
&lt;/h3&gt;

&lt;p&gt;Total parameters ≠ active parameters. In a sparse MoE model, only a fraction of parameters are activated per token. Alibaba hasn't disclosed the active parameter count. The model could be activating 50B, 100B, or 200B per token — and that's what determines actual inference cost and latency, not the total.&lt;/p&gt;

&lt;h3&gt;
  
  
  "Open weights coming soon"
&lt;/h3&gt;

&lt;p&gt;Promised, with no date and no license. The previous Qwen3-Max was open-weighted; Qwen3.7-Max was not. Treat this as likely but uncertain. If open weights land, the small Qwen3.8 models (distilled from the flagship) will be the real story for local AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it means for developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  For API consumers
&lt;/h3&gt;

&lt;p&gt;Qwen3.8-Max is available through OpenAI-compatible gateways. If you're already using the OpenAI SDK:&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;YOUR_KEY&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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# any OpenAI-compatible gateway
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;resp&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;qwen3.8-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&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;Your prompt here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&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. Streaming, function calling, and multimodal input all work with standard OpenAI SDK patterns.&lt;/p&gt;

&lt;h3&gt;
  
  
  For the model landscape
&lt;/h3&gt;

&lt;p&gt;The frontier is now genuinely crowded. Here's the honest state of play as of July 2026:&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;Claim to fame&lt;/th&gt;
&lt;th&gt;Weakness&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Fable 5&lt;/td&gt;
&lt;td&gt;Best overall quality&lt;/td&gt;
&lt;td&gt;Expensive, locked behind subscriptions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5&lt;/td&gt;
&lt;td&gt;Best speed/quality balance&lt;/td&gt;
&lt;td&gt;Closed, expensive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi K3&lt;/td&gt;
&lt;td&gt;2.8T params, 1M context&lt;/td&gt;
&lt;td&gt;Text + image only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Qwen3.8-Max&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2.4T, multimodal, cheap preview&lt;/td&gt;
&lt;td&gt;Slow, preview-only, CCP guardrails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Grok 4.5&lt;/td&gt;
&lt;td&gt;Fast, cheap, good coder&lt;/td&gt;
&lt;td&gt;Smaller context, X-aligned guardrails&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The real differentiators in 2026 aren't quality — the top 5 models are all "great" and "close." The differentiators are &lt;strong&gt;price, speed, availability, and guardrails.&lt;/strong&gt; Qwen3.8-Max wins on price (preview at 1/10th standard rate) and loses on speed.&lt;/p&gt;

&lt;h3&gt;
  
  
  For local AI
&lt;/h3&gt;

&lt;p&gt;Qwen is the open-weight family powering a huge chunk of local agent setups. If the promised open weights land, and if Qwen3.8's improvements trickle down to 7B–72B sizes, that's the real story. A 72B Qwen3.8 model with distilled multimodal capability, running on a consumer GPU, would be a game-changer for privacy-sensitive use cases (medical, legal, enterprise).&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest take
&lt;/h2&gt;

&lt;p&gt;Qwen3.8-Max is a genuinely impressive model that's being shipped as a preview with a lot of unanswered questions. The 2.4T parameter count is a headline, not a spec — what matters is the native multimodality, the self-verification behavior, and the protocol compatibility.&lt;/p&gt;

&lt;p&gt;If you're choosing a model for &lt;strong&gt;rapid iteration&lt;/strong&gt;, pick something faster (Grok 4.5, DeepSeek V4 Flash, Qwen-Plus). If you're choosing a model for &lt;strong&gt;thorough one-shot tasks&lt;/strong&gt; — a full website build, a complex codebase audit, a deep research analysis — Qwen3.8-Max belongs in the top tier, and at preview pricing, it's the cheapest option there.&lt;/p&gt;

&lt;p&gt;Try it with $2 free credit (no credit card) at &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, or through Alibaba's own Token Plan. Run your own prompts and judge for yourself — that's what the preview is for.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Full API guide with Python, Node, and curl examples: &lt;a href="https://aiapi-pro.com/blog/qwen38-max-api-guide" rel="noopener noreferrer"&gt;Qwen3.8-Max API Guide&lt;/a&gt;. NovAI is an independent API gateway, not affiliated with Alibaba Cloud.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
    </item>
    <item>
      <title>Qwen3.8-Max: Calling Alibaba's 2.4T Flagship Through an OpenAI-Compatible API</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Mon, 03 Aug 2026 05:47:26 +0000</pubDate>
      <link>https://dev.to/vvvvking/qwen38-max-calling-alibabas-24t-flagship-through-an-openai-compatible-api-kop</link>
      <guid>https://dev.to/vvvvking/qwen38-max-calling-alibabas-24t-flagship-through-an-openai-compatible-api-kop</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I run &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, an API gateway that serves Qwen3.8-Max alongside 40+ other models. Specs below are from Alibaba's announcement; you can verify pricing yourself.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Alibaba's Qwen team released &lt;strong&gt;Qwen3.8-Max-Preview&lt;/strong&gt; on 19 July 2026 at WAIC Shanghai: a &lt;strong&gt;2.4-trillion-parameter sparse-MoE&lt;/strong&gt; model, natively multimodal (text + images + video + documents), with a 128K context window (extendable to 1M). Alibaba called it "second only to Fable 5" â€” and early independent testing puts it in the top tier for coding and reasoning.&lt;/p&gt;

&lt;p&gt;It's now available through an OpenAI-compatible endpoint. If you already use the OpenAI SDK, it's a two-line change.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&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;YOUR_KEY&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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;resp&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;qwen3.8-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&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;Explain sparse MoE routing in 3 bullet points.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&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;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&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;message&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Streaming works exactly as you'd expect:&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="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;chunk&lt;/span&gt; &lt;span class="ow"&gt;in&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;qwen3.8-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&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;Write a haiku about trillion-parameter models.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="n"&gt;stream&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&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;chunk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&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;delta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Multimodal: images and documents
&lt;/h2&gt;

&lt;p&gt;Qwen3.8-Max is natively multimodal â€” vision is built in, not bolted on. Send an image with the standard &lt;code&gt;image_url&lt;/code&gt; content type:&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="n"&gt;resp&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;qwen3.8-max&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&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;type&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;text&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;text&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;What&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s in this screenshot? List all UI elements.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;type&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;image_url&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;image_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&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;url&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;https://example.com/ui.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}},&lt;/span&gt;
        &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also accepts PDF, HTML, and Markdown directly â€” no pre-processing to plain text needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Qwen3.8-Max matters
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Spec&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Total parameters&lt;/td&gt;
&lt;td&gt;2.4T (sparse MoE)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modality&lt;/td&gt;
&lt;td&gt;Text, images, video, documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window&lt;/td&gt;
&lt;td&gt;128K standard (1M extended)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API protocol&lt;/td&gt;
&lt;td&gt;OpenAI + Anthropic compatible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open weights&lt;/td&gt;
&lt;td&gt;Promised "soon" (no date yet)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;An independent reviewer (&lt;a href="https://thomas-wiegold.com/blog/qwen-3-8-max-review/" rel="noopener noreferrer"&gt;Thomas Wiegold&lt;/a&gt;) ran it through 4 coding tests â€” including a full Go poker simulation that only Fable 5 and Grok 4.5 had previously one-shotted. Qwen3.8-Max became the third model to do it. His takeaway: "very good and very slow" â€” the model spends extensive time on self-verification, which trades speed for thoroughness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing
&lt;/h2&gt;

&lt;p&gt;Alibaba's official rate for Qwen3.8-Max is &lt;strong&gt;Â¥12 / Â¥36 per million tokens&lt;/strong&gt; (input / output) â€” roughly &lt;strong&gt;$1.67 / $5.00&lt;/strong&gt;. During the preview period, Alibaba offers it at &lt;strong&gt;1/10th of standard rate&lt;/strong&gt; (Â¥1.2 / Â¥3.6, ~$0.17 / $0.50), with overnight rates as low as &lt;strong&gt;1/50th&lt;/strong&gt; (22:00â€“08:00 UTC+8).&lt;/p&gt;

&lt;p&gt;NovAI passes these preview savings through. Check live per-token pricing: &lt;a href="https://aiapi-pro.com/pricing" rel="noopener noreferrer"&gt;https://aiapi-pro.com/pricing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;New keys come with &lt;strong&gt;$2 free credit, no credit card&lt;/strong&gt;, so you can test Qwen3.8-Max against your own prompts before spending anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;Copy-paste examples in Python, Node, and curl (chat, streaming, vision, long context) are on GitHub:&lt;/p&gt;

&lt;p&gt;ðŸ‘‰ &lt;a href="https://github.com/vvvvking/novai-examples" rel="noopener noreferrer"&gt;https://github.com/vvvvking/novai-examples&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Full guide with curl + Node snippets and FAQ: &lt;a href="https://aiapi-pro.com/blog/qwen38-max-api-guide" rel="noopener noreferrer"&gt;Qwen3.8-Max API Guide&lt;/a&gt;. NovAI is an independent API gateway and is not affiliated with Alibaba Cloud.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What this does not cover
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retries and failed generations.&lt;/strong&gt; Every figure is list price per successful call. A job that fails twice and succeeds on the third attempt costs three times this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional and contract pricing.&lt;/strong&gt; These are public list prices; enterprise agreements and regional tables differ.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drift.&lt;/strong&gt; The underlying feed is rebuilt daily, so a number quoted in this post may already be stale. Each entry carries a &lt;code&gt;generated_at&lt;/code&gt; timestamp for exactly this reason.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>I Ran 8 AI APIs Through the Same 50 Prompts — Here's the Real Cost Breakdown</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Sun, 02 Aug 2026 14:03:26 +0000</pubDate>
      <link>https://dev.to/vvvvking/i-ran-8-ai-apis-through-the-same-50-prompts-heres-the-real-cost-breakdown-1b6k</link>
      <guid>https://dev.to/vvvvking/i-ran-8-ai-apis-through-the-same-50-prompts-heres-the-real-cost-breakdown-1b6k</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I'm 于侃 (Yu Kan), the developer behind &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, an API gateway for Chinese AI models. Every number in this article was measured by running the test script below. I tested DeepSeek's official API separately to verify the gateway adds zero overhead. The test prompts and full results are open-sourced — links at the bottom.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Everyone publishing API pricing comparisons is either cherry-picking prompts or quoting the official pricing page without testing. I got tired of it, so I ran the same 50 real-world prompts through 8 different AI APIs and tracked every single token and every cent.&lt;/p&gt;

&lt;p&gt;Here's what I actually found — including a few results that surprised me.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;Cost (50 prompts)&lt;/th&gt;
&lt;th&gt;Quality (1-5)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NovAI / Qwen-Plus&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.011&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;NovAI / DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.019&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;DeepSeek (official) V4 Flash&lt;/td&gt;
&lt;td&gt;$0.019&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Google Gemini 3.1 Flash&lt;/td&gt;
&lt;td&gt;$0.027&lt;/td&gt;
&lt;td&gt;3.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;NovAI / Doubao Seed 2.0 Lite&lt;/td&gt;
&lt;td&gt;$0.034&lt;/td&gt;
&lt;td&gt;3.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;OpenAI GPT-5&lt;/td&gt;
&lt;td&gt;$0.142&lt;/td&gt;
&lt;td&gt;4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;OpenAI GPT-4o&lt;/td&gt;
&lt;td&gt;$0.198&lt;/td&gt;
&lt;td&gt;4.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Anthropic Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;$0.287&lt;/td&gt;
&lt;td&gt;4.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The cheapest option was 26× cheaper than the most expensive one.&lt;/strong&gt; The quality gap between #1 and #8 was 0.8 points on a 5-point scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I tested
&lt;/h2&gt;

&lt;p&gt;I used 50 prompts across 5 categories:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;10 coding tasks&lt;/strong&gt; (debug Python, write SQL, explain Rust errors)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 reasoning tasks&lt;/strong&gt; (math word problems, logic puzzles)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 writing tasks&lt;/strong&gt; (blog intros, email drafts, documentation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 multilingual tasks&lt;/strong&gt; (English↔Chinese↔Japanese translation)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;10 long-context tasks&lt;/strong&gt; (summarize 8K-token documents)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For each prompt, I measured:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Input tokens&lt;/strong&gt; (exact count from API response)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output tokens&lt;/strong&gt; (exact count)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wall-clock latency&lt;/strong&gt; (time to first token + total time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality&lt;/strong&gt; (manual review on a 1-5 scale)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt; (calculated from official pricing, not marketing claims)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The 8 APIs I tested
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Pricing verified July 2026 from official pricing pages. Prices change — always check the source.&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;Model used&lt;/th&gt;
&lt;th&gt;Input $/1M&lt;/th&gt;
&lt;th&gt;Output $/1M&lt;/th&gt;
&lt;th&gt;Context&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;GPT-5&lt;/td&gt;
&lt;td&gt;$1.25&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;GPT-4o&lt;/td&gt;
&lt;td&gt;$2.50&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;$3.00&lt;/td&gt;
&lt;td&gt;$15.00&lt;/td&gt;
&lt;td&gt;200K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Gemini 3.1 Flash&lt;/td&gt;
&lt;td&gt;$0.15&lt;/td&gt;
&lt;td&gt;$0.60&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSeek (official)&lt;/td&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.14&lt;/td&gt;
&lt;td&gt;$0.28&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NovAI&lt;/td&gt;
&lt;td&gt;DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.14&lt;/td&gt;
&lt;td&gt;$0.28&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NovAI&lt;/td&gt;
&lt;td&gt;Qwen-Plus&lt;/td&gt;
&lt;td&gt;$0.08&lt;/td&gt;
&lt;td&gt;$0.32&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NovAI&lt;/td&gt;
&lt;td&gt;Doubao Seed 2.0 Lite&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$0.80&lt;/td&gt;
&lt;td&gt;256K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I tested both DeepSeek's official API and DeepSeek via NovAI to check whether the gateway adds overhead (spoiler: it doesn't — identical token counts, &amp;lt;50ms latency difference).&lt;/p&gt;

&lt;h2&gt;
  
  
  The results: total cost for all 50 prompts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;Total cost (50 prompts)&lt;/th&gt;
&lt;th&gt;Avg quality (1-5)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;NovAI / Qwen-Plus&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.011&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;NovAI / DeepSeek V4 Flash&lt;/td&gt;
&lt;td&gt;$0.019&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;DeepSeek (official) V4 Flash&lt;/td&gt;
&lt;td&gt;$0.019&lt;/td&gt;
&lt;td&gt;4.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Google Gemini 3.1 Flash&lt;/td&gt;
&lt;td&gt;$0.027&lt;/td&gt;
&lt;td&gt;3.8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;NovAI / Doubao Seed 2.0 Lite&lt;/td&gt;
&lt;td&gt;$0.034&lt;/td&gt;
&lt;td&gt;3.7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;OpenAI GPT-5&lt;/td&gt;
&lt;td&gt;$0.142&lt;/td&gt;
&lt;td&gt;4.6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;OpenAI GPT-4o&lt;/td&gt;
&lt;td&gt;$0.198&lt;/td&gt;
&lt;td&gt;4.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Anthropic Claude Sonnet 4.6&lt;/td&gt;
&lt;td&gt;$0.287&lt;/td&gt;
&lt;td&gt;4.7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;The cheapest option was 26× cheaper than the most expensive one.&lt;/strong&gt; And the quality difference between #1 (Qwen-Plus at $0.011) and #8 (Claude at $0.287) was 0.8 points on a 5-point scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  What surprised me
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Qwen-Plus is absurdly cheap and genuinely good.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;At $0.08/1M input and $0.32/1M output, Qwen-Plus was the cheapest model I tested — and it scored 3.9/5 on quality, beating Gemini 3.1 Flash (3.8/5) which costs 2.4× more. For coding tasks specifically, it scored 4.2/5, matching DeepSeek V4 Flash.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. DeepSeek via NovAI is identical to DeepSeek's official API.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was skeptical that a gateway would add latency or modify token counts. I tested the exact same prompts through both. Result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Token counts: identical (0% difference)&lt;/li&gt;
&lt;li&gt;Latency: NovAI averaged 42ms slower (640ms vs 598ms for first token) — negligible&lt;/li&gt;
&lt;li&gt;Cost: identical (same per-token pricing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The gateway adds zero overhead. This matters because NovAI gives you access to 40+ Chinese models through one API key, while DeepSeek's official API only gives you DeepSeek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The "quality gap" is smaller than pricing pages suggest.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Look at pricing tables and you'd think there's a massive quality difference between GPT-5 ($1.25/$10) and DeepSeek V4 Flash ($0.14/$0.28). In practice, for the 50 prompts I tested:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5 scored 4.6/5&lt;/li&gt;
&lt;li&gt;DeepSeek V4 Flash scored 4.1/5&lt;/li&gt;
&lt;li&gt;The gap is 0.5 points — noticeable but not "10× better"&lt;/li&gt;
&lt;li&gt;The price gap is &lt;strong&gt;10× on input, 36× on output&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For 90% of production workloads (chatbots, content generation, code completion, document processing), the 0.5-point quality difference is invisible to end users. The 10-36× price difference is very visible to your CFO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Claude is the best, but only marginally — and at a huge premium.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Claude Sonnet 4.6 scored 4.7/5 — the highest quality. But it cost $0.287 for 50 prompts vs $0.019 for DeepSeek V4 Flash (which scored 4.1/5). That's &lt;strong&gt;15× more expensive for 0.6 points of quality&lt;/strong&gt;. Claude makes sense for legal documents and medical summaries. For everything else, it's overkill.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where each API actually wins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Use OpenAI GPT-5 when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need the absolute best reasoning quality&lt;/li&gt;
&lt;li&gt;You're building a customer-facing product where quality is the differentiator&lt;/li&gt;
&lt;li&gt;Your margins can absorb $1.25/$10 per million tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use DeepSeek V4 Flash when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need GPT-4-level quality at 1/10th the price&lt;/li&gt;
&lt;li&gt;You're doing coding tasks, reasoning, or general chat&lt;/li&gt;
&lt;li&gt;You want the best price-to-quality ratio in 2026&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Qwen-Plus when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cost is the #1 priority&lt;/li&gt;
&lt;li&gt;You're doing multilingual work (especially Chinese/English)&lt;/li&gt;
&lt;li&gt;You can tolerate slightly lower quality on complex reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use Claude Sonnet 4.6 when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Quality is non-negotiable (legal, medical, compliance)&lt;/li&gt;
&lt;li&gt;You're processing long documents (200K context)&lt;/li&gt;
&lt;li&gt;Budget is not a constraint&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The code I used to test
&lt;/h2&gt;

&lt;p&gt;Here's the Python script I used. It's simple, reproducible, and you can run it yourself.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="c1"&gt;# Test with NovAI (works identically with any OpenAI-compatible API)
&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;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://aiapi-pro.com/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;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;nvai-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;prompts&lt;/span&gt; &lt;span class="o"&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;Write a Python function to merge two sorted linked lists&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;Explain the difference between mutex and semaphore&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;Translate to Chinese: &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;The quick brown fox jumps over the lazy dog&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="c1"&gt;# ... 47 more prompts (full list in the GitHub repo)
&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;start&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&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;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&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;deepseek-v4-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# or qwen-plus, doubao-seed-2.0-lite
&lt;/span&gt;        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&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;role&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;user&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;content&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="p"&gt;}],&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;latency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;time&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;start&lt;/span&gt;

    &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&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="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_tokens&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output_tokens&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completion_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;latency_ms&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;latency&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response&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="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&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;message&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="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;# Calculate cost
&lt;/span&gt;&lt;span class="n"&gt;INPUT_PRICE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.14&lt;/span&gt;  &lt;span class="c1"&gt;# $/1M tokens for deepseek-v4-flash
&lt;/span&gt;&lt;span class="n"&gt;OUTPUT_PRICE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;0.28&lt;/span&gt;

&lt;span class="n"&gt;total_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;input_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;total_output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;output_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;total_cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_input&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;INPUT_PRICE&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;total_output&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;OUTPUT_PRICE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1_000_000&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;Total cost for &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; prompts: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total_cost&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="n"&gt;f&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;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;Avg latency: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nf"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;latency_ms&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;ms&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;p&gt;You can swap the &lt;code&gt;base_url&lt;/code&gt; and &lt;code&gt;api_key&lt;/code&gt; to test any provider. The OpenAI Python SDK works with any OpenAI-compatible API — that's the beauty of the standard.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to reproduce this yourself
&lt;/h2&gt;

&lt;p&gt;If you want to verify these numbers (and you should — don't trust random blog posts), here's how:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Get API keys from each provider.&lt;/strong&gt; OpenAI, Anthropic, Google, DeepSeek all offer free credits. For NovAI, you can register at &lt;a href="https://aiapi-pro.com/register" rel="noopener noreferrer"&gt;aiapi-pro.com/register&lt;/a&gt; and get free credits — no credit card needed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Run the same 50 prompts.&lt;/strong&gt; I've open-sourced my test prompts and script at &lt;a href="https://github.com/vvvvking/ai-api-cost-comparison" rel="noopener noreferrer"&gt;github.com/vvvvking/ai-api-cost-comparison&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Calculate costs using official pricing pages.&lt;/strong&gt; Don't use my numbers — use the official pricing pages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenAI: &lt;a href="https://developers.openai.com/api/docs/pricing" rel="noopener noreferrer"&gt;developers.openai.com/api/docs/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DeepSeek: &lt;a href="https://api-docs.deepseek.com/quick_start/pricing" rel="noopener noreferrer"&gt;api-docs.deepseek.com/quick_start/pricing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;NovAI: &lt;a href="https://aiapi-pro.com/blog/chinese-ai-api-pricing-2026" rel="noopener noreferrer"&gt;aiapi-pro.com/blog/chinese-ai-api-pricing-2026&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;50 prompts is a small sample.&lt;/strong&gt; Your workload will differ. Run the test on your own prompts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quality scoring is subjective.&lt;/strong&gt; I scored manually. You might disagree with my 4.1 vs 4.6 ratings. The point is the &lt;em&gt;relative&lt;/em&gt; difference, not the absolute numbers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I didn't test image/video generation.&lt;/strong&gt; This is text-only. Image and video generation has completely different economics — and Chinese models have a mandatory &lt;code&gt;AI生成&lt;/code&gt; watermark that you should know about before using them. (Disclosure: I work on NovAI, which is a gateway for these models. The watermark is a legal requirement in China and cannot be removed. See &lt;a href="https://aiapi-pro.com/watermark-notice" rel="noopener noreferrer"&gt;aiapi-pro.com/watermark-notice&lt;/a&gt;.)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Latency varies by region.&lt;/strong&gt; I tested from Southeast Asia. If you're in the US or Europe, add 50-150ms to all latency numbers. DeepSeek and NovAI have servers in Asia, so they're naturally faster for Asian users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;I work on NovAI.&lt;/strong&gt; I've been transparent about this throughout the article. But the numbers are real and reproducible — I tested DeepSeek's official API separately and got identical results. The gateway overhead is negligible. Run the test yourself if you're skeptical.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The bottom line
&lt;/h2&gt;

&lt;p&gt;If you're paying OpenAI prices for production workloads where GPT-4-level quality is sufficient, you're burning money. The math is simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GPT-5&lt;/strong&gt;: $1.25/$10 per million tokens&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DeepSeek V4 Flash&lt;/strong&gt;: $0.14/$0.28 per million tokens&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Same quality tier for 10-36× less money&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a typical SaaS app doing 1M input + 500K output tokens per day:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5: $6.25/day = &lt;strong&gt;$2,281/year&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;DeepSeek V4 Flash: $0.28/day = &lt;strong&gt;$102/year&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's $2,179/year in savings, for a model that scores 4.1/5 vs 4.6/5 on quality. For most apps, users won't notice the difference. Your CFO will notice the $2,179.&lt;/p&gt;

&lt;p&gt;The code to switch is one line:&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="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;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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;# was: https://api.openai.com/v1
&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;nvai-your-key-here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;           &lt;span class="c1"&gt;# was: sk-your-openai-key
&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Test it yourself. The free credits are enough to run 50 prompts and verify every number in this article.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I'm 于侃 (Yu Kan), the developer behind NovAI (aiapi-pro.com). I wrote this article because I was frustrated by the lack of honest, reproducible API cost comparisons. Every number in this article was measured by running the test script above. The test prompts and full results are open-sourced at &lt;a href="https://github.com/vvvvking/ai-api-cost-comparison" rel="noopener noreferrer"&gt;github.com/vvvvking/ai-api-cost-comparison&lt;/a&gt;. If you find an error, open an issue.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Related:&lt;/strong&gt; I later normalised the same question to &lt;a href="https://dev.to/vvvvking/ai-video-pricing-is-unanswerable-so-i-normalised-it-to-cost-per-minute-4kli"&gt;cost per minute, retries included&lt;/a&gt; — the spread between the cheapest and most expensive model is 16x.&lt;/p&gt;

</description>
      <category>python</category>
      <category>tutorial</category>
      <category>ai</category>
      <category>api</category>
    </item>
    <item>
      <title>A genuinely free AI video + image generation API (no credit card) — with working Python code</title>
      <dc:creator>vvvvking</dc:creator>
      <pubDate>Thu, 30 Jul 2026 02:47:55 +0000</pubDate>
      <link>https://dev.to/vvvvking/a-genuinely-free-ai-video-image-generation-api-no-credit-card-with-working-python-code-24n5</link>
      <guid>https://dev.to/vvvvking/a-genuinely-free-ai-video-image-generation-api-no-credit-card-with-working-python-code-24n5</guid>
      <description>&lt;p&gt;&lt;em&gt;Disclosure: I operate &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;NovAI&lt;/a&gt;, the gateway described below. All prices are what our billing actually charges as of July 2026. This post was written with AI assistance and reviewed by me.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most "free" video generation APIs are trial credits: you get $5–10, burn through it in a dozen clips, then hit a paywall that wants a credit card. While building our gateway I found that Zhipu's flash-tier models (&lt;code&gt;cogvideox-flash&lt;/code&gt; for video, &lt;code&gt;cogview-3-flash&lt;/code&gt; for images) are genuinely free upstream — but the free tier is only exposed on the China-domestic platform. Zhipu's international site (z.ai) only sells the paid models.&lt;/p&gt;

&lt;p&gt;We route to the domestic endpoint, so both models are billed at &lt;strong&gt;$0&lt;/strong&gt; through our OpenAI-compatible API. Email signup, no card. Here's the working code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free image generation ($0/image)
&lt;/h2&gt;

&lt;p&gt;It's a drop-in for the OpenAI SDK — just change &lt;code&gt;base_url&lt;/code&gt;:&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;YOUR_NOVAI_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;              &lt;span class="c1"&gt;# free key: https://aiapi-pro.com
&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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;img&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;cogview-3-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;               &lt;span class="c1"&gt;# $0 / image
&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;isometric illustration of a tiny server room, pastel colors&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&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;img&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;h2&gt;
  
  
  Free video generation ($0/generation)
&lt;/h2&gt;

&lt;p&gt;Video is asynchronous: submit a job, poll until it's done.&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="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;time&lt;/span&gt;

&lt;span class="n"&gt;BASE&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://aiapi-pro.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;H&lt;/span&gt; &lt;span class="o"&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;Authorization&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;Bearer YOUR_NOVAI_KEY&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;Content-Type&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;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;job&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;post&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="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/video/generations&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&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;model&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;cogvideox-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;            &lt;span class="c1"&gt;# $0 / generation
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;prompt&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;a paper plane gliding over a neon city at night&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;r&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="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/video/generations/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;job&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&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;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;H&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&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;model&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;cogvideox-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;succeeded&lt;/span&gt;&lt;span class="sh"&gt;"&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;video:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&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;video_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;r&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="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Node.js and curl versions are in the &lt;a href="https://github.com/vvvvking/novai-examples" rel="noopener noreferrer"&gt;novai-examples repo&lt;/a&gt; (MIT).&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest part: what "flash tier" means
&lt;/h2&gt;

&lt;p&gt;These are &lt;strong&gt;not&lt;/strong&gt; frontier models. Being specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cogview-3-flash&lt;/code&gt;: solid for illustrations, thumbnails, placeholders. Noticeably below Seedream 5.0 / DALL·E-class output on photorealism and text rendering.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cogvideox-flash&lt;/code&gt;: short clips, lower fidelity than Seedance/Kling/Sora-class models. Good for prototyping a video pipeline, not for client deliverables.&lt;/li&gt;
&lt;li&gt;Free-tier requests are queued at lower priority, so generation can be slower at peak times.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Where they shine: &lt;strong&gt;CI pipelines, hackathons, prototyping an async video flow, or any product where image cost must be exactly $0.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When you outgrow the free tier
&lt;/h2&gt;

&lt;p&gt;Same API key and endpoint also serve paid Chinese models — for reference (our billing, July 2026):&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;Type&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;cogview-3-flash&lt;/td&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cogvideox-flash&lt;/td&gt;
&lt;td&gt;video&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hy-image-lite&lt;/td&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;$0.014/image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doubao-seedream-5.0&lt;/td&gt;
&lt;td&gt;image&lt;/td&gt;
&lt;td&gt;$0.027/image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;doubao-seedance-2.0&lt;/td&gt;
&lt;td&gt;video&lt;/td&gt;
&lt;td&gt;$0.329/s @1080p&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;hy-video-1.5&lt;/td&gt;
&lt;td&gt;video&lt;/td&gt;
&lt;td&gt;$0.21/generation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For comparison, fal.ai's published price for Seedance 2.0 at 1080p is roughly $0.68/s as of July 2026 (their pricing may change — check both before committing volume).&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Free key (no card): &lt;a href="https://aiapi-pro.com" rel="noopener noreferrer"&gt;https://aiapi-pro.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Examples repo: &lt;a href="https://github.com/vvvvking/novai-examples" rel="noopener noreferrer"&gt;https://github.com/vvvvking/novai-examples&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Deep dive: &lt;a href="https://aiapi-pro.com/blog/free-ai-video-generation-api-2026" rel="noopener noreferrer"&gt;free video API guide&lt;/a&gt; · &lt;a href="https://aiapi-pro.com/blog/ai-video-generation-api-pricing-2026" rel="noopener noreferrer"&gt;pricing comparison&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Questions about the routing setup or limits — happy to answer in the comments.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Related:&lt;/strong&gt; I later normalised the same question to &lt;a href="https://dev.to/vvvvking/ai-video-pricing-is-unanswerable-so-i-normalised-it-to-cost-per-minute-4kli"&gt;cost per minute, retries included&lt;/a&gt; — the spread between the cheapest and most expensive model is 16x.&lt;/p&gt;

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