This is a hands-on test: on 2026-10-26 I made 10 real requests from my own machine against Pollinations.AI’s free text API. Every number below comes from those calls, not from a rehash of the docs. The workflow I tested is a common one in content operations — batch-tagging tech news headlines.
Bottom line first:
- Personal automation with a few runs a day and zero budget (auto-tagging a blog, short RSS summaries): usable, the free anonymous tier is enough.
- Batch-processing hundreds of items in one pass: do not use the free tier. The measured limit is 1 request per 30 seconds per IP, so 300 items need at least 2.5 hours.
- The bottleneck of this setup is not money (it is free) — it is throughput and output stability.
What problem it solves
Pollinations.AI is a generative AI API with no signup and no API key. Its text endpoint is OpenAI-compatible (POST https://text.pollinations.ai/openai) and supports structured JSON output. It suits automatic classification, tagging or short summaries of a few dozen items a day at most; it does not suit a production pipeline that needs stable throughput and a fixed category vocabulary.
Three steps to get started
- Check the models: visit
GET https://text.pollinations.ai/models. Without an account, the anonymous tier returns a single model,openai-fast(officially listed as a GPT-OSS 20B reasoning model). - Send the request — this is the command actually used in the test:
curl -s https://text.pollinations.ai/openai
-H "Content-Type: application/json"
-d '{"model":"openai-fast","response_format":{"type":"json_object"},"max_tokens":300,"messages":[{"role":"system","content":"你是内容编辑。给标题打标签,只输出 JSON:{"category":"...","tags":["..."]}"},{"role":"user","content":"小米 17 Ultra 影像旗舰发布,起售价 6999 元"}]}'
- Read the result:
message.contentin the response is a JSON string — parse it a second time, then takecategoryandtags. A real successful response looked like this:
{"category":"科技","tags":["小米","小米 17 Ultra","影像旗舰","手机","新品发布","6999元起售价"]}
Measured results (7 batch calls)
Test data was seven real headlines from IT之家 posted that day, sent 16 seconds apart:
| Item | Measured |
|---|---|
| Success | 5 / 7 |
| Failures | 2 × HTTP 402 (free rate limit hit) |
| Average prompt tokens | 123 |
| Average completion tokens | 174 |
| Average time per call | ~9 s |
| One timed call (with JSON output) | 17.3 s |
What broke (all of it really happened)
- The real rate limit is stricter than the docs. The official docs say the anonymous tier allows 1 request per 15 seconds; at 16-second intervals I still got 402s. The exact error text was “Free limit reached: 1 reply every 30 seconds per IP” — treat 30 seconds as the truth, the docs lag behind actual behaviour.
- A wrong model name returns 404, and the error text tells you to check the
/modelslist — that one is reasonably friendly. - Firing requests back to back returns straight 402s, and one follow-up call timed out during the connection stage with no HTTP status at all. A batch script must schedule 30-second gaps and handle 402 retries.
- Categories do not converge. The five successful outputs produced four different categories: 安全与健康 / 铁路行业资讯 / Finance / Tech / 科技 — Chinese and English mixed. There is no controlled vocabulary, so before writing to a CMS you must pin the candidate categories in the system prompt or map them before storing.
- The reasoning model is slow, and completion tokens are often larger than prompt tokens (the thinking is billed as output). For a light job such as tagging, a reasoning model is overkill.
Cost
Pollinations’ anonymous tier costs 0. As a comparison, at the measured token counts (about 123 + 174 tokens per call), running 300 headlines through OpenRouter’s cheapest pay-as-you-go model mistralai/mistral-nemo ($0.029 per 1M input, $0.030 per 1M output, taken from the OpenRouter models API on 2026-10-26) comes to roughly $0.0026 — effectively free as well, but without a 30-second-per-IP limit and with an order of magnitude more throughput.
Pollinations’ official tiers (from APIDOCS.md): anonymous 15 s (basic models only), Seed 5 s after signup, Flower 3 s paid, Nectar unlimited for enterprise. Note that the anonymous figure in the docs (15 s) does not match the measured behaviour (30 s).
Downsides
- Quota is per IP with no SLA — a batch can be rejected at any time.
- The anonymous tier is locked to one model; switching models requires signup or payment.
- Output language is unstable, so pin a mapping before storing.
- Free-generated images may carry a watermark (stated in the docs; the image endpoint was not tested here).
Alternatives
- OpenRouter pay-as-you-go API: same workflow code, only the base URL and the key change; cost as computed above, negligible.
- Gemini API free tier: registered free quota with looser rate limits than Pollinations.
- A local ollama 8B model: no API cost, no rate limits — the cost is that the machine has to stay on.
Conclusion
For a few to a few dozen tags a day on personal projects, the Pollinations free tier works — schedule 30-second gaps and handle 402 retries. For a content site running batch pipelines, or when you need a fixed category vocabulary, skip the free tier: use a pay-as-you-go API (well under one cent per 1,000 items) and pin the vocabulary in the prompt.
Data sources: Pollinations’ official APIDOCS.md (GitHub), 10 real calls made from this machine on 2026-10-26, and OpenRouter models API pricing captured on 2026-10-26. Related on this site: AI daily digest (2026-10-23); to run the batch script on a server with a scheduler, see Install Docker on Ubuntu: three steps after install.