Python wrapper for Pollinations AI - Free text and image generation APIs
Project description
Pollinations
A Python wrapper for Pollinations AI - Free text and image generation APIs.
Pollinations provides free, unlimited access to various AI models for text and image generation without requiring API keys.
Features
- 🎨 Image Generation: Create images from text descriptions
- 💬 Text Generation: Generate text using various language models
- 🌊 Streaming Support: Stream text responses in real-time (NEW!)
- 🔄 No API Key Required: Completely free to use (API key optional for advanced features)
- 🚀 Simple API: Easy-to-use interface with both native and OpenAI-compatible APIs
- 🎯 Multiple Models: Access to various AI models
- ⚡ Fast: Direct API access with minimal overhead
- 🔌 OpenAI Compatible: Drop-in replacement for OpenAI API (
client.chat.completions.create(),client.images.generate())
Installation
Install from PyPI:
pip install pollinations-client
Or install from source:
git clone https://github.com/gpt4free/pollinations.git
cd pollinations
pip install -e .
Quick Start
OpenAI-Compatible API (Recommended)
from pollinations import Pollinations
# Create a client (no API key required for free tier)
client = Pollinations()
# Or with API key for gen.pollinations.ai
# client = Pollinations(api_key="your-api-key")
# Chat completion (OpenAI-compatible)
response = client.chat.completions.create(
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explain quantum computing in simple terms"}
],
model="openai",
temperature=0.7
)
print(response.choices[0].message.content)
# Streaming chat completion (NEW!)
stream = client.chat.completions.create(
messages=[{"role": "user", "content": "Write a short story"}],
stream=True
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
# Image generation (OpenAI-compatible)
response = client.images.generate(
prompt="A serene mountain landscape at sunset",
size="1024x768",
model="flux"
)
print(response.data[0]["url"])
Native API
Text Generation
from pollinations import Pollinations
# Create a client
client = Pollinations()
# Generate text
response = client.generate_text("What is the meaning of life?")
print(response)
# Streaming text generation (NEW!)
stream = client.generate_text_stream("Tell me a story")
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
# Use a specific model
response = client.generate_text(
"Explain quantum computing",
model="openai"
)
print(response)
# With system message and temperature
response = client.generate_text(
"Write a haiku about coding",
system="You are a helpful poetry assistant",
temperature=0.8
)
print(response)
Image Generation
from pollinations import Pollinations
# Create a client
client = Pollinations()
# Generate image (returns URL)
image_url = client.generate_image("A beautiful sunset over mountains")
print(f"Image URL: {image_url}")
# Generate with specific model and dimensions
image_url = client.generate_image(
"A futuristic city at night",
model="flux",
width=1024,
height=768
)
# Download image to file
client.download_image(
"A cute cat wearing sunglasses",
"cat.png",
width=512,
height=512
)
API Reference
Pollinations Client
__init__(timeout=30, api_key=None)
Create a new Pollinations client.
Parameters:
timeout(int): Request timeout in seconds (default: 30)api_key(str, optional): API key for gen.pollinations.ai (enables authenticated endpoints)
OpenAI-Compatible API
The client provides OpenAI-compatible interfaces that can be used as drop-in replacements for OpenAI's API.
client.chat.completions.create(messages, model=None, temperature=None, max_tokens=None, stream=False, **kwargs)
Create a chat completion (OpenAI-compatible).
Parameters:
messages(list): List of message dicts with 'role' and 'content'model(str, optional): Model name to usetemperature(float, optional): Sampling temperature 0-1max_tokens(int, optional): Maximum tokens to generatestream(bool): Enable streaming mode (default: False)
Returns:
- ChatCompletion object with
choices[0].message.content(if stream=False) - Iterator of ChatCompletionChunk objects (if stream=True)
client.images.generate(prompt, model=None, size=None, n=1, **kwargs)
Generate images (OpenAI-compatible).
Parameters:
prompt(str): Text description of the imagemodel(str, optional): Model name to usesize(str, optional): Image size in format "WIDTHxHEIGHT" (e.g., "1024x768")n(int): Number of images (must be 1)response_format(str): Must be "url"
Returns: ImageResponse object with data[0]["url"]
Native API
generate_text(prompt, model=None, system=None, temperature=None, max_tokens=None, seed=None, jsonMode=False)
Generate text using a language model.
Parameters:
prompt(str): Input text promptmodel(str, optional): Model name to usesystem(str, optional): System message to set contexttemperature(float, optional): Sampling temperature 0-1 (higher = more creative)max_tokens(int, optional): Maximum tokens to generateseed(int, optional): Random seed for reproducibilityjsonMode(bool): If True, output will be formatted as JSON
Returns: Generated text (str)
generate_text_stream(prompt, model=None, system=None, temperature=None, max_tokens=None, seed=None, jsonMode=False)
Generate text using a language model with streaming support.
Parameters:
prompt(str): Input text promptmodel(str, optional): Model name to usesystem(str, optional): System message to set contexttemperature(float, optional): Sampling temperature 0-1 (higher = more creative)max_tokens(int, optional): Maximum tokens to generateseed(int, optional): Random seed for reproducibilityjsonMode(bool): If True, output will be formatted as JSON
Returns: Iterator of ChatCompletionChunk objects with delta content
Example:
stream = client.generate_text_stream("Tell me a story")
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
generate_image(prompt, model=None, width=None, height=None, seed=None, nologo=False, private=False, enhance=False, negative_prompt=None, quality=None, transparent=False, guidance_scale=None, nofeed=False, safe=False, image=None, duration=None, aspectRatio=None, audio=False)
Generate an image or video from a text prompt.
Parameters:
prompt(str): Text description of the image to generatemodel(str, optional): Model name to usewidth(int, optional): Image width in pixelsheight(int, optional): Image height in pixelsseed(int, optional): Random seed for reproducibilitynologo(bool): If True, removes Pollinations logo from imageprivate(bool): If True, image won't be published to feedenhance(bool): If True, automatically enhances the promptnegative_prompt(str, optional): What to avoid in the generated imagequality(str, optional): Image quality level - "low", "medium", "high", or "hd"transparent(bool): If True, generates with transparent backgroundguidance_scale(float, optional): How closely to follow the prompt (1-20)nofeed(bool): If True, don't add to public feedsafe(bool): If True, enable safety content filtersimage(str, optional): Reference image URL(s) for image-to-image. Comma/pipe separated for multipleduration(int, optional): Video duration in seconds (for video models)aspectRatio(str, optional): Video aspect ratio - "16:9" or "9:16" (for video models)audio(bool): If True, enable audio generation for video (veo only)
Returns: URL of the generated image (str)
download_image(prompt, output_path, **kwargs)
Generate and download an image to a local file.
Note: Video-specific parameters (duration, aspectRatio, audio) are not supported for downloads as they generate video files which should be accessed via URLs.
Parameters:
prompt(str): Text description of the image to generateoutput_path(str): Local path where the image will be saved**kwargs: Same image parameters asgenerate_image()(excluding video-specific parameters)
Returns: Path to the saved image file (str)
get_image_models(force_refresh=False)
Get list of available image generation models.
Returns: List of model names
get_text_models(force_refresh=False)
Get list of available text generation models.
Returns: List of model information dictionaries
Examples
See the examples directory for more usage examples:
- OpenAI-Compatible API - OpenAI-compatible interface examples
- Streaming Examples - NEW! Real-time streaming text generation
- Text Generation Examples
- Image Generation Examples
- List Models
API Key Support
The client supports optional API keys for gen.pollinations.ai:
# Without API key (free tier, uses image.pollinations.ai and text.pollinations.ai)
client = Pollinations()
# With API key (uses gen.pollinations.ai endpoints)
client = Pollinations(api_key="your-api-key-here")
When an API key is provided:
- Requests use authenticated endpoints (
gen.pollinations.ai) - API key is sent in the
Authorizationheader as a Bearer token - May provide access to additional features or higher rate limits
Error Handling
from pollinations import Pollinations, APIError, ModelNotFoundError
client = Pollinations()
try:
response = client.generate_text("Hello!")
except APIError as e:
print(f"API Error: {e}")
if e.status_code:
print(f"Status Code: {e.status_code}")
except Exception as e:
print(f"Unexpected error: {e}")
Requirements
- Python 3.7+
- requests >= 2.31.0
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Disclaimer
This is an unofficial wrapper for Pollinations AI. For official information about the service, visit pollinations.ai.
Related Projects
Support
If you encounter any issues or have questions, please open an issue on GitHub.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pollinations_client-0.1.1.tar.gz.
File metadata
- Download URL: pollinations_client-0.1.1.tar.gz
- Upload date:
- Size: 18.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
333214551eede1b7d61875a2bfe473d7bcbe6148332d488c55248bce6af88fa8
|
|
| MD5 |
8a17f9162efaaa593e768e0883dbb03c
|
|
| BLAKE2b-256 |
0626911d6a98e530152005e95f4bf0580565b056f75b6c76580c002ed4056087
|
Provenance
The following attestation bundles were made for pollinations_client-0.1.1.tar.gz:
Publisher:
publish-to-pypi.yml on gpt4free/pollinations
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pollinations_client-0.1.1.tar.gz -
Subject digest:
333214551eede1b7d61875a2bfe473d7bcbe6148332d488c55248bce6af88fa8 - Sigstore transparency entry: 747663945
- Sigstore integration time:
-
Permalink:
gpt4free/pollinations@2a1f2fed2d4dd56cff3ed71616f401ca4dd035b5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/gpt4free
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@2a1f2fed2d4dd56cff3ed71616f401ca4dd035b5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file pollinations_client-0.1.1-py3-none-any.whl.
File metadata
- Download URL: pollinations_client-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7e5c04e4b516e5372c142a013d73a11a1c98f1f79e86f492738eead21ee20bd
|
|
| MD5 |
14e818e47f7d270d0e6f5c0e471ebebd
|
|
| BLAKE2b-256 |
8c3db1f2c8084a1573b0140b51ae2377b39f7aa0c7a01a63e056bfe8777a4910
|
Provenance
The following attestation bundles were made for pollinations_client-0.1.1-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on gpt4free/pollinations
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pollinations_client-0.1.1-py3-none-any.whl -
Subject digest:
f7e5c04e4b516e5372c142a013d73a11a1c98f1f79e86f492738eead21ee20bd - Sigstore transparency entry: 747663946
- Sigstore integration time:
-
Permalink:
gpt4free/pollinations@2a1f2fed2d4dd56cff3ed71616f401ca4dd035b5 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/gpt4free
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@2a1f2fed2d4dd56cff3ed71616f401ca4dd035b5 -
Trigger Event:
release
-
Statement type: