工程實作 17 min read

Pollinations 免費生圖 API:不用註冊、不用 key、一行 URL 就出圖(附實測坑)

Pollinations 是我看過門檻最低的生圖 API —— 不用註冊、不用 API key、不用綁信用卡,把 prompt 塞進一個 URL、curl 一下就回一張圖。這篇把它「URL 即 API」的設計、實測坑(/models 清單跟文件對不上、傳不存在的 model 不報錯而是靜默 fallback)、seed 決定性、匿名與註冊 tier 的差別、2025 之後的 watermark 政策、Referrer / Bearer 兩種認證都寫清楚,附可直接抄的 curl 與 Node.js 範例。本文 2 張配圖全是用 Pollinations 匿名 API 當場生的。

本文目錄 · 14
TL;DR:Pollinations 是我看過門檻最低的生圖 API——不用註冊、不用 API key、不用綁信用卡,把 prompt 塞進一個 URL、curl 一下就回一張圖。這篇把它的設計(URL 即 API)、實測坑(/models 清單跟文件對不上、傳不存在的 model 不報錯)、seed 決定性、匿名與註冊 tier 的差別、watermark 政策、以及 Referrer / Bearer 兩種認證都寫清楚,附可直接抄的 curl 與 Node.js 範例。本文 2 張配圖全是用 Pollinations 匿名 API 當場生的。
一行 URL 就生出來的綠寶石

📌 目錄

  • 一行 URL 就生圖:Pollinations 在做什麼
  • 最小可用範例:一個 curl 就出圖
  • 參數一覽:model / 尺寸 / seed / nologo
  • 實測坑一:/models 清單跟文件對不上
  • 實測坑二:傳不存在的 model 不報錯
  • seed 決定性:同請求拿同一張圖
  • 匿名 tier 與註冊 tier 的差別
  • watermark 政策(2025 之後)
  • 兩種認證:Referrer 與 Bearer token
  • Node.js 整合範例
  • Pollinations 適合誰、不適合誰
  • 常見問題 FAQ
  • 延伸資源

🌸 一行 URL 就生圖:Pollinations 在做什麼

我前一篇寫怎麼用 Hugging Face FLUX.1-schnell 免費生 100 張卡牌插圖,那套要先申請 token、勾權限、算額度。整套跑下來很完整,但門檻不算低——對「只是想快速生幾張、不想碰任何帳號設定」的場景太重。

這篇講另一個極端:Pollinations。它的核心設計是 URL 即 API——生圖這件事被壓縮成「組一個網址、發一個 GET」。沒有 SDK、沒有 POST body、沒有 JSON、沒有 key。你甚至可以直接把那個網址貼進瀏覽器網址列,按 Enter 就看到圖。

上面那張綠寶石,就是我寫這篇時用 Pollinations 匿名 API 當場生的,指令只有一行(下一節給完整版)。

對「零門檻、馬上要一張圖」的需求,這是我看過最快的路徑。

⚡ 最小可用範例:一個 curl 就出圖

端點長這樣,prompt 直接放進路徑:

https://image.pollinations.ai/prompt/{你的描述}

實際跑一次,把描述 URL-encode 後接上去:

# 最小範例:免 key、免註冊,直接拿回一張 jpg
curl -s -o emerald.jpg \
  "https://image.pollinations.ai/prompt/a%20glowing%20emerald%20gemstone%2C%20oil%20painting%2C%20no%20text?width=512&height=512&seed=42&nologo=true"

# round-trip 驗它真的是圖(別只看檔案存在)
file -b --mime-type emerald.jpg # 預期:image/jpeg

就這樣。沒有第二步。width / height / seed / nologo 都是 query string,全部可選。

這裡有個寫任何生圖腳本都該養成的習慣:寫檔後驗 mime-type。生圖 API 失敗時常回 HTML 錯誤頁或 JSON,但 HTTP 200、檔案照寫,如果不驗,你會得到一堆「看起來存在、其實打不開」的壞檔。file --mime-type 一行就能擋掉。

參數作用預設 / 備註
model指定生圖模型/models 當下回應為準(見下節坑)
width / height輸出尺寸常用 512 / 1024;建議 8 的倍數
seed隨機種子固定後同請求可重現
nologo去掉角落浮水印true / false
enhance自動潤飾 prompt會改寫你的描述,要可控就別開
private不進公開 feed預設你的圖可能出現在公開瀏覽頁
private 這個值得特別留意:Pollinations 預設會把匿名生成的圖丟進公開 feed。如果你的 prompt 含任何不想被別人看到的內容,記得帶 private=true——但更穩的做法是「敏感內容根本別用免費公開服務生」。

🕳️ 實測坑一:/models 清單跟文件對不上

官方 API 文件(GitHub 上的 APIDOCS.md)列的可用 model 是 flux / turbo / stable-diffusion。但我這次(2026-06)實際查當下的清單:

curl -s "https://image.pollinations.ai/models"
# 回應:["sana"]

只有 sana 一個。文件寫的 fluxturbo 全都不在清單裡了。

教訓:免費公開服務的可用 model 會無預警變動,別照文件硬抄 model 名,腳本裡先打一次 /models 拿當下清單再用。 這跟商業 API 有版本承諾、有 deprecation 通知完全不同——免費服務沒有義務維持向後相容,model 說換就換。

🤫 實測坑二:傳不存在的 model 不報錯

接著踩到更隱蔽的一個。既然清單只剩 sana,那我傳已經不存在的 ?model=flux 會怎樣?照直覺應該報錯。實測:

# 同 prompt、同 seed,一張指定已不存在的 flux、一張指定清單裡的 sana
curl -s -o flux.jpg "https://image.pollinations.ai/prompt/${P}?seed=7&model=flux&nologo=true"
curl -s -o sana.jpg "https://image.pollinations.ai/prompt/${P}?seed=7&model=sana&nologo=true"

md5 flux.jpg sana.jpg
# 兩個 md5 完全相同

兩張 md5 一模一樣——代表 ?model=flux 沒有報錯,而是被靜默 fallback 到 sana,給你一張你以為是 flux、實際是 sana 的圖。

這比明確報錯更危險:你的腳本跑得好好的、檔案也都生出來,但你拿到的根本不是你指定的模型,還渾然不覺。對付這種靜默 fallback,只能在腳本啟動時拿 /models 比對你要的 model 在不在清單,不在就自己擋下來。

🎲 seed 決定性:同請求拿同一張圖

好消息是 Pollinations 對「相同請求」是決定性的。同 prompt、同 seed、同尺寸連抓兩次:

curl -s -o a.jpg "https://image.pollinations.ai/prompt/${P}?seed=123&nologo=true"
curl -s -o b.jpg "https://image.pollinations.ai/prompt/${P}?seed=123&nologo=true"
md5 a.jpg b.jpg   # 兩個 md5 完全相同

我實測兩張 md5 完全相同。這代表它對相同請求有快取/決定性出圖,而不是每次重跑。

這個性質很實用:批次補圖時可以安全地「跳過已存在檔、只補缺的」,不用怕補出來的跟原本那批風格飄掉。 下面這張藍寶石就是用固定 seed 生的,重跑幾次都長一樣:

固定 seed 生的藍寶石,可重現

要每次都不同,把 seed 拿掉或每次換值即可。

🪜 匿名 tier 與註冊 tier 的差別

完全免費可用,但「免費」分層,主要差在 rate limit:

Tier怎麼進rate limit適合
Anonymous什麼都不用做約 15 秒 1 張試玩、零星生圖
Seed免費註冊拿 token約 5 秒 1 張個人專案小批次
付費層升級方案更高併發商業/高量
匿名就能用,但約 15 秒才能生一張——批次幾十張時要在迴圈裡 sleep,不然會被限流擋掉。我這篇的 2 張配圖就是匿名生的,每張之間隔 16 秒。如果要常態小批次,花兩分鐘免費註冊拿個 token 升到 5 秒一張,體感差很多。

💧 watermark 政策(2025 之後)

要講清楚的一點:Pollinations 在 2025-03-31 起,免費層生成的圖可能帶浮水印。 nologo=true 在部分情境能去角落 logo,但政策會隨營運調整變動,不保證永遠乾淨。

對照前一篇的結論:如果你的需求是「整副風格統一、要拿來當正式素材」,我的組合策略還是 HF FLUX.1-schnell 出主力品質的那幾十張、Pollinations 補量——Pollinations 的定位是「零門檻補量 / fallback」,不是高品質主力。watermark 風險也是這個定位的一部分。

🔐 兩種認證:Referrer 與 Bearer token

匿名能用,但如果你註冊了、想用較高的 tier,有兩條認證路徑:

  • 網頁前端:靠 Referrer header 辨識來源網域,適合直接在瀏覽器端呼叫的場景。
  • 後端服務:到 auth.pollinations.ai 拿 Bearer token,放進 Authorization: Bearer header,適合伺服器端批次。
# 後端帶 token(升 tier 後)
curl -s -o out.jpg \
  -H "Authorization: Bearer ${POLLINATIONS_TOKEN}" \
  "https://image.pollinations.ai/prompt/${P}?width=1024&height=1024&seed=42"

token 是機密,跟任何 API key 一樣——別 commit、別貼公開地方,走環境變數。

🧩 Node.js 整合範例

把上面那些收進一支可重用的函式,含 /models 比對與 round-trip 驗證:

import { writeFile } from 'node:fs/promises';
import { execSync } from 'node:child_process';

const BASE = 'https://image.pollinations.ai';

async function listModels() {
const res = await fetch(${BASE}/models);
return res.json(); // 例如 ["sana"]
}

async function genImage(prompt, { model, width = 1024, height = 1024, seed, outPath }) {
// 坑二防護:指定的 model 不在當下清單就擋下來,別讓它靜默 fallback
if (model) {
const available = await listModels();
if (!available.includes(model)) {
throw new Error(model "${model}" 不在清單 ${JSON.stringify(available)},會被靜默替換);
}
}

const qs = new URLSearchParams({ width, height, nologo: 'true' });
if (model) qs.set('model', model);
if (seed !== undefined) qs.set('seed', String(seed));

const url = ${BASE}/prompt/${encodeURIComponent(prompt)}?${qs};
const res = await fetch(url);
if (!res.ok) throw new Error(HTTP ${res.status});

const buf = Buffer.from(await res.arrayBuffer());
await writeFile(outPath, buf);

// round-trip:驗它真的是圖,不是錯誤頁
const mime = execSync(file -b --mime-type "${outPath}").toString().trim();
if (!mime.startsWith('image/')) throw new Error(不是圖:${mime});

return outPath;
}

// 用法
await genImage('a glowing emerald gemstone, oil painting, no text', {
seed: 42,
outPath: 'emerald.jpg',
});

匿名批次時,每張之間記得 await new Promise(r => setTimeout(r, 16000)) 避開 rate limit。

⚖️ Pollinations 適合誰、不適合誰

你的情況建議
想零門檻、馬上拿一張圖✓ Pollinations,一行 URL 最快
demo / 原型 / 一次性插圖✓ 匿名就夠
個人專案常態小批次✓ 免費註冊升 5 秒一張
要整副風格統一的正式素材△ 用 HF FLUX 出主力,Pollinations 補量
商業專案、不能有 watermark 風險✗ 走有授權保證的付費 API
prompt 含敏感內容✗ 別用免費公開服務,或至少帶 private=true
一句話:Pollinations 是「最低門檻」的王者,但它的定位是補量與快速試做,不是高品質正式生產的主力。 把它跟前一篇的 HF 方案疊起來,你就有一條「主力 + 免費補量」的完整零成本生圖管線。

❓ 常見問題 FAQ

Q1:Pollinations 真的完全不用註冊、不用 key?
匿名 tier 確實如此——一個 GET 就回圖。註冊只是為了升 rate limit(從約 15 秒一張到 5 秒一張),不註冊也能用。

Q2:為什麼我傳 ?model=flux 沒報錯但圖不像 flux?
因為當下 /models 清單可能已經沒有 flux,服務會靜默 fallback 到清單裡的 model(我實測是 sana),不報錯。腳本啟動時打一次 /models 比對你要的 model 在不在,不在就自己擋。

Q3:同 prompt 同 seed 會拿到一模一樣的圖嗎?
會。我實測同 prompt、同 seed、同尺寸連抓兩次,md5 完全相同。所以批次補圖可以安全地「只補缺的、跳過已存在」。

Q4:免費生的圖可以商用嗎?有浮水印嗎?
Pollinations 程式碼走 MIT,但 2025-03-31 起免費層生成的圖可能帶浮水印,nologo=true 不保證永遠去得乾淨。要拿來正式商用,建議走有明確授權保證的方案,或至少先確認當下的服務條款。

Q5:Pollinations 和 HF FLUX.1-schnell 該選哪個?
看門檻與品質的取捨。要零門檻、快、補量 → Pollinations;要較高品質、整副統一 → HF FLUX.1-schnell 當主力。兩個疊起來(HF 主力 + Pollinations 補量)就是一條 $0 的完整管線。

🔗 延伸資源

author
陳彥彤

AI 工程師 · AI 顧問。Java 後端 8 年、AI 工程師 2 年。AI 內訓 · AI 導入顧問 · 前後端與雲端培訓。

support

覺得文章有用可以到 GitHub 給個 star,或是透過信箱聊聊 AI 內訓、AI 導入顧問或前後端 / 雲端培訓。

related

相關文章

[工程實作] · 19min
免費生 100 張遊戲卡牌插圖:FLUX.1-schnell + Pollinations 零成本實戰(沒綁信用卡)
一款 Splendor 網頁版要 90 張發展卡 + 10 張貴族卡插圖,預算 $0、手上沒綁信用卡,不能讓任何一步不小心被扣款。最後用 Hugging Face 的 FLUX.1-schnell 當主力(免費帳號每月 $0.10 額度)、額度用完自動 fallback 到完全免費的 Pollinations,再用 sharp 後製依寶石色染色,100 張圖一次跑完、整副風格一致、總花費 $0。這篇把 token 怎麼拿、額度怎麼算、bash 怎麼封裝、批次 seed 怎麼固定保證可重現、schnell 不吃顏色怎麼用後製補色,全寫清楚,附可直接抄的 bash / Node.js 程式碼。
[AI 工具] · 28min
Ollama Cloud 接到 hermes-agent 跟 LangChain:免費跑 Gemma4 31B 不用 GPU 完整指南
5 分鐘前在我 Mac 上 `ollama run gemma4:31b-cloud` 真的回我訊息——本機完全沒吃 GPU,模型在 Ollama 雲端跑、token 從終端機流出來。然後我發現 hermes-agent 的 .env 半年前就把 Ollama Cloud 預埋好了,去掉註解填 key 就能切過去。本文記錄整套 round-trip:Ollama Cloud Free 額度怎麼算、Gemma4 31b-cloud 實測、接到 hermes 三步驟、LangChain 兩種接法 (ChatOpenAI vs ChatOllama) 的差別、Embedding 走 cloud 還是本機、跟 Claude/OpenAI 怎麼選、5 個踩過的真實坑。
[AI 工具] · 18min
Memory 治理 EP2|為什麼 AI 記不住你寫的規則
你寫了一堆 CLAUDE.md 原則,Claude 還是每次重蹈覆轍 — 不是它記憶不好,是你寫的規則「沒辦法照著做」。大部分人寫的是「描述性原則」(該做什麼、不該做什麼),但 AI 真正會跟的是「程序性 SOP」(動手前必跑的步驟、自我糾正的條件)。本文拆兩種寫法的差異、給改寫公式 「描述狀態 → 觸發條件 + 強制動作 + 違規判斷」、附 CLAUDE.md before/after 實際 diff,以及解釋為什麼 LLM 對程序性指令反應特別好。