Python client library for Pollinations.AI API
Project description
PollinationsAPI Python Client
A developer-friendly Python SDK for interacting with the Pollinations API, supporting multimodal AI features: image generation, text generation (including OpenAI-compatible chat), vision (image analysis), speech-to-text, and text-to-speech.
Features
- Image Generation: Create images from text prompts with multiple model options.
- Text Generation: Generate or complete text, including OpenAI-compatible chat and streaming.
- Vision (Image Analysis): Describe or answer questions about images (from URL or local files).
- Speech-to-Text: Transcribe audio files to text.
- Text-to-Speech: Synthesize speech from text, save as MP3.
- Model Listing: List available image, text, and voice models.
- Real-time Feeds: Subscribe to live image/text generation events via SSE.
Installation
Install via pip:
pip install pollinations-api
pip install requests
# For SSE real-time feeds (not needed for streaming chat/text completions):
pip install sseclient-py
Quick Start
from pollinations_api import PollinationsAPI, PollinationsAPIError
api = PollinationsAPI(referrer="my-app") # Optionally add a backend Bearer token
# Image Generation
try:
img_bytes = api.generate_image("A beautiful sunset over ocean", width=512, height=512, nologo=True, save_to="sunset.jpg")
print("Image saved to sunset.jpg")
except PollinationsAPIError as e:
print(e)
# Text Generation
try:
text = api.generate_text("Explain quantum computing simply", model="openai")
print("Text generation result:", text)
except PollinationsAPIError as e:
print(e)
# OpenAI-Compatible Chat (non-streaming)
try:
response = api.openai_chat_completion(
model="openai",
messages=[
{"role": "system", "content": "You are an assistant."},
{"role": "user", "content": "Who won the world cup in 2018?"}
]
)
print("Chat completion:", response['choices'][0]['message']['content'])
except PollinationsAPIError as e:
print(e)
Usage Examples
1. Image Generation
api.generate_image(
prompt="A cyberpunk cityscape at night",
width=768,
height=512,
nologo=True,
model="flux",
save_to="cityscape.png"
)
2. Text Generation
-
Simple completion:
result = api.generate_text("Write a haiku about AI") print(result)
-
Streaming responses:
for chunk in api.generate_text("Tell a story about a robot", stream=True): print(chunk, end="", flush=True)
3. OpenAI-Compatible Chat Completion
Non-streaming:
response = api.openai_chat_completion(
model="openai",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Summarize the plot of Inception."}
]
)
print(response['choices'][0]['message']['content'])
Streaming:
for chunk in api.openai_chat_completion(
model="openai",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Summarize the plot of Inception."}
],
stream=True
):
print(chunk, end="", flush=True)
No sseclient-py is needed for OpenAI-style streaming!
4. Vision (Image Analysis)
-
Analyze an image URL:
result = api.analyze_image_url( image_url="https://example.com/cat.jpg", question="What is in this image?" ) print(result)
-
Analyze a local image:
result = api.analyze_local_image("local_image.png") print(result)
5. Speech-to-Text
transcript = api.transcribe_audio("sample.wav")
print("Transcription:", transcript)
6. Text-to-Speech
-
GET (short texts):
api.tts_get("Hello world!", voice="nova", save_to="hello.mp3")
-
POST (longer texts):
api.tts_post("This is a long text to synthesize.", voice="alloy", save_to="long.mp3")
7. List Models
print("Image models:", api.list_image_models())
print("Text models:", api.list_text_models())
8. Real-time Feeds (SSE)
-
Image feed: (Requires
sseclient-py)for event in api.connect_image_feed(): print(event)
-
Text feed: (Requires
sseclient-py)for event in api.connect_text_feed(): print(event)
Authentication
- Backend Token: Pass a Bearer token to the constructor.
- Frontend Referrer: Pass a referrer string to the constructor.
Error Handling
All API errors are raised as PollinationsAPIError. Use try-except blocks to handle errors gracefully.
Requirements
- Python 3.7+
requestssseclient-py(only for real-time GET feeds, not for chat streaming)
License
MIT
Notes
- For best results, see official documentation: https://github.com/pollinations/pollinations/blob/master/APIDOCS.md
- Issues and contributions are welcome!
Special Notes:
- For OpenAI-style streaming (chat completions), you do not need
sseclient-py, as the SDK parses streamed events directly. - For real-time image/text feeds (
connect_image_feed,connect_text_feed),sseclient-pyis required.
Project details
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_api-0.1.5.tar.gz.
File metadata
- Download URL: pollinations_api-0.1.5.tar.gz
- Upload date:
- Size: 11.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0b07ad1ddf91d7d0018ce237502d5a20db6d2df6181ea6a155b24b236a5576f
|
|
| MD5 |
9073bc9b74ebe53ebb7cbf6611668abb
|
|
| BLAKE2b-256 |
2947ce2253298fafa5867f3e4a2d10193d5163ea1ce35acd853ea1e5d0991f91
|
File details
Details for the file pollinations_api-0.1.5-py3-none-any.whl.
File metadata
- Download URL: pollinations_api-0.1.5-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bcd8a0e55cbad06108bc69613cea97a94314db3972abea25ea971df91b57f88
|
|
| MD5 |
d15136bbdde66ad8e2112f9df04a44e9
|
|
| BLAKE2b-256 |
aafbfb4ed59e3e251f85e89072531b364f4f923a267817951723528474ad77a4
|