LogoNanoPhoto.AI Docs
LogoNanoPhoto.AI Docs
Website HomepageDocumentation Homepage

Getting Started

Getting Started

User Guide

User Guide

API

API OverviewSora Watermark Removal APIVideo Reverse Prompt APISora 2 Prompt Generator APISora 2 Video Generation APISora 2 TVC Ad APINano Banana Pro Image Generation APINano Banana 2 Image Generation APIVeo 3.1 Video Generation API

OpenClaw Skills

OpenClaw SkillsSora 2 GenerateVeo 3.1Nano Banana ProNano Banana 2Video Prompt GeneratorVideo Reverse PromptSora Watermark RemoverComic Drama Generate

Use Cases

Sora 2 TVC Ad Creation

Billing

Billing & Invoice

FAQ

FAQ
X (Twitter)

Veo 3.1

Generate multi-shot long-form videos with the NanoPhoto.AI Veo 3.1 API via OpenClaw.

Generate videos through the NanoPhoto.AI Veo 3.1 API, supporting up to 21 shots (168 seconds).

Install: npx clawhub@latest install veo-3-1

ClawHub: clawhub.ai/u/nanophotohq

Prerequisites

  1. Obtain an API key at nanophoto.ai/settings/apikeys
  2. Configure NANOPHOTO_API_KEY in your OpenClaw skill settings
{
  "skills": {
    "entries": {
      "veo-3-1": {
        "enabled": true,
        "env": {
          "NANOPHOTO_API_KEY": "your_api_key_here"
        }
      }
    }
  }
}

Shot Rules

  • Max 21 shots per generation
  • Each shot is 8 seconds
  • Max total runtime: 168 seconds

Generation Types

TypeDescriptionImage URLs
TEXT_2_VIDEOText-only generationNone
FIRST_AND_LAST_FRAMES_2_VIDEOGenerate from first/last frames1-2 URLs
REFERENCE_2_VIDEOGenerate from reference images1-3 URLs

Parameters

ParameterTypeRequiredDescription
shotsarrayYesArray of shot objects
shots[].idstringYesUnique shot identifier
shots[].promptstringYesShot prompt
shots[].generationTypestringYesTEXT_2_VIDEO, FIRST_AND_LAST_FRAMES_2_VIDEO, or REFERENCE_2_VIDEO
shots[].aspectRatiostringYes16:9 or 9:16
shots[].imageUrlsstring[]ConditionalRequired for frame/reference types
resolutionstringNo720p (default), 1080p, 4k (single-shot only for 1080p/4k)

Usage

Single Text-to-Video Shot

python3 scripts/veo_3_1.py submit \
  --shots-json '[{"id":"shot-1","prompt":"A golden retriever running on a beach at sunset","generationType":"TEXT_2_VIDEO","aspectRatio":"16:9"}]' \
  --resolution 720p

Reference Image Shot with Auto-Poll

python3 scripts/veo_3_1.py submit \
  --shots-json '[{"id":"shot-1","prompt":"The character comes alive, walking through a forest","generationType":"REFERENCE_2_VIDEO","aspectRatio":"16:9","imageUrls":["https://example.com/character.webp"]}]' \
  --resolution 720p \
  --follow

Check Status

python3 scripts/veo_3_1.py status \
  --task-ids-json '[{"shotId":"shot-1","taskId":"task_abc123"}]' \
  --resolution 720p

Error Codes

CodeCauseAction
LOGIN_REQUIREDInvalid API keyVerify at settings/apikeys
INSUFFICIENT_CREDITSNot enough creditsTop up
SHOTS_REQUIREDMissing shots arrayBuild valid shots payload
INVALID_IMAGE_COUNTWrong image count for typeFix imageUrls
GENERATION_FAILEDServer errorRetry or simplify prompts

Table of Contents

Prerequisites
Shot Rules
Generation Types
Parameters
Usage
Single Text-to-Video Shot
Reference Image Shot with Auto-Poll
Check Status
Error Codes