@apteva/integrations 0.2.3 → 0.3.1

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.
Files changed (236) hide show
  1. package/package.json +1 -1
  2. package/src/apps/activecampaign.json +209 -0
  3. package/src/apps/activecollab.json +417 -0
  4. package/src/apps/airtable.json +235 -0
  5. package/src/apps/alpaca-trading.json +1554 -0
  6. package/src/apps/amadeus.json +225 -0
  7. package/src/apps/anthropic-api.json +96 -0
  8. package/src/apps/apify.json +203 -0
  9. package/src/apps/apollo.json +748 -0
  10. package/src/apps/apple-podcasts.json +116 -0
  11. package/src/apps/archive-api.json +104 -0
  12. package/src/apps/archive.json +151 -0
  13. package/src/apps/arduino-cloud.json +301 -0
  14. package/src/apps/arest.json +492 -0
  15. package/src/apps/asana.json +184 -0
  16. package/src/apps/ashby.json +176 -0
  17. package/src/apps/assemblyai.json +163 -0
  18. package/src/apps/attio.json +243 -0
  19. package/src/apps/aws-cloudfront.json +132 -0
  20. package/src/apps/aws-dynamodb.json +295 -0
  21. package/src/apps/aws-ec2.json +184 -0
  22. package/src/apps/aws-lambda.json +361 -0
  23. package/src/apps/aws-route53.json +110 -0
  24. package/src/apps/aws-s3.json +303 -0
  25. package/src/apps/aws-ses.json +556 -0
  26. package/src/apps/aws-sns.json +217 -0
  27. package/src/apps/aws-sqs.json +234 -0
  28. package/src/apps/axiom.json +123 -0
  29. package/src/apps/beehiiv.json +252 -0
  30. package/src/apps/binance-trading.json +555 -0
  31. package/src/apps/bitly.json +175 -0
  32. package/src/apps/bloobirds.json +246 -0
  33. package/src/apps/bluesky.json +201 -0
  34. package/src/apps/blynk.json +316 -0
  35. package/src/apps/booking-com.json +144 -0
  36. package/src/apps/box.json +289 -0
  37. package/src/apps/brevo.json +1423 -0
  38. package/src/apps/browse-ai.json +148 -0
  39. package/src/apps/bunny-cdn.json +330 -0
  40. package/src/apps/bunny-stream.json +387 -0
  41. package/src/apps/cal-com.json +240 -0
  42. package/src/apps/calendly.json +578 -0
  43. package/src/apps/calflow-calendar.json +706 -0
  44. package/src/apps/callrail.json +190 -0
  45. package/src/apps/canva.json +197 -0
  46. package/src/apps/cartesia.json +201 -0
  47. package/src/apps/castbase.json +753 -0
  48. package/src/apps/chargebee.json +226 -0
  49. package/src/apps/cleanster.json +359 -0
  50. package/src/apps/clicksend.json +278 -0
  51. package/src/apps/clickup.json +266 -0
  52. package/src/apps/clipkit.json +517 -0
  53. package/src/apps/close.json +359 -0
  54. package/src/apps/cloudflare.json +329 -0
  55. package/src/apps/cloudinary.json +164 -0
  56. package/src/apps/coda.json +288 -0
  57. package/src/apps/cohere.json +158 -0
  58. package/src/apps/coinbase.json +268 -0
  59. package/src/apps/composio.json +146 -0
  60. package/src/apps/confluence.json +270 -0
  61. package/src/apps/consensus.json +879 -0
  62. package/src/apps/contabo.json +733 -0
  63. package/src/apps/convertkit.json +211 -0
  64. package/src/apps/core-image.json +426 -0
  65. package/src/apps/core-video.json +1246 -0
  66. package/src/apps/craftcloud.json +298 -0
  67. package/src/apps/datadog.json +401 -0
  68. package/src/apps/dataforseo.json +1273 -0
  69. package/src/apps/deepseek.json +150 -0
  70. package/src/apps/dialpad.json +229 -0
  71. package/src/apps/discord.json +239 -0
  72. package/src/apps/dnsimple.json +405 -0
  73. package/src/apps/docusign.json +214 -0
  74. package/src/apps/docx.json +282 -0
  75. package/src/apps/dropbox.json +185 -0
  76. package/src/apps/duffel.json +231 -0
  77. package/src/apps/dux-soup.json +694 -0
  78. package/src/apps/dynadot.json +250 -0
  79. package/src/apps/elevenlabs.json +327 -0
  80. package/src/apps/eventbrite-events.json +598 -0
  81. package/src/apps/facebook-ads.json +1399 -0
  82. package/src/apps/facebook-api.json +282 -0
  83. package/src/apps/fal-ai.json +400 -0
  84. package/src/apps/fathom.json +86 -0
  85. package/src/apps/figma.json +162 -0
  86. package/src/apps/filestack.json +159 -0
  87. package/src/apps/firebase.json +271 -0
  88. package/src/apps/firecrawl.json +278 -0
  89. package/src/apps/folk.json +564 -0
  90. package/src/apps/forecast-app.json +377 -0
  91. package/src/apps/freshdesk.json +283 -0
  92. package/src/apps/gemini.json +528 -0
  93. package/src/apps/ghost.json +439 -0
  94. package/src/apps/gigs-marketplace.json +1442 -0
  95. package/src/apps/github.json +1479 -47
  96. package/src/apps/gitlab.json +448 -0
  97. package/src/apps/gmail.json +839 -28
  98. package/src/apps/gohighlevel.json +596 -0
  99. package/src/apps/google-ads.json +270 -0
  100. package/src/apps/google-calendar.json +996 -36
  101. package/src/apps/google-docs.json +278 -0
  102. package/src/apps/google-drive.json +360 -0
  103. package/src/apps/google-maps.json +473 -0
  104. package/src/apps/google-sheets.json +330 -0
  105. package/src/apps/gooten.json +411 -0
  106. package/src/apps/gravity-forms.json +385 -0
  107. package/src/apps/gusto.json +171 -0
  108. package/src/apps/hackernews.json +221 -0
  109. package/src/apps/harmonic.json +86 -0
  110. package/src/apps/helpscout.json +664 -0
  111. package/src/apps/hetzner.json +658 -0
  112. package/src/apps/heygen.json +184 -0
  113. package/src/apps/heyreach.json +388 -0
  114. package/src/apps/hospitable.json +340 -0
  115. package/src/apps/hostinger.json +374 -0
  116. package/src/apps/hubspot.json +682 -0
  117. package/src/apps/huggingface.json +97 -0
  118. package/src/apps/hunter.json +504 -0
  119. package/src/apps/ig-trading.json +849 -0
  120. package/src/apps/imaterialise.json +349 -0
  121. package/src/apps/instagram-api.json +538 -0
  122. package/src/apps/intercom.json +648 -0
  123. package/src/apps/jira.json +226 -0
  124. package/src/apps/klaviyo.json +199 -0
  125. package/src/apps/kling-ai.json +206 -0
  126. package/src/apps/kraken.json +870 -0
  127. package/src/apps/late.json +1056 -0
  128. package/src/apps/leadpages.json +243 -0
  129. package/src/apps/learning-platform.json +2244 -0
  130. package/src/apps/linear.json +184 -57
  131. package/src/apps/linkedin.json +179 -0
  132. package/src/apps/listen-notes.json +136 -0
  133. package/src/apps/lnk-bio.json +125 -0
  134. package/src/apps/loom.json +188 -0
  135. package/src/apps/luma.json +280 -0
  136. package/src/apps/mailchimp.json +238 -0
  137. package/src/apps/mailgun.json +310 -0
  138. package/src/apps/manychat.json +312 -0
  139. package/src/apps/marin-software.json +843 -0
  140. package/src/apps/media-downloader.json +157 -0
  141. package/src/apps/meetup-events.json +361 -0
  142. package/src/apps/meshy.json +248 -0
  143. package/src/apps/microsoft-teams.json +162 -0
  144. package/src/apps/monday.json +213 -0
  145. package/src/apps/mongodb-atlas.json +467 -0
  146. package/src/apps/namecheap.json +252 -0
  147. package/src/apps/nexar.json +289 -0
  148. package/src/apps/notion.json +530 -50
  149. package/src/apps/omnikit-analytics.json +374 -0
  150. package/src/apps/omnikit-api-gateway.json +660 -0
  151. package/src/apps/omnikit-billing.json +1781 -0
  152. package/src/apps/omnikit-cms.json +899 -0
  153. package/src/apps/omnikit-functions.json +329 -0
  154. package/src/apps/omnikit-intelligence.json +650 -0
  155. package/src/apps/omnikit-management.json +214 -0
  156. package/src/apps/omnikit-media.json +646 -0
  157. package/src/apps/omnikit-messaging.json +1826 -0
  158. package/src/apps/omnikit-redirects.json +209 -0
  159. package/src/apps/omnikit-webhooks.json +269 -0
  160. package/src/apps/omnikit-workflows.json +323 -0
  161. package/src/apps/openai-api.json +462 -0
  162. package/src/apps/openmeteo-weather.json +75 -0
  163. package/src/apps/optinmonster.json +244 -0
  164. package/src/apps/paidkit.json +1218 -0
  165. package/src/apps/paypal.json +254 -0
  166. package/src/apps/pdf.json +366 -0
  167. package/src/apps/pipedrive.json +255 -0
  168. package/src/apps/polymarket.json +653 -0
  169. package/src/apps/porkbun.json +417 -0
  170. package/src/apps/portfolio.json +501 -0
  171. package/src/apps/postmark.json +257 -0
  172. package/src/apps/printful.json +273 -0
  173. package/src/apps/printify.json +295 -0
  174. package/src/apps/producthunt.json +346 -0
  175. package/src/apps/pushover-notifications.json +113 -0
  176. package/src/apps/qonto.json +366 -0
  177. package/src/apps/quickbooks.json +234 -0
  178. package/src/apps/replicate.json +106 -0
  179. package/src/apps/rss.json +281 -0
  180. package/src/apps/salesflow.json +538 -0
  181. package/src/apps/salesforce-crm.json +216 -0
  182. package/src/apps/sap.json +256 -0
  183. package/src/apps/scaleway.json +911 -0
  184. package/src/apps/sculpteo.json +234 -0
  185. package/src/apps/sendgrid-email.json +233 -0
  186. package/src/apps/sendgrid.json +160 -35
  187. package/src/apps/shapeways.json +188 -0
  188. package/src/apps/shopify.json +1217 -0
  189. package/src/apps/skai.json +779 -0
  190. package/src/apps/slack.json +228 -38
  191. package/src/apps/slant3d.json +231 -0
  192. package/src/apps/slides.json +760 -0
  193. package/src/apps/smartly.json +504 -0
  194. package/src/apps/snov.json +467 -0
  195. package/src/apps/socialcast.json +553 -63
  196. package/src/apps/square.json +274 -0
  197. package/src/apps/storage-management.json +788 -0
  198. package/src/apps/storylane.json +180 -0
  199. package/src/apps/strapi.json +338 -0
  200. package/src/apps/stripe-payments.json +847 -0
  201. package/src/apps/stripe.json +472 -35
  202. package/src/apps/supabase.json +169 -0
  203. package/src/apps/supademo.json +115 -0
  204. package/src/apps/taskflow.json +714 -0
  205. package/src/apps/teamwork.json +457 -0
  206. package/src/apps/telegram.json +444 -0
  207. package/src/apps/thinger.json +458 -0
  208. package/src/apps/ticktick.json +169 -0
  209. package/src/apps/tiktok-api.json +406 -0
  210. package/src/apps/todoist.json +151 -0
  211. package/src/apps/together.json +123 -0
  212. package/src/apps/torrent.json +267 -0
  213. package/src/apps/trading.json +1012 -0
  214. package/src/apps/trading212.json +383 -0
  215. package/src/apps/trello.json +205 -0
  216. package/src/apps/tripo.json +157 -0
  217. package/src/apps/twilio.json +1008 -0
  218. package/src/apps/twitter-ads.json +875 -0
  219. package/src/apps/twitter-api.json +1151 -0
  220. package/src/apps/twitterapiio.json +548 -0
  221. package/src/apps/typeform.json +210 -0
  222. package/src/apps/vidforge.json +1020 -0
  223. package/src/apps/vonage.json +394 -0
  224. package/src/apps/vultr.json +225 -0
  225. package/src/apps/webflow.json +223 -0
  226. package/src/apps/wise.json +273 -0
  227. package/src/apps/wistia.json +283 -0
  228. package/src/apps/woocommerce.json +288 -0
  229. package/src/apps/wordpress.json +1675 -0
  230. package/src/apps/xero.json +257 -0
  231. package/src/apps/youtube-api.json +861 -0
  232. package/src/apps/zendesk.json +295 -0
  233. package/src/apps/zite.json +173 -0
  234. package/src/apps/zoho-crm.json +386 -0
  235. package/src/apps/zoo.json +193 -0
  236. package/src/apps/zoom.json +334 -0
@@ -0,0 +1,646 @@
1
+ {
2
+ "slug": "omnikit-media",
3
+ "name": "OmniKit Media",
4
+ "description": "Video and audio processing toolkit via OmniKit API - extract clips, screenshots, audio tracks, compress, resize, create GIFs, burn subtitles, create video grids, and probe media metadata.",
5
+ "logo": "https://cdn.omnikit.co/cdn/project-10/public/10_1770556267491_eecb0n/603050903_10162713420734412_6016628635295692734_n.jpg",
6
+ "categories": [
7
+ "video",
8
+ "audio",
9
+ "media",
10
+ "processing",
11
+ "ffmpeg",
12
+ "extract",
13
+ "compress",
14
+ "resize",
15
+ "thumbnails",
16
+ "clips",
17
+ "omnikit"
18
+ ],
19
+ "base_url": "https://api.omnikit.co",
20
+ "auth": {
21
+ "types": [
22
+ "bearer"
23
+ ],
24
+ "headers": {
25
+ "Authorization": "Bearer {{token}}"
26
+ },
27
+ "credential_fields": [
28
+ {
29
+ "name": "token",
30
+ "label": "API Key"
31
+ }
32
+ ]
33
+ },
34
+ "tools": [
35
+ {
36
+ "name": "extract_screenshot",
37
+ "description": "Extract screenshot(s) from a video file. You MUST provide one of: timestamps (array of seconds, e.g. [2.5, 10, 30]), interval (extract every N seconds), count (N evenly-spaced frames), or percentage:true (frames at 0/25/50/75/100%). Saves as image files in storage.",
38
+ "method": "POST",
39
+ "path": "/media/extract-screenshots",
40
+ "input_schema": {
41
+ "type": "object",
42
+ "properties": {
43
+ "file_id": {
44
+ "type": "integer",
45
+ "description": "ID of the video file to extract screenshots from"
46
+ },
47
+ "timestamps": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "number"
51
+ },
52
+ "description": "Array of timestamps in seconds to extract frames at (e.g., [2.5, 10, 30])"
53
+ },
54
+ "interval": {
55
+ "type": "number",
56
+ "description": "Extract a frame every N seconds (alternative to timestamps)"
57
+ },
58
+ "count": {
59
+ "type": "integer",
60
+ "description": "Extract N evenly-spaced frames across the video (alternative to timestamps)"
61
+ },
62
+ "percentage": {
63
+ "type": "boolean",
64
+ "default": false,
65
+ "description": "Extract frames at 0%, 25%, 50%, 75%, 100% of video duration"
66
+ },
67
+ "output_format": {
68
+ "type": "string",
69
+ "enum": [
70
+ "jpg",
71
+ "png",
72
+ "webp"
73
+ ],
74
+ "default": "jpg",
75
+ "description": "Image output format (jpg for best size/quality balance, png for lossless)"
76
+ },
77
+ "output_size": {
78
+ "type": "string",
79
+ "description": "Output size: 'original', 'thumbnail' (320px), 'preview' (640px), 'hd' (1280px), 'fullhd' (1920px), '4k' (3840px), or custom width like '800'"
80
+ },
81
+ "quality": {
82
+ "type": "integer",
83
+ "minimum": 1,
84
+ "maximum": 31,
85
+ "default": 1,
86
+ "description": "Image quality (1-31, 1 = highest quality)"
87
+ },
88
+ "create_grid": {
89
+ "type": "boolean",
90
+ "default": false,
91
+ "description": "Also create a thumbnail grid image combining all screenshots"
92
+ },
93
+ "folder_id": {
94
+ "type": "integer",
95
+ "description": "Optional folder ID to save screenshots to"
96
+ },
97
+ "access_level": {
98
+ "type": "string",
99
+ "enum": [
100
+ "public",
101
+ "private"
102
+ ],
103
+ "default": "public",
104
+ "description": "Access level for created files"
105
+ }
106
+ },
107
+ "required": [
108
+ "file_id"
109
+ ]
110
+ }
111
+ },
112
+ {
113
+ "name": "extract_clip",
114
+ "description": "Extract a segment/clip from a video or audio file at specific time range. Supports re-encoding or fast copy mode.",
115
+ "method": "POST",
116
+ "path": "/media/extract-clip",
117
+ "input_schema": {
118
+ "type": "object",
119
+ "properties": {
120
+ "file_id": {
121
+ "type": "integer",
122
+ "description": "ID of the video/audio file to extract clip from"
123
+ },
124
+ "start_time": {
125
+ "type": "number",
126
+ "default": 0,
127
+ "description": "Start time in seconds"
128
+ },
129
+ "end_time": {
130
+ "type": "number",
131
+ "description": "End time in seconds (required if duration not provided)"
132
+ },
133
+ "duration": {
134
+ "type": "number",
135
+ "description": "Duration in seconds (alternative to end_time)"
136
+ },
137
+ "output_format": {
138
+ "type": "string",
139
+ "description": "Output format: mp4, webm, mov, mp3, wav, etc. (defaults to source format)"
140
+ },
141
+ "include_audio": {
142
+ "type": "boolean",
143
+ "default": true,
144
+ "description": "Include audio track in output"
145
+ },
146
+ "include_video": {
147
+ "type": "boolean",
148
+ "default": true,
149
+ "description": "Include video track in output"
150
+ },
151
+ "bitrate": {
152
+ "type": "string",
153
+ "description": "Video bitrate (e.g., '2M', '5M')"
154
+ },
155
+ "audio_bitrate": {
156
+ "type": "string",
157
+ "description": "Audio bitrate (e.g., '128k', '256k')"
158
+ },
159
+ "fast_copy": {
160
+ "type": "boolean",
161
+ "default": true,
162
+ "description": "Use fast copy mode (no re-encoding, instant but keyframe-aligned cuts). Set to false for frame-precise cuts."
163
+ },
164
+ "access_level": {
165
+ "type": "string",
166
+ "enum": [
167
+ "public",
168
+ "private"
169
+ ],
170
+ "default": "public",
171
+ "description": "Access level for created file"
172
+ }
173
+ },
174
+ "required": [
175
+ "file_id"
176
+ ]
177
+ }
178
+ },
179
+ {
180
+ "name": "extract_audio",
181
+ "description": "Extract audio track from a video file and save as separate audio file (mp3, wav, aac, etc.)",
182
+ "method": "POST",
183
+ "path": "/media/extract-audio",
184
+ "input_schema": {
185
+ "type": "object",
186
+ "properties": {
187
+ "file_id": {
188
+ "type": "integer",
189
+ "description": "ID of the video file to extract audio from"
190
+ },
191
+ "output_format": {
192
+ "type": "string",
193
+ "enum": [
194
+ "mp3",
195
+ "wav",
196
+ "aac",
197
+ "flac",
198
+ "ogg"
199
+ ],
200
+ "default": "mp3",
201
+ "description": "Audio output format"
202
+ },
203
+ "bitrate": {
204
+ "type": "string",
205
+ "default": "192k",
206
+ "description": "Audio bitrate (e.g., '128k', '192k', '320k')"
207
+ },
208
+ "sample_rate": {
209
+ "type": "integer",
210
+ "description": "Sample rate in Hz (e.g., 44100, 48000)"
211
+ },
212
+ "channels": {
213
+ "type": "integer",
214
+ "enum": [
215
+ 1,
216
+ 2
217
+ ],
218
+ "description": "Number of audio channels (1=mono, 2=stereo)"
219
+ },
220
+ "access_level": {
221
+ "type": "string",
222
+ "enum": [
223
+ "public",
224
+ "private"
225
+ ],
226
+ "default": "public",
227
+ "description": "Access level for created file"
228
+ }
229
+ },
230
+ "required": [
231
+ "file_id"
232
+ ]
233
+ }
234
+ },
235
+ {
236
+ "name": "compress",
237
+ "description": "Compress video to reduce file size while maintaining quality. Supports various quality presets and target file sizes.",
238
+ "method": "POST",
239
+ "path": "/media/compress-video",
240
+ "input_schema": {
241
+ "type": "object",
242
+ "properties": {
243
+ "file_id": {
244
+ "type": "integer",
245
+ "description": "ID of the video file to compress"
246
+ },
247
+ "quality": {
248
+ "type": "string",
249
+ "enum": [
250
+ "low",
251
+ "medium",
252
+ "high",
253
+ "very_high"
254
+ ],
255
+ "default": "medium",
256
+ "description": "Quality preset - affects bitrate and file size"
257
+ },
258
+ "target_size_mb": {
259
+ "type": "number",
260
+ "description": "Target file size in MB (overrides quality preset)"
261
+ },
262
+ "max_bitrate": {
263
+ "type": "string",
264
+ "description": "Maximum video bitrate (e.g., '2M', '5M')"
265
+ },
266
+ "resolution": {
267
+ "type": "string",
268
+ "description": "Target resolution (e.g., '1280x720', '1920x1080') - downscales if larger"
269
+ },
270
+ "output_format": {
271
+ "type": "string",
272
+ "enum": [
273
+ "mp4",
274
+ "webm"
275
+ ],
276
+ "default": "mp4",
277
+ "description": "Output format"
278
+ },
279
+ "access_level": {
280
+ "type": "string",
281
+ "enum": [
282
+ "public",
283
+ "private"
284
+ ],
285
+ "default": "public",
286
+ "description": "Access level for created file"
287
+ }
288
+ },
289
+ "required": [
290
+ "file_id"
291
+ ]
292
+ }
293
+ },
294
+ {
295
+ "name": "resize",
296
+ "description": "Resize video to different resolution or aspect ratio. Supports scaling, cropping, padding, and social media presets.",
297
+ "method": "POST",
298
+ "path": "/media/resize-video",
299
+ "input_schema": {
300
+ "type": "object",
301
+ "properties": {
302
+ "file_id": {
303
+ "type": "integer",
304
+ "description": "ID of the video file to resize"
305
+ },
306
+ "width": {
307
+ "type": "integer",
308
+ "description": "Target width in pixels"
309
+ },
310
+ "height": {
311
+ "type": "integer",
312
+ "description": "Target height in pixels"
313
+ },
314
+ "resolution": {
315
+ "type": "string",
316
+ "description": "Target resolution as string (e.g., '1280x720', '1920x1080')"
317
+ },
318
+ "aspect_ratio": {
319
+ "type": "string",
320
+ "enum": [
321
+ "16:9",
322
+ "9:16",
323
+ "4:3",
324
+ "1:1"
325
+ ],
326
+ "description": "Target aspect ratio"
327
+ },
328
+ "preset": {
329
+ "type": "string",
330
+ "enum": [
331
+ "social-vertical",
332
+ "social-square",
333
+ "social-landscape",
334
+ "youtube-shorts",
335
+ "tiktok",
336
+ "instagram-reel",
337
+ "instagram-square",
338
+ "reel-left",
339
+ "reel-center",
340
+ "reel-right"
341
+ ],
342
+ "description": "Quick preset: social formats or reel extraction (reel-left/center/right extracts vertical slice from landscape)"
343
+ },
344
+ "crop_region": {
345
+ "type": "object",
346
+ "properties": {
347
+ "x": {
348
+ "type": [
349
+ "integer",
350
+ "string"
351
+ ],
352
+ "description": "X position (pixels or '50%')"
353
+ },
354
+ "y": {
355
+ "type": [
356
+ "integer",
357
+ "string"
358
+ ],
359
+ "description": "Y position (pixels or '0%')"
360
+ },
361
+ "width": {
362
+ "type": [
363
+ "integer",
364
+ "string"
365
+ ],
366
+ "description": "Crop width (pixels or '33%')"
367
+ },
368
+ "height": {
369
+ "type": [
370
+ "integer",
371
+ "string"
372
+ ],
373
+ "description": "Crop height (pixels or '100%')"
374
+ }
375
+ },
376
+ "description": "Precise crop region for custom extraction (overrides crop_mode)"
377
+ },
378
+ "crop_mode": {
379
+ "type": "string",
380
+ "enum": [
381
+ "center",
382
+ "top",
383
+ "bottom",
384
+ "left",
385
+ "right"
386
+ ],
387
+ "default": "center",
388
+ "description": "Where to crop from when using fit_mode=crop"
389
+ },
390
+ "fit_mode": {
391
+ "type": "string",
392
+ "enum": [
393
+ "cover",
394
+ "crop",
395
+ "contain",
396
+ "pad",
397
+ "fill",
398
+ "stretch"
399
+ ],
400
+ "default": "cover",
401
+ "description": "How to fit: cover/crop (cut edges), contain/pad (letterbox), fill/stretch (distort)"
402
+ },
403
+ "output_format": {
404
+ "type": "string",
405
+ "enum": [
406
+ "mp4",
407
+ "webm",
408
+ "mov"
409
+ ],
410
+ "default": "mp4",
411
+ "description": "Output format"
412
+ },
413
+ "access_level": {
414
+ "type": "string",
415
+ "enum": [
416
+ "public",
417
+ "private"
418
+ ],
419
+ "default": "public",
420
+ "description": "Access level for created file"
421
+ }
422
+ },
423
+ "required": [
424
+ "file_id"
425
+ ]
426
+ }
427
+ },
428
+ {
429
+ "name": "create_gif",
430
+ "description": "Convert a video segment to an animated GIF. Perfect for creating shareable clips and previews.",
431
+ "method": "POST",
432
+ "path": "/media/create-gif",
433
+ "input_schema": {
434
+ "type": "object",
435
+ "properties": {
436
+ "file_id": {
437
+ "type": "integer",
438
+ "description": "ID of the video file to convert"
439
+ },
440
+ "start_time": {
441
+ "type": "number",
442
+ "default": 0,
443
+ "description": "Start time in seconds"
444
+ },
445
+ "duration": {
446
+ "type": "number",
447
+ "default": 5,
448
+ "description": "Duration in seconds (max recommended: 10s)"
449
+ },
450
+ "width": {
451
+ "type": "integer",
452
+ "default": 480,
453
+ "description": "GIF width in pixels (height auto-calculated)"
454
+ },
455
+ "fps": {
456
+ "type": "integer",
457
+ "default": 10,
458
+ "description": "Frames per second (lower = smaller file)"
459
+ },
460
+ "loop": {
461
+ "type": "integer",
462
+ "default": 0,
463
+ "description": "Number of loops (0 = infinite)"
464
+ },
465
+ "optimize": {
466
+ "type": "boolean",
467
+ "default": true,
468
+ "description": "Apply palette optimization for smaller file size"
469
+ },
470
+ "access_level": {
471
+ "type": "string",
472
+ "enum": [
473
+ "public",
474
+ "private"
475
+ ],
476
+ "default": "public",
477
+ "description": "Access level for created file"
478
+ }
479
+ },
480
+ "required": [
481
+ "file_id"
482
+ ]
483
+ }
484
+ },
485
+ {
486
+ "name": "burn_subtitles",
487
+ "description": "Permanently burn subtitles/captions into video. Supports SRT, VTT, and ASS subtitle formats.",
488
+ "method": "POST",
489
+ "path": "/media/burn-subtitles",
490
+ "input_schema": {
491
+ "type": "object",
492
+ "properties": {
493
+ "file_id": {
494
+ "type": "integer",
495
+ "description": "ID of the video file"
496
+ },
497
+ "subtitle_file_id": {
498
+ "type": "integer",
499
+ "description": "ID of the subtitle file (SRT, VTT, ASS)"
500
+ },
501
+ "subtitle_text": {
502
+ "type": "string",
503
+ "description": "Raw subtitle content in SRT format (alternative to subtitle_file_id)"
504
+ },
505
+ "font_size": {
506
+ "type": "integer",
507
+ "default": 24,
508
+ "description": "Subtitle font size"
509
+ },
510
+ "font_color": {
511
+ "type": "string",
512
+ "default": "white",
513
+ "description": "Subtitle font color (name or hex)"
514
+ },
515
+ "outline_color": {
516
+ "type": "string",
517
+ "default": "black",
518
+ "description": "Subtitle outline color"
519
+ },
520
+ "position": {
521
+ "type": "string",
522
+ "enum": [
523
+ "bottom",
524
+ "top",
525
+ "center"
526
+ ],
527
+ "default": "bottom",
528
+ "description": "Subtitle position"
529
+ },
530
+ "output_format": {
531
+ "type": "string",
532
+ "enum": [
533
+ "mp4",
534
+ "webm",
535
+ "mov"
536
+ ],
537
+ "default": "mp4",
538
+ "description": "Output format"
539
+ },
540
+ "access_level": {
541
+ "type": "string",
542
+ "enum": [
543
+ "public",
544
+ "private"
545
+ ],
546
+ "default": "public",
547
+ "description": "Access level for created file"
548
+ }
549
+ },
550
+ "required": [
551
+ "file_id"
552
+ ]
553
+ }
554
+ },
555
+ {
556
+ "name": "create_grid",
557
+ "description": "Combine multiple videos into a single layout (side-by-side, grid, picture-in-picture)",
558
+ "method": "POST",
559
+ "path": "/media/create-video-grid",
560
+ "input_schema": {
561
+ "type": "object",
562
+ "properties": {
563
+ "file_ids": {
564
+ "type": "array",
565
+ "items": {
566
+ "type": "integer"
567
+ },
568
+ "description": "Array of video file IDs to combine"
569
+ },
570
+ "layout": {
571
+ "type": "string",
572
+ "enum": [
573
+ "2x1",
574
+ "1x2",
575
+ "2x2",
576
+ "3x3",
577
+ "pip"
578
+ ],
579
+ "default": "2x2",
580
+ "description": "Grid layout: 2x1 (side-by-side), 1x2 (stacked), 2x2 (quad), pip (picture-in-picture)"
581
+ },
582
+ "output_resolution": {
583
+ "type": "string",
584
+ "default": "1920x1080",
585
+ "description": "Output resolution (e.g., '1920x1080', '1280x720')"
586
+ },
587
+ "pip_position": {
588
+ "type": "string",
589
+ "enum": [
590
+ "top-left",
591
+ "top-right",
592
+ "bottom-left",
593
+ "bottom-right"
594
+ ],
595
+ "default": "bottom-right",
596
+ "description": "Position of PiP overlay (only for pip layout)"
597
+ },
598
+ "pip_size": {
599
+ "type": "number",
600
+ "default": 0.25,
601
+ "description": "Size of PiP as fraction of main video (0.1-0.5)"
602
+ },
603
+ "output_format": {
604
+ "type": "string",
605
+ "enum": [
606
+ "mp4",
607
+ "webm"
608
+ ],
609
+ "default": "mp4",
610
+ "description": "Output format"
611
+ },
612
+ "access_level": {
613
+ "type": "string",
614
+ "enum": [
615
+ "public",
616
+ "private"
617
+ ],
618
+ "default": "public",
619
+ "description": "Access level for created file"
620
+ }
621
+ },
622
+ "required": [
623
+ "file_ids"
624
+ ]
625
+ }
626
+ },
627
+ {
628
+ "name": "probe",
629
+ "description": "Extract detailed metadata from a media file (duration, resolution, codec, bitrate, frame rate, audio channels, etc.)",
630
+ "method": "POST",
631
+ "path": "/media/probe-media",
632
+ "input_schema": {
633
+ "type": "object",
634
+ "properties": {
635
+ "file_id": {
636
+ "type": "integer",
637
+ "description": "ID of the file to probe"
638
+ }
639
+ },
640
+ "required": [
641
+ "file_id"
642
+ ]
643
+ }
644
+ }
645
+ ]
646
+ }