3.4 KiB

Video Watermark API Usage Guide

Overview

The Video Watermark API allows you to add watermarks to video files asynchronously. The process involves two steps:

  1. Submit a watermark job and receive a token
  2. Use the token to check the job status and get the result

Base URL

https://animator-gg-api.ca2324.servep2p.com:8443

Step 1: Submit a Video Watermark Job

Request:

curl -X POST "https://animator-gg-api.ca2324.servep2p.com:8443/api/script" \
  -H "Content-Type: application/json" \
  -d '{
    "scriptPath": "/tmp/api_scripts/video_add_watermark.sh",
    "args": [
      "https://example.com/input.mp4",
      "https://example.com/watermark.png",
      "30",
      "30"
    ]
  }'

Parameters:

  • scriptPath: Must be video_add_watermark.sh
  • args: Array containing:
    • Input video URL (required)
    • Watermark image URL (required)
    • X position in pixels (required)
    • Y position in pixels (required)
    • Width for watermark resize (optional, 0 for no resize)
    • Height for watermark resize (optional, 0 for no resize)

Response:

{
  "token": "550e8400-e29b-41d4-a716-446655440000"
}

Step 2: Check Job Status and Get Result

Request:

curl -X GET "https://animator-gg-api.ca2324.servep2p.com:8443/api/script?token=550e8400-e29b-41d4-a716-446655440000"

Response:

{
  "status": "completed",
  "result": {
    "success": true,
    "stdout": "{\n  \"input_video_url\": \"https://example.com/input.mp4\",\n  \"watermark_png_url\": \"https://example.com/watermark.png\", \n  \"pos_x\": 30,\n  \"pos_y\": 30,\n  \"size_w\": 0,\n  \"size_h\": 0,\n  \"output_file_name\": \"/var/www/html/watermarked_videos/bcc55e77-f1b4-472c-8a1b-0f3c852bd73a.mp4\",\n  \"output_file_url\": \"https://example.com/watermarked_videos/bcc55e77-f1b4-472c-8a1b-0f3c852bd73a.mp4\"\n}",
    "stderr": "..."
  },
  "timestamp": 1743991194237
}

When the job is complete, the stdout field will contain a JSON string with the output video URL. You'll need to parse this string to get the actual URL.

Example: Complete Process

  1. Submit the job:
TOKEN=$(curl -s -X POST "https://animator-gg-api.ca2324.servep2p.com:8443/api/script" \
  -H "Content-Type: application/json" \
  -d '{
    "scriptPath": "/tmp/api_scripts/video_add_watermark.sh",
    "args": [
      "https://ca2324.ddns.net:8443/jerry/_seed847064922.mp4",
      "https://ca2324.ddns.net:8443/jerry/0a97d84a70fec3991cf05ee99ceb6469.png",
      "30",
      "30"
    ]
  }' | jq -r '.token')

echo "Job submitted with token: $TOKEN"
  1. Check status until complete:
while true; do
  RESULT=$(curl -s -X GET "https://animator-gg-api.ca2324.servep2p.com:8443/api/script?token=$TOKEN")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"

  if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
    break
  fi

  sleep 2
done

# Extract the watermarked video URL
if [ "$STATUS" = "completed" ]; then
  OUTPUT_JSON=$(echo $RESULT | jq -r '.result.stdout')
  OUTPUT_URL=$(echo $OUTPUT_JSON | jq -r '.output_file_url')
  echo "Watermarked video URL: $OUTPUT_URL"
fi

Status Codes

  • pending: Job is waiting in the queue
  • running: Job is currently processing
  • completed: Job finished successfully
  • failed: Job failed to complete

Notes

  • Results are stored for 24 hours after completion
  • Processing large videos may take several minutes
  • The API is rate-limited to 2 concurrent jobs