opencode-skills-collection 3.0.37 → 3.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +13 -1
- package/bundled-skills/2slides-ppt-generator/SKILL.md +786 -0
- package/bundled-skills/2slides-ppt-generator/references/api-reference.md +499 -0
- package/bundled-skills/2slides-ppt-generator/references/mcp-integration.md +282 -0
- package/bundled-skills/2slides-ppt-generator/references/pricing.md +195 -0
- package/bundled-skills/2slides-ppt-generator/scripts/api_constants.py +87 -0
- package/bundled-skills/2slides-ppt-generator/scripts/create_pdf_slides.py +159 -0
- package/bundled-skills/2slides-ppt-generator/scripts/download_slides_pages_voices.py +157 -0
- package/bundled-skills/2slides-ppt-generator/scripts/generate_narration.py +197 -0
- package/bundled-skills/2slides-ppt-generator/scripts/generate_slides.py +247 -0
- package/bundled-skills/2slides-ppt-generator/scripts/get_job_status.py +106 -0
- package/bundled-skills/2slides-ppt-generator/scripts/search_themes.py +137 -0
- package/bundled-skills/anti-sycophancy/README.md +86 -0
- package/bundled-skills/anti-sycophancy/SKILL.md +40 -0
- package/bundled-skills/antigravity-agent-manager/SKILL.md +112 -0
- package/bundled-skills/docs/integrations/jetski-cortex.md +3 -3
- package/bundled-skills/docs/integrations/jetski-gemini-loader/README.md +1 -1
- package/bundled-skills/docs/maintainers/repo-growth-seo.md +3 -3
- package/bundled-skills/docs/maintainers/skills-update-guide.md +1 -1
- package/bundled-skills/docs/sources/sources.md +1 -0
- package/bundled-skills/docs/users/bundles.md +1 -1
- package/bundled-skills/docs/users/claude-code-skills.md +1 -1
- package/bundled-skills/docs/users/gemini-cli-skills.md +1 -1
- package/bundled-skills/docs/users/getting-started.md +1 -1
- package/bundled-skills/docs/users/kiro-integration.md +1 -1
- package/bundled-skills/docs/users/usage.md +4 -4
- package/bundled-skills/docs/users/visual-guide.md +4 -4
- package/bundled-skills/event-staffing-compliance/SKILL.md +91 -0
- package/bundled-skills/event-staffing-ordering/SKILL.md +119 -0
- package/bundled-skills/examprep-ai/SKILL.md +446 -0
- package/bundled-skills/hasdata/SKILL.md +107 -0
- package/bundled-skills/hasdata/references/code-recipes.md +150 -0
- package/bundled-skills/hasdata/references/ecommerce.md +116 -0
- package/bundled-skills/hasdata/references/jobs.md +111 -0
- package/bundled-skills/hasdata/references/local-business.md +145 -0
- package/bundled-skills/hasdata/references/real-estate.md +84 -0
- package/bundled-skills/hasdata/references/scraper-jobs.md +252 -0
- package/bundled-skills/hasdata/references/search.md +154 -0
- package/bundled-skills/hasdata/references/travel.md +202 -0
- package/bundled-skills/hasdata/references/web-scraping.md +159 -0
- package/bundled-skills/hasdata/references/youtube.md +186 -0
- package/bundled-skills/hasdata-cli/SKILL.md +169 -0
- package/bundled-skills/hasdata-cli/references/all-commands.md +107 -0
- package/bundled-skills/hasdata-cli/references/ecommerce.md +106 -0
- package/bundled-skills/hasdata-cli/references/enrichment.md +227 -0
- package/bundled-skills/hasdata-cli/references/jobs.md +84 -0
- package/bundled-skills/hasdata-cli/references/local-business.md +123 -0
- package/bundled-skills/hasdata-cli/references/real-estate.md +126 -0
- package/bundled-skills/hasdata-cli/references/search.md +122 -0
- package/bundled-skills/hasdata-cli/references/travel.md +102 -0
- package/bundled-skills/hasdata-cli/references/web-scraping.md +181 -0
- package/bundled-skills/hasdata-cli/references/youtube.md +145 -0
- package/bundled-skills/linkedin-content-generator/SKILL.md +492 -0
- package/bundled-skills/linkedin-content-generator/scripts/generate_calendar.py +82 -0
- package/bundled-skills/linkedin-content-generator/scripts/generate_carousel.py +69 -0
- package/bundled-skills/linkedin-content-generator/scripts/generate_newsletter.py +64 -0
- package/bundled-skills/linkedin-content-generator/scripts/generate_post.py +77 -0
- package/bundled-skills/linkedin-content-generator/scripts/memory.md +49 -0
- package/bundled-skills/linkedin-content-generator/scripts/memory_manager.py +134 -0
- package/bundled-skills/linkedin-content-generator/scripts/utils.py +96 -0
- package/bundled-skills/permission-manager/README.md +22 -0
- package/bundled-skills/permission-manager/SKILL.md +54 -0
- package/bundled-skills/skill-suggester/README.md +14 -0
- package/bundled-skills/skill-suggester/SKILL.md +69 -0
- package/bundled-skills/smart-git-automation/README.md +31 -0
- package/bundled-skills/smart-git-automation/SKILL.md +96 -0
- package/bundled-skills/vercel-optimize/lib/cost-coverage.mjs +3 -1
- package/bundled-skills/vercel-optimize/lib/render-report.mjs +2 -2
- package/bundled-skills/vercel-optimize/lib/util.mjs +7 -0
- package/bundled-skills/vercel-optimize/lib/verify-claim.mjs +2 -7
- package/bundled-skills/vercel-optimize/lib/workspace-resolver.mjs +2 -1
- package/package.json +1 -1
- package/skills_index.json +268 -0
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
# 2slides API Reference
|
|
2
|
+
|
|
3
|
+
Complete API documentation for 2slides slide generation service.
|
|
4
|
+
|
|
5
|
+
## Base URL
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
https://2slides.com/api/v1
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Authentication
|
|
12
|
+
|
|
13
|
+
All API requests require authentication using a Bearer token in the Authorization header:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Authorization: Bearer YOUR_API_KEY
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Get your API key from: https://2slides.com/api
|
|
20
|
+
|
|
21
|
+
Store the API key in environment variable: `SLIDES_2SLIDES_API_KEY`
|
|
22
|
+
|
|
23
|
+
## Endpoints
|
|
24
|
+
|
|
25
|
+
### 1. Generate Slides
|
|
26
|
+
|
|
27
|
+
Generate slides from user input with optional theme selection.
|
|
28
|
+
|
|
29
|
+
**Endpoint:** `POST /slides/generate`
|
|
30
|
+
|
|
31
|
+
**Headers:**
|
|
32
|
+
```
|
|
33
|
+
Authorization: Bearer YOUR_API_KEY
|
|
34
|
+
Content-Type: application/json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**Request Body:**
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"userInput": "string (required) - Content to convert into slides",
|
|
41
|
+
"themeId": "string (required) - Theme ID from themes/search",
|
|
42
|
+
"responseLanguage": "string (optional, default: 'Auto') - Language code",
|
|
43
|
+
"mode": "string (optional, default: 'sync') - 'sync' or 'async'"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Supported Languages:**
|
|
48
|
+
Auto, English, Simplified Chinese (简体中文), Traditional Chinese (繁體中文), Spanish, Arabic, Portuguese, Indonesian, Japanese, Russian, Hindi, French, German, Vietnamese, Turkish, Polish, Italian, Korean
|
|
49
|
+
|
|
50
|
+
**Response (sync mode):**
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"slideUrl": "https://2slides.com/slides/...",
|
|
54
|
+
"pdfUrl": "https://2slides.com/slides/.../download",
|
|
55
|
+
"status": "completed"
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Response (async mode):**
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"jobId": "abc123...",
|
|
63
|
+
"status": "pending"
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Notes:**
|
|
68
|
+
- **Sync mode**: Waits for generation to complete and returns the result directly (may take 30-60 seconds)
|
|
69
|
+
- **Async mode**: Returns immediately with a jobId to poll for results using `/jobs/{jobId}`
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
### 2. Create Like This (Reference Image)
|
|
74
|
+
|
|
75
|
+
Generate slides matching a reference image style (Nano Banana Pro mode).
|
|
76
|
+
|
|
77
|
+
**Endpoint:** `POST /slides/create-like-this`
|
|
78
|
+
|
|
79
|
+
**Headers:**
|
|
80
|
+
```
|
|
81
|
+
Authorization: Bearer YOUR_API_KEY
|
|
82
|
+
Content-Type: application/json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
**Request Body:**
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"userInput": "string (required) - Content for slides",
|
|
89
|
+
"referenceImageUrl": "string (required) - URL or base64 of reference image",
|
|
90
|
+
"responseLanguage": "string (optional, default: 'Auto')",
|
|
91
|
+
"aspectRatio": "string (optional, default: '16:9') - width:height format",
|
|
92
|
+
"resolution": "string (optional, default: '2K') - '1K', '2K', or '4K'",
|
|
93
|
+
"page": "number (optional, default: 1) - 0 for auto-detection, max 100",
|
|
94
|
+
"contentDetail": "string (optional, default: 'concise') - 'concise' or 'standard'"
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Resolution Options:**
|
|
99
|
+
- **1K**: Standard quality
|
|
100
|
+
- **2K**: High quality (default)
|
|
101
|
+
- **4K**: Ultra high quality
|
|
102
|
+
|
|
103
|
+
**Content Detail Options:**
|
|
104
|
+
- **concise**: Brief, keyword-focused content
|
|
105
|
+
- **standard**: Comprehensive, detailed content
|
|
106
|
+
|
|
107
|
+
**Page Parameter:**
|
|
108
|
+
- Set to `0` to enable automatic slide count detection
|
|
109
|
+
- Set to specific number (1-100) for exact slide count
|
|
110
|
+
|
|
111
|
+
**Response:**
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"success": true,
|
|
115
|
+
"data": {
|
|
116
|
+
"jobId": "608f8997-5207-480c-9ff2-d2475cba6b9d",
|
|
117
|
+
"status": "success",
|
|
118
|
+
"message": "Successfully generated N slides",
|
|
119
|
+
"downloadUrl": "https://...pdf...",
|
|
120
|
+
"jobUrl": "https://2slides.com/workspace?jobId=...",
|
|
121
|
+
"createdAt": 1770108913384,
|
|
122
|
+
"updatedAt": 1770108934015,
|
|
123
|
+
"slidePageCount": 3,
|
|
124
|
+
"successCount": 3,
|
|
125
|
+
"failedCount": 0
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Response Fields:**
|
|
131
|
+
- `success`: Boolean indicating if request succeeded
|
|
132
|
+
- `data.jobId`: Unique job identifier
|
|
133
|
+
- `data.status`: Generation status ("success" or "failed")
|
|
134
|
+
- `data.message`: Human-readable status message
|
|
135
|
+
- `data.downloadUrl`: Direct PDF download URL (temporary, expires in 1 hour)
|
|
136
|
+
- `data.jobUrl`: View slides in 2slides workspace
|
|
137
|
+
- `data.slidePageCount`: Number of slides generated
|
|
138
|
+
- `data.successCount`: Number of successfully generated slides
|
|
139
|
+
- `data.failedCount`: Number of failed slides
|
|
140
|
+
|
|
141
|
+
**Notes:**
|
|
142
|
+
- This endpoint always runs synchronously
|
|
143
|
+
- Processing time: ~30 seconds per page
|
|
144
|
+
- Typical response time: 30-60 seconds for 1-2 pages
|
|
145
|
+
- Automatically generates PDF
|
|
146
|
+
- Matches the style and design of the reference image
|
|
147
|
+
- **Timeout recommendation**: Set timeout to `max(120, pages * 40)` seconds
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
### 3. Create PDF Slides
|
|
152
|
+
|
|
153
|
+
Generate custom-designed slides from text with optional design specifications.
|
|
154
|
+
|
|
155
|
+
**Endpoint:** `POST /slides/create-pdf-slides`
|
|
156
|
+
|
|
157
|
+
**Headers:**
|
|
158
|
+
```
|
|
159
|
+
Authorization: Bearer YOUR_API_KEY
|
|
160
|
+
Content-Type: application/json
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**Request Body:**
|
|
164
|
+
```json
|
|
165
|
+
{
|
|
166
|
+
"userInput": "string (required) - Content for slides",
|
|
167
|
+
"responseLanguage": "string (optional, default: 'Auto')",
|
|
168
|
+
"aspectRatio": "string (optional, default: '16:9') - width:height format",
|
|
169
|
+
"resolution": "string (optional, default: '2K') - '1K', '2K', or '4K'",
|
|
170
|
+
"page": "number (optional, default: 1) - 0 for auto-detection, max 100",
|
|
171
|
+
"contentDetail": "string (optional, default: 'concise') - 'concise' or 'standard'",
|
|
172
|
+
"designSpec": "string (optional) - Design specifications (e.g., 'modern minimalist')"
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Response:**
|
|
177
|
+
```json
|
|
178
|
+
{
|
|
179
|
+
"success": true,
|
|
180
|
+
"data": {
|
|
181
|
+
"jobId": "608f8997-5207-480c-9ff2-d2475cba6b9d",
|
|
182
|
+
"status": "success",
|
|
183
|
+
"message": "Successfully generated N slides",
|
|
184
|
+
"downloadUrl": "https://...pdf...",
|
|
185
|
+
"jobUrl": "https://2slides.com/workspace?jobId=...",
|
|
186
|
+
"slidePageCount": 3,
|
|
187
|
+
"successCount": 3,
|
|
188
|
+
"failedCount": 0
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
**Notes:**
|
|
194
|
+
- Similar to create-like-this but without reference image
|
|
195
|
+
- Uses AI to generate custom design based on content and design specs
|
|
196
|
+
- Same credit costs: 100 credits/page (1K/2K), 200 credits/page (4K)
|
|
197
|
+
- Processing time: ~30 seconds per page
|
|
198
|
+
- Always runs synchronously
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
### 4. Generate Narration
|
|
203
|
+
|
|
204
|
+
Add AI voice narration to slides in single or multi-speaker mode.
|
|
205
|
+
|
|
206
|
+
**Endpoint:** `POST /slides/generate-narration`
|
|
207
|
+
|
|
208
|
+
**Headers:**
|
|
209
|
+
```
|
|
210
|
+
Authorization: Bearer YOUR_API_KEY
|
|
211
|
+
Content-Type: application/json
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Request Body:**
|
|
215
|
+
```json
|
|
216
|
+
{
|
|
217
|
+
"jobId": "string (required) - Job ID from slide generation (UUID format)",
|
|
218
|
+
"language": "string (optional, default: 'Auto') - Language for narration",
|
|
219
|
+
"voice": "string (optional, default: 'Puck') - Voice name from available voices",
|
|
220
|
+
"multiSpeaker": "boolean (optional, default: false) - Enable multi-speaker mode"
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Available Voices (30 total):**
|
|
225
|
+
Puck, Aoede, Charon, Kore, Fenrir, Phoebe, Asteria, Luna, Stella, Theia, Helios, Atlas, Clio, Melpomene, Calliope, Erato, Euterpe, Polyhymnia, Terpsichore, Thalia, Urania, Zeus, Hera, Poseidon, Athena, Apollo, Artemis, Ares, Aphrodite, Hephaestus
|
|
226
|
+
|
|
227
|
+
**Response:**
|
|
228
|
+
```json
|
|
229
|
+
{
|
|
230
|
+
"success": true,
|
|
231
|
+
"jobId": "abc123...",
|
|
232
|
+
"status": "pending",
|
|
233
|
+
"message": "Narration generation started"
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Notes:**
|
|
238
|
+
- Job must be completed before adding narration
|
|
239
|
+
- Job ID must be UUID format for Nano Banana jobs
|
|
240
|
+
- Cost: 210 credits per page (10 for text, 200 for audio)
|
|
241
|
+
- Runs asynchronously - poll with /jobs/{jobId}
|
|
242
|
+
- Multi-speaker mode uses different voices for variety
|
|
243
|
+
- 19 languages supported plus auto-detection
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
### 5. Download Slides Pages and Voices
|
|
248
|
+
|
|
249
|
+
Export slides as PNG files and voice narrations as WAV files in a ZIP archive.
|
|
250
|
+
|
|
251
|
+
**Endpoint:** `POST /slides/download-slides-pages-voices`
|
|
252
|
+
|
|
253
|
+
**Headers:**
|
|
254
|
+
```
|
|
255
|
+
Authorization: Bearer YOUR_API_KEY
|
|
256
|
+
Content-Type: application/json
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
**Request Body:**
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"jobId": "string (required) - Job ID from slide generation"
|
|
263
|
+
}
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**Response:**
|
|
267
|
+
```json
|
|
268
|
+
{
|
|
269
|
+
"success": true,
|
|
270
|
+
"downloadUrl": "https://...zip...",
|
|
271
|
+
"message": "Download ready"
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Archive Contents:**
|
|
276
|
+
- Pages: PNG files for each slide
|
|
277
|
+
- Voices: WAV audio files (if narration generated)
|
|
278
|
+
- Transcripts: Text files with narration transcripts
|
|
279
|
+
|
|
280
|
+
**Notes:**
|
|
281
|
+
- **Cost: Completely FREE** (no credits used)
|
|
282
|
+
- Download URL valid for **1 hour only**
|
|
283
|
+
- High quality PNG export
|
|
284
|
+
- WAV format for audio
|
|
285
|
+
- Includes all slides and voice files
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### 6. Search Themes
|
|
290
|
+
|
|
291
|
+
Search for available presentation themes.
|
|
292
|
+
|
|
293
|
+
**Endpoint:** `GET /themes/search`
|
|
294
|
+
|
|
295
|
+
**Headers:**
|
|
296
|
+
```
|
|
297
|
+
Authorization: Bearer YOUR_API_KEY
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**Query Parameters:**
|
|
301
|
+
```
|
|
302
|
+
query: string (required) - Search keyword
|
|
303
|
+
limit: number (optional, default: 20, max: 100)
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**Response:**
|
|
307
|
+
```json
|
|
308
|
+
{
|
|
309
|
+
"themes": [
|
|
310
|
+
{
|
|
311
|
+
"id": "theme_id_123",
|
|
312
|
+
"name": "Professional Blue",
|
|
313
|
+
"description": "Clean professional theme with blue accents",
|
|
314
|
+
"previewUrl": "https://..."
|
|
315
|
+
}
|
|
316
|
+
],
|
|
317
|
+
"count": 1
|
|
318
|
+
}
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
---
|
|
322
|
+
|
|
323
|
+
### 7. Get Job Status
|
|
324
|
+
|
|
325
|
+
Retrieve the status and results of an async generation job.
|
|
326
|
+
|
|
327
|
+
**Endpoint:** `GET /jobs/{jobId}`
|
|
328
|
+
|
|
329
|
+
**Headers:**
|
|
330
|
+
```
|
|
331
|
+
Authorization: Bearer YOUR_API_KEY
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Path Parameters:**
|
|
335
|
+
```
|
|
336
|
+
jobId: string (required) - Job ID from async generation
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
**Response:**
|
|
340
|
+
```json
|
|
341
|
+
{
|
|
342
|
+
"jobId": "abc123",
|
|
343
|
+
"status": "completed|pending|failed",
|
|
344
|
+
"slideUrl": "https://2slides.com/slides/...",
|
|
345
|
+
"pdfUrl": "https://2slides.com/slides/.../download",
|
|
346
|
+
"narrationStatus": "completed|pending|not_started",
|
|
347
|
+
"error": "error message if failed"
|
|
348
|
+
}
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
**Status Values:**
|
|
352
|
+
- `pending`: Job is still processing
|
|
353
|
+
- `completed`: Slides are ready
|
|
354
|
+
- `failed`: Generation failed (see error field)
|
|
355
|
+
|
|
356
|
+
**Narration Status Values:**
|
|
357
|
+
- `not_started`: No narration requested
|
|
358
|
+
- `pending`: Narration is being generated
|
|
359
|
+
- `completed`: Narration is ready
|
|
360
|
+
|
|
361
|
+
**Polling Recommendation:**
|
|
362
|
+
Poll every 20-30 seconds to avoid server strain
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## Error Handling
|
|
367
|
+
|
|
368
|
+
All endpoints return standard HTTP status codes:
|
|
369
|
+
|
|
370
|
+
- `200 OK`: Request succeeded
|
|
371
|
+
- `400 Bad Request`: Invalid parameters
|
|
372
|
+
- `401 Unauthorized`: Missing or invalid API key
|
|
373
|
+
- `404 Not Found`: Resource not found
|
|
374
|
+
- `429 Too Many Requests`: Rate limit exceeded
|
|
375
|
+
- `500 Internal Server Error`: Server error
|
|
376
|
+
|
|
377
|
+
**Error Response Format:**
|
|
378
|
+
```json
|
|
379
|
+
{
|
|
380
|
+
"error": "Error message",
|
|
381
|
+
"code": "ERROR_CODE"
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**Common Error Codes:**
|
|
386
|
+
- `INSUFFICIENT_CREDITS`: Account has insufficient credits
|
|
387
|
+
- `INVALID_JOB_ID`: Job ID not found or invalid format
|
|
388
|
+
- `RATE_LIMIT_EXCEEDED`: Too many requests (see rate limits below)
|
|
389
|
+
- `JOB_NOT_COMPLETED`: Job must complete before adding narration
|
|
390
|
+
- `INVALID_UUID`: Job ID must be UUID format (for Nano Banana jobs)
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## Credit Costs
|
|
395
|
+
|
|
396
|
+
- **Fast PPT (generate endpoint)**: 10 credits per page
|
|
397
|
+
- **Nano Banana 1K/2K (create-like-this, create-pdf-slides)**: 100 credits per page
|
|
398
|
+
- **Nano Banana 4K**: 200 credits per page
|
|
399
|
+
- **Voice Narration**: 210 credits per page (10 for text, 200 for audio)
|
|
400
|
+
- **Download Export**: FREE (no credits)
|
|
401
|
+
|
|
402
|
+
## Purchasing Credits
|
|
403
|
+
|
|
404
|
+
2slides operates on a **pay-as-you-go credit system** with no subscriptions.
|
|
405
|
+
|
|
406
|
+
**Credit Packages** (Current promotion: up to 20% off):
|
|
407
|
+
|
|
408
|
+
| Credits | Price | Cost per 1,000 | Savings |
|
|
409
|
+
|---------|-------|---------------|---------|
|
|
410
|
+
| 2,000 | $5.00 | $2.50 | — |
|
|
411
|
+
| 4,000 | $9.50 | $2.38 | 5% |
|
|
412
|
+
| 10,000 | $22.50 | $2.25 | 10% |
|
|
413
|
+
| 20,000 | $42.50 | $2.13 | 15% |
|
|
414
|
+
| 40,000 | $80.00 | $2.00 | 20% |
|
|
415
|
+
|
|
416
|
+
**Key Benefits:**
|
|
417
|
+
- New users get **500 free credits** (~50 Fast PPT pages)
|
|
418
|
+
- **Credits never expire**
|
|
419
|
+
- No monthly subscriptions
|
|
420
|
+
- 3-day refund window
|
|
421
|
+
- Purchase at: https://2slides.com/pricing
|
|
422
|
+
|
|
423
|
+
**Example Costs:**
|
|
424
|
+
- 10-slide Fast PPT presentation: 100 credits ($0.25 with largest package)
|
|
425
|
+
- 10-slide Nano Banana 2K presentation: 1,000 credits ($2.00 with largest package)
|
|
426
|
+
- 10-slide presentation with narration: 2,100 credits ($4.20 with largest package)
|
|
427
|
+
|
|
428
|
+
## Rate Limits
|
|
429
|
+
|
|
430
|
+
Different endpoints have different rate limits:
|
|
431
|
+
|
|
432
|
+
- **Fast PPT (generate)**: 10 requests per minute
|
|
433
|
+
- **Nano Banana (create-like-this, create-pdf-slides)**: 6 requests per minute
|
|
434
|
+
|
|
435
|
+
**Best Practices:**
|
|
436
|
+
- Poll async jobs every 20-30 seconds to avoid server strain
|
|
437
|
+
- If rate limited (429 error), wait before retrying
|
|
438
|
+
- Check your plan's rate limits at https://2slides.com/api
|
|
439
|
+
|
|
440
|
+
## Download URL Expiration
|
|
441
|
+
|
|
442
|
+
All download URLs (PDF, ZIP archives) remain valid for **1 hour only**. Download files promptly after generation.
|
|
443
|
+
|
|
444
|
+
---
|
|
445
|
+
|
|
446
|
+
## Best Practices
|
|
447
|
+
|
|
448
|
+
### Content Formatting
|
|
449
|
+
|
|
450
|
+
**For best results, structure content clearly:**
|
|
451
|
+
|
|
452
|
+
```
|
|
453
|
+
Title: Introduction to AI
|
|
454
|
+
|
|
455
|
+
Section 1: Machine Learning
|
|
456
|
+
- Definition
|
|
457
|
+
- Key concepts
|
|
458
|
+
- Applications
|
|
459
|
+
|
|
460
|
+
Section 2: Deep Learning
|
|
461
|
+
- Neural networks
|
|
462
|
+
- Training process
|
|
463
|
+
- Use cases
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Choosing Sync vs Async Mode
|
|
467
|
+
|
|
468
|
+
- **Use sync** for quick generations (<5 slides)
|
|
469
|
+
- **Use async** for larger presentations (>5 slides)
|
|
470
|
+
- **Use async** when integrating into workflows that can poll
|
|
471
|
+
|
|
472
|
+
### Theme Selection
|
|
473
|
+
|
|
474
|
+
1. Search themes with relevant keywords
|
|
475
|
+
2. Preview themes if URLs available
|
|
476
|
+
3. Use theme ID in generation request
|
|
477
|
+
4. Leave theme blank for default styling
|
|
478
|
+
|
|
479
|
+
### Language Support
|
|
480
|
+
|
|
481
|
+
Specify `responseLanguage` to generate slides in different languages:
|
|
482
|
+
- `"Auto"` - Automatic language detection (default)
|
|
483
|
+
- `"English"` - English
|
|
484
|
+
- `"Simplified Chinese"` - 简体中文
|
|
485
|
+
- `"Traditional Chinese"` - 繁體中文
|
|
486
|
+
- `"Spanish"` - Español
|
|
487
|
+
- `"Arabic"` - العربية
|
|
488
|
+
- `"Portuguese"` - Português
|
|
489
|
+
- `"Indonesian"` - Bahasa Indonesia
|
|
490
|
+
- `"Japanese"` - 日本語
|
|
491
|
+
- `"Russian"` - Русский
|
|
492
|
+
- `"Hindi"` - हिन्दी
|
|
493
|
+
- `"French"` - Français
|
|
494
|
+
- `"German"` - Deutsch
|
|
495
|
+
- `"Vietnamese"` - Tiếng Việt
|
|
496
|
+
- `"Turkish"` - Türkçe
|
|
497
|
+
- `"Polish"` - Polski
|
|
498
|
+
- `"Italian"` - Italiano
|
|
499
|
+
- `"Korean"` - 한국어
|