LogoNanoPhoto.AI Документация
LogoNanoPhoto.AI Документация
Главная страницаDocumentation 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 API

Use Cases

Sora 2 TVC Ad Creation

FAQ

FAQ
X (Twitter)

Sora 2 Video Generation API

API for generating videos using OpenAI Sora 2 models with text-to-video and image-to-video modes.

Try it online: https://nanophoto.ai/sora-2

Endpoints

MethodPathDescription
POST/api/sora-2/generateGenerate a video
POST/api/sora-2/check-statusCheck task status

Authentication

Authorization: Bearer YOUR_API_KEY

Credits

ModelDurationCredits
sora210s4
sora215s8
sora2-pro-standard (720p)10s60
sora2-pro-standard (720p)15s100
sora2-pro-high (1080p)10s120
sora2-pro-high (1080p)15s240

Generate Video

POST /api/sora-2/generate

Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Body Parameters

ParameterTypeRequiredDescription
promptstringYesVideo generation prompt
modestringYestextToVideo or imageToVideo
modelTierstringNosora2 (default), sora2-pro-standard, or sora2-pro-high
aspectRatiostringNoportrait (default) or landscape
videoDurationstringNo10 or 15 (seconds)
imageUrlsstring[]ConditionalPublic image URLs for imageToVideo mode

API calls only accept imageUrls (public URLs) for image-to-video mode. Base64 image upload is not supported via API.

Examples

Text to Video

curl -X POST "https://nanophoto.ai/api/sora-2/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "prompt": "A golden retriever running on a beach at sunset, cinematic lighting",
    "mode": "textToVideo",
    "modelTier": "sora2",
    "aspectRatio": "landscape",
    "videoDuration": "10"
  }'

Image to Video

curl -X POST "https://nanophoto.ai/api/sora-2/generate" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{
    "prompt": "The person in the painting comes alive, moving naturally and reciting poetry",
    "mode": "imageToVideo",
    "modelTier": "sora2",
    "aspectRatio": "landscape",
    "videoDuration": "10",
    "imageUrls": ["https://static.nanophoto.ai/demo/nano-banana-pro.webp"]
  }'

TypeScript

sora-2-api-example.ts
async function generateVideo() {
  // Step 1: Submit generation task
  const response = await fetch("https://nanophoto.ai/api/sora-2/generate", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Authorization: "Bearer YOUR_API_KEY",
    },
    body: JSON.stringify({
      prompt: "A golden retriever running on a beach at sunset",
      mode: "textToVideo",
      modelTier: "sora2",
      aspectRatio: "landscape",
      videoDuration: "10",
    }),
  });

  const data = await response.json();

  if (!data.success) {
    console.error("Generation failed:", data.error);
    return;
  }

  // Step 2: Poll for status
  const taskId = data.taskId;
  while (true) {
    await new Promise((resolve) => setTimeout(resolve, 5000)); // Wait 5s

    const statusRes = await fetch(
      "https://nanophoto.ai/api/sora-2/check-status",
      {
        method: "POST",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Bearer YOUR_API_KEY",
        },
        body: JSON.stringify({ taskId }),
      }
    );

    const status = await statusRes.json();

    if (status.status === "completed") {
      console.log("Video URL:", status.videoUrl);
      return;
    }

    if (status.status === "failed") {
      console.error("Generation failed:", status.error);
      return;
    }

    console.log("Still processing...", status.progress);
  }
}

generateVideo();

Response

Processing

{
  "success": true,
  "status": "processing",
  "taskId": "task_abc123",
  "message": "Video generation in progress"
}

When you receive status: "processing", poll the check-status endpoint every 5-10 seconds.

Error

{
  "error": "Insufficient credits",
  "errorCode": "INSUFFICIENT_CREDITS",
  "requiredCredits": 4
}

Check Task Status

POST /api/sora-2/check-status

Headers

HeaderValue
Content-Typeapplication/json
AuthorizationBearer YOUR_API_KEY

Body Parameters

ParameterTypeRequiredDescription
taskIdstringYesTask ID from generate response

Example

curl -X POST "https://nanophoto.ai/api/sora-2/check-status" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --data-raw '{"taskId": "task_abc123"}'

Response

Still Processing

{
  "success": true,
  "status": "processing",
  "progress": "generating",
  "message": "Video generation generating",
  "taskId": "task_abc123"
}

Completed

{
  "success": true,
  "status": "completed",
  "videoUrl": "https://video.nanophoto.ai/sora/...",
  "taskId": "task_abc123",
  "generationTime": 120,
  "creditsUsed": 4
}

Failed

{
  "success": false,
  "status": "failed",
  "error": "Video generation failed",
  "errorCode": "GENERATION_FAILED",
  "taskId": "task_abc123"
}

Polling Strategy

  • Poll /api/sora-2/check-status every 5-10 seconds
  • Typical generation time: 1-3 minutes for sora2, 3-8 minutes for pro models
  • Credits are automatically refunded if generation fails

Error Codes

errorCodeHTTP StatusDescription
LOGIN_REQUIRED401Authentication required
API_KEY_RATE_LIMIT_EXCEEDED429Rate limit exceeded (100 req/hour)
INSUFFICIENT_CREDITS402Not enough credits
PROMPT_REQUIRED400Missing prompt
IMAGE_REQUIRED400Image required for imageToVideo mode
IMAGE_URLS_REQUIRED400API calls require imageUrls (no base64)
GENERATION_FAILED500Video generation failed
TASK_ID_REQUIRED400Missing task ID
TASK_NOT_FOUND404Task not found or not owned by user
INTERNAL_ERROR500Internal server error

Sora 2 Prompt Generator API

API for generating professional Sora 2 video prompts from topics, with support for multiple video techniques and languages.

Sora 2 TVC Ad API

API for generating TVC (TV Commercial) advertisement videos using AI-powered storyboard generation and Sora 2 video synthesis.

Содержание

Endpoints
Authentication
Credits
Generate Video
Headers
Body Parameters
Examples
Text to Video
Image to Video
TypeScript
Response
Processing
Error
Check Task Status
Headers
Body Parameters
Example
Response
Still Processing
Completed
Failed
Polling Strategy
Error Codes