Generate Video GIF
January 20, 2026
Table of contents
Generate an animated GIF preview from a previously generated video. This is a synchronous operation that returns base64-encoded GIF data.
- No captcha required - this endpoint doesnβt require reCAPTCHA solving.
- GIF generation can take up to 90 seconds.
https://api.useapi.net/v1/google-flow/videos/gif
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"mediaGenerationId": "user:12345-email:6a6f...-video:CAMaJDMx..."
}
mediaGenerationIdis required. ThemediaGenerationIdfrom a previously generated video via POST /videos.
Responses
-
GIF generated successfully. Returns base64-encoded GIF data.
{ "encodedGif": "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7...base64 encoded GIF data..." } -
Invalid request (missing or invalid mediaGenerationId).
{ "error": "mediaGenerationId is required" }Invalid reference type:
{ "error": "mediaGenerationId type must be 'video', got 'image'" } -
Invalid API token.
{ "error": "Unauthorized" } -
Account not found or video not found.
{ "error": "Google Flow account john@gmail.com not found" }
Model
{
encodedGif: string // Base64-encoded GIF data (decode and save as .gif)
error?: string | { // Error: string (useapi.net) or object (Google API)
code: number
message: string
status: string
details?: Array<{
'@type': string
reason: string
}>
}
}
Examples
-
# First generate a video curl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{"prompt": "A serene mountain landscape at sunset"}' \ "https://api.useapi.net/v1/google-flow/videos" > generate.json # Extract mediaGenerationId from the response MEDIA_ID=$(jq -r '.operations[0].mediaGenerationId' generate.json) # Generate GIF preview curl -X POST \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d "{\"mediaGenerationId\": \"$MEDIA_ID\"}" \ "https://api.useapi.net/v1/google-flow/videos/gif" > gif.json # Decode base64 and save as GIF jq -r '.encodedGif' gif.json | base64 -d > video_preview.gif -
const token = 'YOUR_API_TOKEN'; // First generate a video const generateResponse = await fetch('https://api.useapi.net/v1/google-flow/videos', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ prompt: 'A serene mountain landscape at sunset' }) }); const generated = await generateResponse.json(); const mediaGenerationId = generated.operations[0].mediaGenerationId; // Generate GIF preview const gifResponse = await fetch('https://api.useapi.net/v1/google-flow/videos/gif', { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ mediaGenerationId }) }); const gifResult = await gifResponse.json(); // Decode base64 and save (Node.js) const buffer = Buffer.from(gifResult.encodedGif, 'base64'); require('fs').writeFileSync('video_preview.gif', buffer); console.log('GIF preview saved!'); // Or use in browser as data URL const dataUrl = `data:image/gif;base64,${gifResult.encodedGif}`; document.getElementById('preview').src = dataUrl; -
import requests import base64 token = 'YOUR_API_TOKEN' headers = { 'Authorization': f'Bearer {token}', 'Content-Type': 'application/json' } # First generate a video generate_response = requests.post( 'https://api.useapi.net/v1/google-flow/videos', headers=headers, json={'prompt': 'A serene mountain landscape at sunset'} ) generated = generate_response.json() media_generation_id = generated['operations'][0]['mediaGenerationId'] # Generate GIF preview gif_response = requests.post( 'https://api.useapi.net/v1/google-flow/videos/gif', headers=headers, json={'mediaGenerationId': media_generation_id} ) gif_result = gif_response.json() # Decode base64 and save gif_data = base64.b64decode(gif_result['encodedGif']) with open('video_preview.gif', 'wb') as f: f.write(gif_data) print('GIF preview saved!')