Back to skills
SKILL.md
Pollinations Ai
ASecurityGenerate and save images using Pollinations.ai's free, open-source API. No signup required. Supports URL-based generation, custom parameters (width, height, model, seed), and automatic file saving. Perfect for quick prototypes, marketing assets, and creative workflows.
- 416 stars
- 0 votes
- 0 copies
- 8 views
- Added June 2, 2026
Works with
Security analysis
100/100Pro scans all 3 files and shows the line behind each finding
npx -y skills add aiskillstore/marketplace --skill pollinations-ai --agent claude-codeAre you the author of Pollinations Ai?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/aiskillstore-pollinations-ai)---
name: pollinations-ai
description: "Generate and save images using Pollinations.ai's free, open-source API. No signup required. Supports URL-based generation, custom parameters (width, height, model, seed), and automatic file saving. Perfect for quick prototypes, marketing assets, and creative workflows."
metadata:
tags: image-generation, pollinations, free, api, creative, ai-art, url-based
platforms: Claude, ChatGPT, Gemini, Codex
---
# Pollinations.ai Image Generation
Free, open-source AI image generation through simple URL parameters. No API key or signup required.
## When to use this skill
- **Quick prototyping**: Generate placeholder images instantly
- **Marketing assets**: Create hero images, banners, social media content
- **Creative exploration**: Test multiple styles and compositions rapidly
- **No-budget projects**: Free alternative to paid image generation services
- **Automated workflows**: Script-friendly URL-based API
---
## Instructions
### Step 1: Understand the API Structure
Pollinations.ai uses a simple URL-based API:
```
https://image.pollinations.ai/prompt/{YOUR_PROMPT}?{PARAMETERS}
```
**No authentication required** - just construct the URL and fetch the image.
**Available Parameters**:
- `width` / `height`: Resolution (default: 1024x1024)
- `model`: AI model (`flux`, `turbo`, `stable-diffusion`)
- `seed`: Number for reproducible results
- `nologo`: `true` to remove watermark (if supported)
- `enhance`: `true` for automatic prompt enhancement
### Step 2: Craft Your Prompt
Use descriptive prompts with specific details:
**Good prompt structure**:
```
[Subject], [Style], [Lighting], [Mood], [Composition], [Quality modifiers]
```
**Example**:
```
A father welcoming a beautiful holiday, warm golden hour lighting,
cozy interior background with festive decorations, 8k resolution,
highly detailed, cinematic depth of field
```
**Prompt styles**:
- **Photorealistic**: "photorealistic shot, 8k resolution, highly detailed, cinematic"
- **Illustrative**: "digital illustration, soft pastel colors, disney style animation"
- **Minimalist**: "minimalist vector art, flat design, simple geometric shapes"
### Step 3: Generate via URL (Browser Method)
Simply open the URL in a browser or use `curl`:
```bash
# Basic generation
curl "https://image.pollinations.ai/prompt/A_serene_mountain_landscape" -o mountain.jpg
# With parameters
curl "https://image.pollinations.ai/prompt/A_serene_mountain_landscape?width=1920&height=1080&model=flux&seed=42" -o mountain-hd.jpg
```
### Step 4: Generate and Save (Python Method)
For automation and file management:
```python
import requests
from urllib.parse import quote
def generate_image(prompt, output_file, width=1920, height=1080, model="flux", seed=None):
"""
Generate image using Pollinations.ai and save to file
Args:
prompt: Description of the image to generate
output_file: Path to save the image
width: Image width in pixels
height: Image height in pixels
model: AI model ('flux', 'turbo', 'stable-diffusion')
seed: Optional seed for reproducibility
"""
# Encode prompt for URL
encoded_prompt = quote(prompt)
url = f"https://image.pollinations.ai/prompt/{encoded_prompt}"
# Build parameters
params = {
"width": width,
"height": height,
"model": model,
"nologo": "true"
}
if seed:
params["seed"] = seed
# Generate and save
print(f"Generating: {prompt[:50]}...")
response = requests.get(url, params=params)
if response.status_code == 200:
with open(output_file, "wb") as f:
f.write(response.content)
print(f"✓ Saved to {output_file}")
return True
else:
print(f"✗ Error: {response.status_code}")
return False
# Example usage
generate_image(
prompt="A father welcoming a beautiful holiday, warm lighting, festive decorations",
output_file="holiday_father.jpg",
width=1920,
height=1080,
model="flux",
seed=12345
)
```
### Step 5: Batch Generation
Generate multiple variations:
```python
prompts = [
"photorealistic shot of a father at front door, warm lighting, festive decorations",
"digital illustration of a father in snow, magical winter wonderland, disney style",
"minimalist silhouette of father and child, holiday fireworks, flat design"
]
for i, prompt in enumerate(prompts):
generate_image(
prompt=prompt,
output_file=f"variant_{i+1}.jpg",
width=1920,
height=1080,
model="flux"
)
```
### Step 6: Document Your Generations
Save metadata for reproducibility:
```python
import json
from datetime import datetime
metadata = {
"prompt": prompt,
"model": "flux",
"width": 1920,
"height": 1080,
"seed": 12345,
"output_file": "holiday_father.jpg",
"timestamp": datetime.now().isoformat()
}
with open("generation_metadata.json", "w") as f:
json.dump(metadata, f, indent=2)
```
---
## Examples
### Example 1: Hero Image for Website
```python
generate_image(
prompt="serene mountain landscape at sunset, wide 16:9, minimal style, soft gradients in blue tones, clean lines, modern aesthetic",
output_file="hero-image.jpg",
width=1920,
height=1080,
model="flux"
)
```
**Expected output**: 16:9 landscape image, minimal style, blue color palette
### Example 2: Product Thumbnail
```python
generate_image(
prompt="futuristic dashboard UI, 1:1 square, clean interface, soft lighting, professional feel, dark theme, subtle glow effects",
output_file="product-thumb.jpg",
width=1024,
height=1024,
model="flux"
)
```
**Expected output**: Square thumbnail, dark theme, app store ready
### Example 3: Social Media Banner
```python
generate_image(
prompt="LinkedIn banner for SaaS startup, modern gradient background, abstract geometric shapes, colors from purple to blue, space for text on left side",
output_file="linkedin-banner.jpg",
width=1584,
height=396,
model="flux"
)
```
**Expected output**: LinkedIn-optimized dimensions (1584x396), text-safe zone
### Example 4: Batch Variations with Seeds
```python
# Generate 4 variations of the same prompt with different seeds
base_prompt = "A father welcoming a beautiful holiday, cinematic lighting"
for seed in [100, 200, 300, 400]:
generate_image(
prompt=base_prompt,
output_file=f"variation_seed_{seed}.jpg",
width=1920,
height=1080,
model="flux",
seed=seed
)
```
**Expected output**: 4 similar images with subtle variations
---
## Best practices
1. **Use specific prompts**: Include style, lighting, mood, and quality modifiers
2. **Specify dimensions early**: Prevents unintended cropping
3. **Use seeds for consistency**: Same seed + prompt = same image
4. **Model selection**:
- `flux`: Highest quality, slower
- `turbo`: Fast iterations
- `stable-diffusion`: Balanced
5. **Save metadata**: Track prompts, seeds, and parameters for reproducibility
6. **Batch similar requests**: Generate style sets with consistent parameters
7. **URL encode prompts**: Use `urllib.parse.quote()` for special characters
---
## Common pitfalls
- **Vague prompts**: Add specific details about style, lighting, and composition
- **Ignoring aspect ratios**: Check target platform requirements (Instagram 1:1, LinkedIn 1584x396, etc.)
- **Overly complex scenes**: Simplify for clarity and better results
- **Not saving metadata**: Difficult to reproduce or iterate on successful images
- **Forgetting URL encoding**: Special characters break URLs
---
## Troubleshooting
### Issue: Inconsistent outputs
**Cause**: No seed specified
**Solution**: Use a fixed seed for reproducible results
```python
generate_image(prompt="...", seed=12345, ...) # Same output every time
```
### Issue: Wrong aspect ratio
**Cause**: Incorrect width/height parameters
**Solution**: Use platform-specific dimensions
```python
# Instagram: 1:1
generate_image(prompt="...", width=1080, height=1080)
# LinkedIn banner: ~4:1
generate_image(prompt="...", width=1584, height=396)
# YouTube thumbnail: 16:9
generate_image(prompt="...", width=1280, height=720)
```
### Issue: Image doesn't match brand colors
**Cause**: No color specification in prompt
**Solution**: Include HEX codes or color names
```python
prompt = "landscape with brand colors deep blue #2563EB and purple #8B5CF6"
```
### Issue: Request fails (HTTP error)
**Cause**: Network issue or service downtime
**Solution**: Add retry logic
```python
import time
def generate_with_retry(prompt, output_file, max_retries=3):
for attempt in range(max_retries):
if generate_image(prompt, output_file):
return True
print(f"Retry {attempt + 1}/{max_retries}...")
time.sleep(2)
return False
```
---
## Output format
```markdown
## Image Generation Report
### Request
- **Prompt**: [full prompt text]
- **Model**: flux
- **Dimensions**: 1920x1080
- **Seed**: 12345
### Output Files
1. `hero-image-v1.jpg` - Primary variant
2. `hero-image-v2.jpg` - Alternative style
3. `hero-image-v3.jpg` - Different lighting
### Metadata
- Generated: 2026-02-13T14:30:00Z
- Iterations: 3
- Selected: hero-image-v1.jpg
### Usage Notes
- Best for: Website hero section
- Format: JPEG, 1920x1080
- Reproducible: Yes (seed: 12345)
```
---
## Multi-Agent Workflow
### Validation & Quality Check
- **Round 1 (Orchestrator - Claude)**:
- Validate prompt completeness
- Check dimension requirements
- Verify seed consistency
- **Round 2 (Executor - Codex)**:
- Execute generation script
- Save files with proper naming
- Generate metadata JSON
- **Round 3 (Analyst - Gemini)**:
- Review style consistency
- Check brand alignment
- Suggest prompt improvements
### Agent Roles
| Agent | Role | Tools |
|-------|------|-------|
| Claude | Prompt engineering, quality validation | Write, Read |
| Codex | Script execution, batch processing | Bash, Write |
| Gemini | Style analysis, brand consistency check | Read, ask-gemini |
### Example Multi-Agent Workflow
```bash
# 1. Claude: Generate prompts and script
# 2. Codex: Execute generation
bash -c "python generate_images.py"
# 3. Gemini: Review outputs
ask-gemini "@outputs/ Analyze brand consistency of generated images"
```
---
## Metadata
### Version
- **Current Version**: 1.0.0
- **Last Updated**: 2026-02-13
- **Compatible Platforms**: Claude, ChatGPT, Gemini, Codex
### Related Skills
- [image-generation](../image-generation/SKILL.md) - MCP-based image generation
- [design-system](../design-system/SKILL.md) - Design system implementation
- [presentation-builder](../presentation-builder/SKILL.md) - Presentation creation
### API Documentation
- Official Site: https://pollinations.ai
- API Endpoint: https://image.pollinations.ai/prompt/{prompt}
- Models: flux, turbo, stable-diffusion
### Tags
`#pollinations` `#image-generation` `#free` `#api` `#url-based` `#no-signup` `#creative`
Files in this skill
- SKILL.md
- SKILL.toon
- skill-report.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.