forked from pollinations/pollinations
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopenapi.yaml
More file actions
412 lines (394 loc) · 12 KB
/
openapi.yaml
File metadata and controls
412 lines (394 loc) · 12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
openapi: 3.0.3
info:
title: Pollinations Image API
description: |
The Pollinations Image API provides AI-powered image generation capabilities.
Generate images from text prompts using various AI models including Flux, Turbo, and GPT Image.
## Features
- Multiple AI models (Flux, Turbo, Kontext, GPT Image)
- Customizable image dimensions and quality
- Content safety and moderation
- Real-time generation progress tracking
- Caching for improved performance
- Authentication support for enhanced features
## Rate Limiting
- Standard users: 1 request per 10 seconds per IP
- Authenticated users: Higher limits based on tier
## Authentication
Authentication is optional but provides benefits like higher rate limits and priority processing.
Include your token in the Authorization header: `Bearer YOUR_TOKEN`
version: 1.0.0
contact:
name: Pollinations Support
url: https://pollinations.ai
license:
name: MIT
url: https://opensource.org/licenses/MIT
servers:
- url: https://image.pollinations.ai
description: Production server
paths:
/prompt/{prompt}:
get:
summary: Generate image from text prompt
description: |
Generate an image based on a text prompt. The prompt is URL-encoded in the path.
Various parameters can be provided as query parameters to customize the generation.
operationId: generateImage
parameters:
- name: prompt
in: path
required: true
description: The text prompt for image generation (URL-encoded)
schema:
type: string
example: "a beautiful sunset over mountains"
- name: model
in: query
description: The AI model to use for generation
schema:
type: string
enum: [flux, turbo, kontext, gptimage]
default: flux
- name: width
in: query
description: Image width in pixels
schema:
type: integer
minimum: 64
maximum: 1512
default: 1024
- name: height
in: query
description: Image height in pixels
schema:
type: integer
minimum: 64
maximum: 1512
default: 1024
- name: seed
in: query
description: Random seed for reproducible results
schema:
type: integer
minimum: 0
maximum: 1844674407370955
default: 42
- name: enhance
in: query
description: Whether to enhance the prompt automatically
schema:
type: boolean
default: true
- name: nologo
in: query
description: Whether to exclude the Pollinations logo
schema:
type: boolean
default: false
- name: nofeed
in: query
description: Whether to exclude from public feed (private generation)
schema:
type: boolean
default: false
- name: safe
in: query
description: Enable additional safety filtering
schema:
type: boolean
default: false
- name: quality
in: query
description: Image quality setting
schema:
type: string
enum: [low, medium, high, hd]
default: medium
- name: negative_prompt
in: query
description: Negative prompt to avoid certain elements
schema:
type: string
default: "worst quality, blurry"
- name: image
in: query
description: Reference image URL(s) for image-to-image generation (comma-separated for multiple)
schema:
type: string
example: "https://example.com/image.jpg"
- name: transparent
in: query
description: Generate image with transparent background
schema:
type: boolean
default: false
responses:
'200':
description: Successfully generated image
headers:
Content-Type:
schema:
type: string
example: image/jpeg
Cache-Control:
schema:
type: string
example: "public, max-age=31536000, immutable"
Content-Disposition:
schema:
type: string
example: 'inline; filename="generated-image.jpg"'
X-Auth-Status:
schema:
type: string
enum: [authenticated, unauthenticated]
description: Authentication status of the request
content:
image/jpeg:
schema:
type: string
format: binary
'400':
description: Bad request - invalid parameters
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'401':
description: Unauthorized - invalid or missing authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'403':
description: Forbidden - content policy violation
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'429':
description: Too many requests - rate limit exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimitErrorResponse'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/models:
get:
summary: Get available models
description: Retrieve a list of all available AI models for image generation
operationId: getModels
responses:
'200':
description: List of available models
headers:
Cache-Control:
schema:
type: string
example: "no-store, no-cache, must-revalidate, proxy-revalidate"
content:
application/json:
schema:
type: array
items:
type: string
example: ["flux", "turbo", "kontext", "gptimage"]
/register:
get:
summary: Get registered servers
description: Get information about currently registered generation servers
operationId: getRegisteredServers
responses:
'200':
description: List of registered servers
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ServerInfo'
post:
summary: Register a new server
description: Register a new generation server with the system
operationId: registerServer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ServerRegistration'
responses:
'200':
description: Server registered successfully
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
'400':
description: Invalid request body
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/feed:
get:
summary: Real-time generation feed
description: |
Server-Sent Events (SSE) endpoint for real-time updates on image generation progress.
This endpoint streams live updates about ongoing generations and completed images.
operationId: getFeed
responses:
'200':
description: SSE stream of generation updates
content:
text/event-stream:
schema:
type: string
description: Server-sent events stream with generation updates
/crossdomain.xml:
get:
summary: Cross-domain policy file
description: Adobe Flash cross-domain policy file for legacy compatibility
operationId: getCrossDomainPolicy
responses:
'200':
description: Cross-domain policy XML
content:
application/xml:
schema:
type: string
components:
schemas:
ErrorResponse:
type: object
required:
- error
- message
properties:
error:
type: string
description: Error type
example: "Bad Request"
message:
type: string
description: Human-readable error message
example: "Invalid parameter value"
details:
type: object
description: Additional error details
debug:
type: object
description: Debug information (when available)
timingInfo:
type: array
items:
$ref: '#/components/schemas/TimingInfo'
requestId:
type: string
description: Unique request identifier
requestParameters:
type: object
description: Parameters that were sent with the request
RateLimitErrorResponse:
allOf:
- $ref: '#/components/schemas/ErrorResponse'
- type: object
properties:
queueInfo:
type: object
description: Information about the current queue status
properties:
position:
type: integer
description: Position in queue
estimatedWaitTime:
type: integer
description: Estimated wait time in seconds
SuccessResponse:
type: object
required:
- success
- message
properties:
success:
type: boolean
example: true
message:
type: string
example: "Operation completed successfully"
ServerInfo:
type: object
properties:
url:
type: string
format: uri
description: Server URL
type:
type: string
description: Server type
enum: [flux, turbo, translate]
queueSize:
type: integer
description: Current queue size
totalRequests:
type: integer
description: Total requests processed
errors:
type: integer
description: Number of errors
errorRate:
type: string
description: Error rate percentage
requestsPerSecond:
type: string
description: Requests per second rate
lastHeartbeat:
type: integer
description: Last heartbeat timestamp
ServerRegistration:
type: object
required:
- url
properties:
url:
type: string
format: uri
description: Server URL to register
example: "https://server.example.com"
type:
type: string
description: Server type
enum: [flux, turbo, translate]
default: flux
TimingInfo:
type: object
properties:
step:
type: string
description: Processing step name
timestamp:
type: integer
description: Relative timestamp in milliseconds
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: |
Optional authentication token for enhanced features and higher rate limits.
Include your token in the Authorization header.
security:
- BearerAuth: []
- {}
tags:
- name: Image Generation
description: Core image generation functionality
- name: System
description: System information and server management
- name: Real-time
description: Real-time updates and streaming