Generate Video GIF

January 20, 2026

Table of contents

  1. Request Headers
  2. Request Body
  3. Responses
  4. Model
  5. Examples
  6. Try It

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

Request Body

{
  "mediaGenerationId": "user:12345-email:6a6f...-video:CAMaJDMx..."
}
  • mediaGenerationId is required. The mediaGenerationId from a previously generated video via POST /videos.

Responses

  • 200 OK

    GIF generated successfully. Returns base64-encoded GIF data.

    {
      "encodedGif": "R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7...base64 encoded GIF data..."
    }
    
  • 400 Bad Request

    Invalid request (missing or invalid mediaGenerationId).

    {
      "error": "mediaGenerationId is required"
    }
    

    Invalid reference type:

    {
      "error": "mediaGenerationId type must be 'video', got 'image'"
    }
    
  • 401 Unauthorized

    Invalid API token.

    {
      "error": "Unauthorized"
    }
    
  • 404 Not Found

    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!')
    

Try It