{
  "openapi": "3.1.0",
  "info": {
    "title": "AutoFeed Video API",
    "version": "1.0.0",
    "summary": "Generate short-form videos from your own backend.",
    "description": "Generate short-form videos from your own backend. A create is accepted and charged in about 300 ms and answered 202; the render runs in the background. Collect the result from the completion webhook (recommended) or by polling.\n\n**Keys are server-side only.** Never ship an API key to a browser or an app. Queue your own users in your backend and call the API from there: every limit below is per AutoFeed account, shared by all of its keys.\n\n**Billing.** The API is included with Ultimate and is prepaid: each create spends credits from the same balance as the dashboard and autoposting, at the same price. A balance short of the cost is a 402 INSUFFICIENT_CREDITS that charges nothing and links to credit packs (topUpUrl) and bigger Ultimate sizes (upgradeUrl). A failed generation refunds its credits automatically.\n\n**Media expires.** Rendered files are deleted 14 days after they are made. Copy each one to your own storage when its webhook arrives.\n\n**Limits** rise with the Ultimate size (windows are 60 s):\n\n| Ultimate size | creates/min | reads/min | in flight |\n|---|---|---|---|\n| 180k credits/month | 20 | 120 | 10 |\n| 500k credits/month | 40 | 240 | 25 |\n| 1M credits/month | 60 | 360 | 50 |\n| 2M credits/month | 100 | 600 | 100 |\n\n\"In flight\" counts generations accepted and not yet finished. Over it, a create is 429 QUEUE_FULL with Retry-After and nothing charged. A 429 CAPACITY means every API slot across all customers is busy; retry later. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset."
  },
  "servers": [
    {
      "url": "https://www.autofeed.ai/api/v1"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Account",
      "description": "Balance, plan, limits and the type catalog."
    },
    {
      "name": "Videos",
      "description": "Create and read generations."
    }
  ],
  "paths": {
    "/me": {
      "get": {
        "tags": [
          "Account"
        ],
        "operationId": "getMe",
        "summary": "Credits, plan, limits and in-flight count for this key.",
        "description": "Not gated on API access, so a key on a plan without it can still read apiAccess: false. Counts against the read limit.",
        "responses": {
          "200": {
            "description": "Account summary.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, revoked or expired key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "const": "Bearer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "429": {
            "description": "Over the per-minute limit for this bucket. Wait Retry-After seconds.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitedError"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Retry with backoff; quote the request id to support if it persists.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          }
        }
      }
    },
    "/types": {
      "get": {
        "tags": [
          "Account"
        ],
        "operationId": "listTypes",
        "summary": "Every video type with its input schema, an example and prices.",
        "description": "The same catalog this spec is built from: input JSON Schemas, a valid example per type with its price, other priced inputs, and every AI video model with the price of each resolution/duration. Not gated on API access. Counts against the read limit.",
        "responses": {
          "200": {
            "description": "The catalog.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TypesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, revoked or expired key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "const": "Bearer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "429": {
            "description": "Over the per-minute limit for this bucket. Wait Retry-After seconds.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitedError"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Retry with backoff; quote the request id to support if it persists.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          }
        }
      }
    },
    "/videos": {
      "post": {
        "tags": [
          "Videos"
        ],
        "operationId": "createVideo",
        "summary": "Accept and charge a generation.",
        "description": "Credits are charged here: a 202 means charged, and a failed generation is refunded automatically. Send idempotencyKey to make retries safe.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateVideoRequest"
              },
              "example": {
                "type": "ai_slideshow",
                "input": {
                  "category": "Write Your Own Story",
                  "topic": "Three habits that quietly double your focus",
                  "duration": "15 to 30 seconds",
                  "format": "9:16"
                },
                "webhookUrl": "https://example.com/webhooks/autofeed",
                "idempotencyKey": "order-1234"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted and charged. The video is not ready yet.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "X-InFlight-Count": {
                "$ref": "#/components/headers/InFlightCount"
              },
              "X-InFlight-Limit": {
                "$ref": "#/components/headers/InFlightLimit"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AcceptedGeneration"
                }
              }
            }
          },
          "400": {
            "description": "VALIDATION_ERROR: the body failed validation. details lists each issue with its path. Nothing charged.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, revoked or expired key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "const": "Bearer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "402": {
            "description": "Nothing charged. INSUFFICIENT_CREDITS: the balance is short of this request (the body carries the numbers and billing links). NO_ACTIVE_SUBSCRIPTION: there is no subscription to spend under. PAYMENT_REQUIRED: the subscription is past due.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePaymentError"
                }
              }
            }
          },
          "403": {
            "description": "API_ACCESS_REQUIRED: the plan does not include the API. It is included with Ultimate.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "409": {
            "description": "The idempotencyKey cannot be honoured. IDEMPOTENCY_KEY_REUSED: it was used for a different request. IDEMPOTENCY_KEY_UNRESOLVED: an earlier attempt with it could not be resolved. Use a new key. Nothing charged.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdempotencyError"
                }
              }
            }
          },
          "429": {
            "description": "Nothing charged; the same idempotencyKey works on retry. RATE_LIMITED: over creates/min. QUEUE_FULL: this account is at its in-flight limit (Retry-After 30). CAPACITY: every API slot is busy (Retry-After 60), or yt_clips' daily allowance (5 jobs across all customers by default) is spent (Retry-After 3600).",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              },
              "X-InFlight-Count": {
                "$ref": "#/components/headers/InFlightCount"
              },
              "X-InFlight-Limit": {
                "$ref": "#/components/headers/InFlightLimit"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TooManyCreatesError"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Retry with backoff; quote the request id to support if it persists.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          },
          "503": {
            "description": "TEMPORARILY_UNAVAILABLE: the request could not be counted or accounted for, so it was refused. Nothing charged. Retry after Retry-After seconds.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnavailableError"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Videos"
        ],
        "operationId": "listVideos",
        "summary": "List generations, newest first, or read many by id.",
        "description": "Two forms. With ids, a batch status read of up to 50 generations for the price of one read; it takes no other parameter. Otherwise a page of this account's generations, newest first, filtered by type and status.",
        "parameters": [
          {
            "name": "ids",
            "in": "query",
            "description": "Comma-separated generation ids, 1 to 50. Cannot be combined with the other parameters.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 50,
              "default": 20
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "description": "nextCursor from the previous page, verbatim.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "type",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/VideoType"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "$ref": "#/components/schemas/GenerationStatus"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "A GenerationPage, or a GenerationBatch when ids was sent.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/GenerationPage"
                    },
                    {
                      "$ref": "#/components/schemas/GenerationBatch"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "A parameter is invalid.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, revoked or expired key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "const": "Bearer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "402": {
            "description": "PAYMENT_REQUIRED: the subscription is past due. Pay the open invoice from the billing page.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequiredError"
                }
              }
            }
          },
          "403": {
            "description": "API_ACCESS_REQUIRED: the plan does not include the API. It is included with Ultimate.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "429": {
            "description": "Over the per-minute limit for this bucket. Wait Retry-After seconds.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitedError"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Retry with backoff; quote the request id to support if it persists.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          }
        }
      }
    },
    "/videos/{id}": {
      "get": {
        "tags": [
          "Videos"
        ],
        "operationId": "getVideo",
        "summary": "Read one generation.",
        "description": "Poll this if you did not send a webhookUrl. Another account’s id is a 404, exactly like one that does not exist.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The generation.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Generation"
                }
              }
            }
          },
          "401": {
            "description": "Missing, malformed, revoked or expired key.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "WWW-Authenticate": {
                "schema": {
                  "type": "string",
                  "const": "Bearer"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UnauthorizedError"
                }
              }
            }
          },
          "402": {
            "description": "PAYMENT_REQUIRED: the subscription is past due. Pay the open invoice from the billing page.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PaymentRequiredError"
                }
              }
            }
          },
          "403": {
            "description": "API_ACCESS_REQUIRED: the plan does not include the API. It is included with Ultimate.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ForbiddenError"
                }
              }
            }
          },
          "404": {
            "description": "NOT_FOUND.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotFoundError"
                }
              }
            }
          },
          "429": {
            "description": "Over the per-minute limit for this bucket. Wait Retry-After seconds.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              },
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RateLimitedError"
                }
              }
            }
          },
          "500": {
            "description": "Our fault. Retry with backoff; quote the request id to support if it persists.",
            "headers": {
              "X-Request-Id": {
                "$ref": "#/components/headers/RequestId"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InternalError"
                }
              }
            }
          }
        }
      }
    }
  },
  "webhooks": {
    "video.completed": {
      "post": {
        "operationId": "videoCompletedWebhook",
        "summary": "Sent to webhookUrl when a generation finishes, successfully or not.",
        "description": "The body is the Generation. Read its status: X-Autofeed-Event is always video.completed, for failures too.\n\nVerify X-Autofeed-Signature before trusting the body. It is t=<unix seconds>,v1=<hex>, where v1 = HMAC-SHA256(secret, \"<t>.<raw body>\") over the raw bytes, before any JSON parsing. Reject a t more than 5 minutes old. The secret (whsec_...) is shown at Dashboard -> API Keys for the key that made the generation.\n\nDelivery: the request times out after 5 s, redirects are not followed, and only 5xx and 429 answers are retried (5 attempts in all). Answer 2xx quickly and do the work afterwards.\n\nAt least once, not exactly once: a reconciliation sweep also re-sends completions that have no delivery on record. Deduplicate on the body id. X-Autofeed-Delivery is unique per attempt.\n\nRevoking a key stops its deliveries, including for generations already in flight; read those from GET /videos/{id}. To rotate a secret, mint a new key, point the receiver at its secret, then revoke the old key.",
        "parameters": [
          {
            "name": "X-Autofeed-Signature",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "X-Autofeed-Event",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "const": "video.completed"
            }
          },
          {
            "name": "X-Autofeed-Delivery",
            "in": "header",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Generation"
              }
            }
          }
        },
        "responses": {
          "2XX": {
            "description": "Accepted. Nothing is re-sent."
          },
          "5XX": {
            "description": "Retried with backoff."
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "An API key from Dashboard -> API Keys (af_live_...). Server-side only."
      }
    },
    "headers": {
      "RequestId": {
        "description": "Identifies this request. Quote it to support; a 500 body includes it too.",
        "schema": {
          "type": "string"
        }
      },
      "RateLimitLimit": {
        "description": "Requests allowed in the current 60 s window for this bucket (creates or reads).",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitRemaining": {
        "description": "Requests left in the current window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitReset": {
        "description": "Unix seconds at which the current window resets.",
        "schema": {
          "type": "integer"
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before retrying.",
        "schema": {
          "type": "integer"
        }
      },
      "InFlightCount": {
        "description": "This account's generations in flight, counting this one.",
        "schema": {
          "type": "integer"
        }
      },
      "InFlightLimit": {
        "description": "This account's in-flight limit, set by its Ultimate size.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "schemas": {
      "VideoType": {
        "type": "string",
        "enum": [
          "ai_slideshow",
          "reddit_stories",
          "would_you_rather",
          "pick_one",
          "fake_text",
          "ugc",
          "ai_video",
          "yt_clips"
        ]
      },
      "GenerationStatus": {
        "type": "string",
        "enum": [
          "processing",
          "completed",
          "failed"
        ],
        "description": "processing = accepted and running. completed = the asset is ready. failed = terminal, credits refunded. There is no queued state."
      },
      "Format": {
        "type": "string",
        "enum": [
          "9:16",
          "16:9",
          "1:1"
        ],
        "description": "9:16 = 1080x1920, 16:9 = 1920x1080, 1:1 = 1280x1280."
      },
      "WebhookUrl": {
        "type": "string",
        "maxLength": 2048,
        "description": "https:// on the default port, a public host, no credentials. Private, loopback and link-local addresses are rejected, and re-checked at delivery."
      },
      "IdempotencyKey": {
        "type": "string",
        "minLength": 1,
        "maxLength": 255,
        "description": "Makes retries safe. Same key and same request: 202 with the original accept body and nothing charged. Same key and a different request (including a different webhookUrl): 409 IDEMPOTENCY_KEY_REUSED. Keys are scoped to your account."
      },
      "Generation": {
        "type": "object",
        "required": [
          "id",
          "type",
          "status",
          "url",
          "error",
          "costInCredits",
          "createdAt",
          "completedAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/VideoType"
          },
          "status": {
            "$ref": "#/components/schemas/GenerationStatus"
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "description": "The rendered MP4 once status is completed. Null for yt_clips (read clipUrls). Deleted after 14 days."
          },
          "clipUrls": {
            "anyOf": [
              {
                "type": "array",
                "items": {
                  "type": "string",
                  "format": "uri"
                }
              },
              {
                "type": "null"
              }
            ],
            "description": "yt_clips only: one URL per clip once completed. Absent or null for every other type. Deleted after 14 days."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Usually the reason when status is failed, but may be null. Branch on status, never on error."
          },
          "costInCredits": {
            "type": "integer",
            "description": "What was charged at accept. Refunded in full on failure."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "completedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "AcceptedGeneration": {
        "type": "object",
        "required": [
          "id",
          "type",
          "status",
          "costInCredits",
          "createdAt"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/VideoType"
          },
          "status": {
            "$ref": "#/components/schemas/GenerationStatus",
            "description": "Always \"processing\", including on an idempotent replay of an earlier accept."
          },
          "costInCredits": {
            "type": "integer",
            "description": "Charged now. A failed generation refunds it automatically."
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "GenerationPage": {
        "type": "object",
        "required": [
          "data",
          "nextCursor"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Generation"
            }
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Opaque. Send it back verbatim as ?cursor= for the next page; null on the last page."
          }
        }
      },
      "GenerationBatch": {
        "type": "object",
        "required": [
          "data",
          "notFound"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Generation"
            },
            "description": "The generations found, in the order their ids were asked for."
          },
          "notFound": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ids that are not generations of this account. Another account’s id reads exactly like one that does not exist."
          }
        }
      },
      "MeResponse": {
        "type": "object",
        "required": [
          "credits",
          "plan",
          "monthlyCredits",
          "apiAccess",
          "pastDue",
          "rateLimits",
          "inFlight"
        ],
        "properties": {
          "credits": {
            "type": "integer",
            "description": "The credit balance, shared with the dashboard and autoposting."
          },
          "plan": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "monthlyCredits": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "The Ultimate size: credits granted per month by the plan behind API access. Null without an API plan. Rate and in-flight limits rise with it."
          },
          "apiAccess": {
            "type": "boolean",
            "description": "Whether this account can create. /me answers 200 either way so a key on the wrong plan can read this."
          },
          "pastDue": {
            "type": "boolean",
            "description": "An invoice is unpaid. Every endpoint except /me and /types answers 402 PAYMENT_REQUIRED until it is paid."
          },
          "rateLimits": {
            "type": "object",
            "required": [
              "read",
              "write"
            ],
            "properties": {
              "read": {
                "type": "object",
                "required": [
                  "limit",
                  "windowSeconds"
                ],
                "properties": {
                  "limit": {
                    "type": "integer"
                  },
                  "windowSeconds": {
                    "type": "integer"
                  }
                }
              },
              "write": {
                "type": "object",
                "required": [
                  "limit",
                  "windowSeconds"
                ],
                "properties": {
                  "limit": {
                    "type": "integer"
                  },
                  "windowSeconds": {
                    "type": "integer"
                  }
                }
              }
            }
          },
          "inFlight": {
            "type": "object",
            "required": [
              "count",
              "limit"
            ],
            "properties": {
              "count": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Null when it could not be read."
              },
              "limit": {
                "type": "integer"
              }
            }
          }
        }
      },
      "TypesResponse": {
        "type": "object",
        "required": [
          "data",
          "aiVideoModels"
        ],
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "type",
                "name",
                "summary",
                "notes",
                "output",
                "example",
                "exampleCostInCredits",
                "costVariants",
                "inputSchema"
              ],
              "properties": {
                "type": {
                  "$ref": "#/components/schemas/VideoType"
                },
                "name": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "notes": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "output": {
                  "type": "string",
                  "enum": [
                    "url",
                    "clipUrls"
                  ]
                },
                "example": {
                  "type": "object",
                  "description": "A valid input for POST /videos."
                },
                "exampleCostInCredits": {
                  "type": "integer"
                },
                "costVariants": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "required": [
                      "label",
                      "costInCredits"
                    ],
                    "properties": {
                      "label": {
                        "type": "string"
                      },
                      "costInCredits": {
                        "type": "integer"
                      }
                    }
                  }
                },
                "inputSchema": {
                  "type": "object",
                  "description": "JSON Schema of the input object."
                }
              }
            }
          },
          "aiVideoModels": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "model",
                "modes",
                "durations",
                "resolutions",
                "formats",
                "credits"
              ],
              "properties": {
                "model": {
                  "type": "string"
                },
                "modes": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "enum": [
                      "text_to_video",
                      "image_to_video"
                    ]
                  }
                },
                "durations": {
                  "type": "array",
                  "items": {
                    "type": "integer"
                  }
                },
                "resolutions": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "formats": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/Format"
                  }
                },
                "credits": {
                  "type": "object",
                  "description": "credits[resolution][duration in seconds].",
                  "additionalProperties": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "PricingDisclosure": {
        "type": "object",
        "required": [
          "basis",
          "estimatedSourceMinutes",
          "note"
        ],
        "properties": {
          "basis": {
            "type": "string",
            "const": "flat_estimate"
          },
          "estimatedSourceMinutes": {
            "type": "integer"
          },
          "note": {
            "type": "string"
          }
        },
        "description": "Present on a 402 for a type whose price is an estimate (yt_clips)."
      },
      "UnauthorizedError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "UNAUTHORIZED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "ForbiddenError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "API_ACCESS_REQUIRED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "PaymentRequiredError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "PAYMENT_REQUIRED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "ValidationError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "VALIDATION_ERROR"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              },
              "details": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "path",
                    "message"
                  ],
                  "properties": {
                    "path": {
                      "type": "array",
                      "items": {
                        "anyOf": [
                          {
                            "type": "string"
                          },
                          {
                            "type": "integer"
                          }
                        ]
                      }
                    },
                    "message": {
                      "type": "string"
                    }
                  },
                  "additionalProperties": true
                }
              }
            }
          }
        }
      },
      "CreatePaymentError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "INSUFFICIENT_CREDITS",
                  "NO_ACTIVE_SUBSCRIPTION",
                  "PAYMENT_REQUIRED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              },
              "creditsRequired": {
                "type": "integer",
                "description": "INSUFFICIENT_CREDITS only."
              },
              "creditsAvailable": {
                "anyOf": [
                  {
                    "type": "integer"
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "INSUFFICIENT_CREDITS only. Null if not read."
              },
              "topUpUrl": {
                "type": "string",
                "format": "uri",
                "description": "INSUFFICIENT_CREDITS only. Credit packs."
              },
              "upgradeUrl": {
                "type": "string",
                "format": "uri",
                "description": "INSUFFICIENT_CREDITS only. Bigger Ultimate sizes."
              },
              "pricing": {
                "$ref": "#/components/schemas/PricingDisclosure"
              }
            }
          }
        }
      },
      "IdempotencyError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "IDEMPOTENCY_KEY_REUSED",
                  "IDEMPOTENCY_KEY_UNRESOLVED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "RateLimitedError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "RATE_LIMITED"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "TooManyCreatesError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "RATE_LIMITED",
                  "QUEUE_FULL",
                  "CAPACITY"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              },
              "inFlight": {
                "type": "integer",
                "description": "QUEUE_FULL only."
              },
              "maxInFlight": {
                "type": "integer",
                "description": "QUEUE_FULL only."
              }
            }
          }
        }
      },
      "NotFoundError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "NOT_FOUND"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "UnavailableError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "TEMPORARILY_UNAVAILABLE"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "InternalError": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "INTERNAL_ERROR"
                ]
              },
              "message": {
                "type": "string",
                "description": "For humans. May be reworded; branch on code."
              }
            }
          }
        }
      },
      "ErrorCode": {
        "type": "string",
        "enum": [
          "UNAUTHORIZED",
          "API_ACCESS_REQUIRED",
          "VALIDATION_ERROR",
          "INSUFFICIENT_CREDITS",
          "NO_ACTIVE_SUBSCRIPTION",
          "PAYMENT_REQUIRED",
          "RATE_LIMITED",
          "QUEUE_FULL",
          "CAPACITY",
          "IDEMPOTENCY_KEY_REUSED",
          "IDEMPOTENCY_KEY_UNRESOLVED",
          "NOT_FOUND",
          "METHOD_NOT_ALLOWED",
          "TEMPORARILY_UNAVAILABLE",
          "INTERNAL_ERROR"
        ],
        "description": "Every code the API can return. Codes are never repurposed."
      },
      "AiSlideshowInput": {
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "enum": [
              "Write Your Own Story",
              "Italian Brainrots",
              "Brainrot",
              "Freaky Gram",
              "Kids Stories",
              "Cat Stories",
              "Crazy Animals",
              "Celebrity Facts",
              "Top 5 List",
              "Messi And Ronaldo",
              "History Facts",
              "Wars & Conflicts",
              "Conspiracy Theories",
              "True Crime",
              "Scary Stories",
              "Movie Reviews",
              "Car Reviews",
              "Luxury Lifestyle",
              "Travel Destinations",
              "Business Stories",
              "Financial Tips",
              "Productivity Hacks",
              "Life Hacks",
              "Tutorials",
              "Science Simplified",
              "New Technologies",
              "Psychology Facts",
              "Religion & Prayers"
            ],
            "default": "Write Your Own Story"
          },
          "topic": {
            "type": "string",
            "maxLength": 4000
          },
          "substyle": {
            "type": "string",
            "enum": [
              "Realistic",
              "Cartoony",
              "Anime",
              "Cyberpunk",
              "Retro",
              "Painting",
              "Comic"
            ],
            "default": "Realistic"
          },
          "language": {
            "type": "string",
            "enum": [
              "English (USA)",
              "English (UK)",
              "English (Australia)",
              "English (Canada)",
              "Japanese",
              "Chinese",
              "German",
              "Hindi",
              "French (France)",
              "French (Canada)",
              "Korean",
              "Portuguese (Brazil)",
              "Portuguese (Portugal)",
              "Italian",
              "Spanish (Spain)",
              "Spanish (Mexico)",
              "Indonesian",
              "Dutch",
              "Turkish",
              "Filipino",
              "Polish",
              "Swedish",
              "Bulgarian",
              "Romanian",
              "Arabic (Saudi Arabia)",
              "Arabic (UAE)",
              "Czech",
              "Greek",
              "Finnish",
              "Croatian",
              "Malay",
              "Slovak",
              "Danish",
              "Tamil",
              "Ukrainian",
              "Russian",
              "Hungarian",
              "Norwegian",
              "Vietnamese"
            ],
            "default": "English (USA)"
          },
          "music": {
            "type": "string",
            "maxLength": 255,
            "enum": [
              "",
              "none",
              "solitude",
              "assumptions",
              "passo-bem-solto",
              "calm-viral",
              "epic",
              "focused-viral",
              "happy",
              "mysterious-viral",
              "relaxing",
              "sad",
              "scary",
              "/ugc-sounds/classics/abba-sos.mp3",
              "/ugc-sounds/classics/adele-send-my-love.mp3",
              "/ugc-sounds/classics/blondie-heart-of-glass.mp3",
              "/ugc-sounds/classics/eminem-lose-yourself.mp3",
              "/ugc-sounds/classics/empire-of-the-sun-we-are-the-people.mp3",
              "/ugc-sounds/classics/hot-stuff.mp3",
              "/ugc-sounds/classics/marvin-gaye-aint-no-mountain-high-enough.mp3",
              "/ugc-sounds/classics/mia-paper-planes.mp3",
              "/ugc-sounds/classics/nelly-dilemma.mp3",
              "/ugc-sounds/classics/roxette-it-must-have-been-love.mp3",
              "/ugc-sounds/classics/shakira-la-tortura.mp3",
              "/ugc-sounds/classics/shania-twain-dont-impress-my-much.mp3",
              "/ugc-sounds/classics/shrek-song-all-star-smash-mouth.mp3",
              "/ugc-sounds/classics/the-beatles-here-comes-the-sun.mp3",
              "/ugc-sounds/classics/wheetus-teenage-dirtbag.mp3",
              "/ugc-sounds/moods/epic-neoclassical-music.mp3",
              "/ugc-sounds/moods/happy-music.mp3",
              "/ugc-sounds/moods/suspensful-music.mp3",
              "/ugc-sounds/moods/tension-music.mp3",
              "/ugc-sounds/moods/let-go-slowed.mp3",
              "/ugc-sounds/moods/let-go-guitar.mp3",
              "/ugc-sounds/movies/20th-century-studios-intro.mp3",
              "/ugc-sounds/movies/dirty-dancing.mp3",
              "/ugc-sounds/movies/footloose.mp3",
              "/ugc-sounds/movies/ghostbusters.mp3",
              "/ugc-sounds/movies/gladiator.mp3",
              "/ugc-sounds/movies/gta-san-andreas-theme.mp3",
              "/ugc-sounds/movies/james-bond.mp3",
              "/ugc-sounds/movies/married-life.mp3",
              "/ugc-sounds/movies/mission-impossible.mp3",
              "/ugc-sounds/movies/pirates-of-the-caribbean.mp3",
              "/ugc-sounds/movies/star-was-born.mp3",
              "/ugc-sounds/movies/taxi.mp3",
              "/ugc-sounds/movies/top-gun.mp3",
              "/ugc-sounds/viral/aesthetic.mp3",
              "/ugc-sounds/viral/anxiety.mp3",
              "/ugc-sounds/viral/artemas-i-like-the-way-you-kiss-me.mp3",
              "/ugc-sounds/viral/bad-bunny-dtmf.mp3",
              "/ugc-sounds/viral/beautiful-day.mp3",
              "/ugc-sounds/viral/benson-beautiful-things.mp3",
              "/ugc-sounds/viral/billie-eilish-birds-of-the-feather.mp3",
              "/ugc-sounds/viral/bounce-i-just-wanna-dance.mp3",
              "/ugc-sounds/viral/bounce-when-she-walk.mp3",
              "/ugc-sounds/viral/bruno-mars-apt.mp3",
              "/ugc-sounds/viral/chappel-roan-good-luck-baby.mp3",
              "/ugc-sounds/viral/con-calma-tik-tok-remix.mp3",
              "/ugc-sounds/viral/confidence-baby.mp3",
              "/ugc-sounds/viral/cooking-time.mp3",
              "/ugc-sounds/viral/danny-ocean-imaginate.mp3",
              "/ugc-sounds/viral/danza-kuduro.mp3",
              "/ugc-sounds/viral/disco-surf-curse.mp3",
              "/ugc-sounds/viral/djo-end-of-beginning.mp3",
              "/ugc-sounds/viral/este-o-este.mp3",
              "/ugc-sounds/viral/gracie-abrams-thats-so-true.mp3",
              "/ugc-sounds/viral/happy-cat.mp3",
              "/ugc-sounds/viral/hozier-too-sweet.mp3",
              "/ugc-sounds/viral/i-like-when-it-rains.mp3",
              "/ugc-sounds/viral/icona-pop-i-love-it-mashup.mp3",
              "/ugc-sounds/viral/inna-stereo-love.mp3",
              "/ugc-sounds/viral/kendrick-lamar-they-not-like-us.mp3",
              "/ugc-sounds/viral/kompa.mp3",
              "/ugc-sounds/viral/lady-gaga-die-with-the-smile.mp3",
              "/ugc-sounds/viral/lana-del-rey-when-you-know-you-know.mp3",
              "/ugc-sounds/viral/lola-young-messy.mp3",
              "/ugc-sounds/viral/madonna-like-a-prayer-choir-version.mp3",
              "/ugc-sounds/viral/mata-lloret-de-mar.mp3",
              "/ugc-sounds/viral/me-gustas-tu.mp3",
              "/ugc-sounds/viral/meow-meow-tiktok.mp3",
              "/ugc-sounds/viral/mr-probz-waves.mp3",
              "/ugc-sounds/viral/prayer-in-c.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-espresso.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-taste.mp3",
              "/ugc-sounds/viral/shaboozey-tipsy-bar-song.mp3",
              "/ugc-sounds/viral/the-weeknd-blinding-lights.mp3",
              "/ugc-sounds/viral/trendsetter.mp3",
              "/ugc-sounds/viral/volare-tik-tok-remix.mp3",
              "/background-music/solitude.mp3",
              "/background-music/assumptions.mp3",
              "/background-music/passo-bem-solto.mp3",
              "/background-music/calm-viral.mp3",
              "/background-music/epic.mp3",
              "/background-music/focused-viral.mp3",
              "/background-music/happy.mp3",
              "/background-music/mysterious-viral.mp3",
              "/background-music/relaxing.mp3",
              "/background-music/sad.mp3",
              "/background-music/scary.mp3"
            ],
            "default": "none"
          },
          "voice": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{16,40}$",
            "default": "pNInz6obpgDQGcFmaJgB"
          },
          "captionStyle": {
            "type": "string",
            "enum": [
              "None",
              "YouTuber",
              "Supreme",
              "Barbie",
              "Neon",
              "Glow",
              "Thumbnail",
              "Glitch",
              "Creepy",
              "TikToker",
              "Instagramer",
              "Classic 1",
              "Classic 2",
              "Custom"
            ],
            "default": "YouTuber"
          },
          "customCaptions": {
            "type": "object",
            "properties": {
              "fontName": {
                "type": "string",
                "enum": [
                  "Luckiest Guy",
                  "Carter One",
                  "Oooh Baby",
                  "Bungee",
                  "Titan One",
                  "Bangers",
                  "Creepster",
                  "Rubik Glitch",
                  "Outfit",
                  "Poiret One",
                  "Poppins",
                  "TikTokDisplayMedium",
                  "Anton",
                  "Bebas Neue",
                  "Archivo Black",
                  "Oswald",
                  "Staatliches",
                  "Alfa Slab One",
                  "Ultra",
                  "Russo One",
                  "Lilita One",
                  "Fredoka",
                  "Concert One",
                  "Righteous",
                  "Sigmar One",
                  "Rowdies",
                  "Chewy",
                  "Montserrat",
                  "Inter",
                  "Nunito",
                  "Kanit",
                  "Permanent Marker",
                  "Pacifico",
                  "Lobster",
                  "Caveat",
                  "Press Start 2P",
                  "Monoton",
                  "Orbitron",
                  "Black Ops One",
                  "Special Elite"
                ],
                "default": "Luckiest Guy"
              },
              "fontWeight": {
                "type": "string",
                "enum": [
                  "bold",
                  "normal"
                ],
                "default": "normal"
              },
              "textColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 255,
                  "blue": 255
                }
              },
              "borderColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "default": 20
              },
              "highlightColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 210,
                  "blue": 25
                }
              },
              "backgroundColor": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "red": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "green": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "blue": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      }
                    },
                    "required": [
                      "red",
                      "green",
                      "blue"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "glowing": {
                "type": "boolean",
                "default": false
              },
              "uppercase": {
                "type": "boolean",
                "default": true
              },
              "fontSize": {
                "type": "number",
                "minimum": 20,
                "maximum": 200
              }
            },
            "additionalProperties": false
          },
          "captionSize": {
            "type": "string",
            "enum": [
              "Small",
              "Medium",
              "Large"
            ],
            "default": "Medium"
          },
          "captionPosition": {
            "type": "string",
            "enum": [
              "Top",
              "Center",
              "Bottom"
            ],
            "default": "Bottom"
          },
          "particles": {
            "type": "string",
            "enum": [
              "None",
              "Smoke",
              "Ember",
              "Dust",
              "Sakura",
              "Glowy",
              "Travel",
              "Warp"
            ],
            "default": "None"
          },
          "duration": {
            "type": "string",
            "enum": [
              "15 to 30 seconds",
              "45 to 60 seconds",
              "60 to 90 seconds"
            ],
            "default": "15 to 30 seconds"
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "9:16"
          },
          "cameraShake": {
            "type": "boolean",
            "default": true
          },
          "animatedImages": {
            "type": "boolean",
            "default": false
          }
        },
        "additionalProperties": false,
        "description": "A topic in, a narrated slideshow of AI images with word-timed captions out.\n\nPrice rises with duration, and much more with animatedImages, which turns every image into a short AI clip and adds several minutes of render time.\n\nCost: 1000 credits for the example. Other inputs:\n- duration \"15 to 30 seconds\": 1000 credits\n- duration \"45 to 60 seconds\": 1200 credits\n- duration \"60 to 90 seconds\": 1500 credits\n- duration \"15 to 30 seconds\", animatedImages: true: 2400 credits\n- duration \"45 to 60 seconds\", animatedImages: true: 4800 credits\n- duration \"60 to 90 seconds\", animatedImages: true: 7200 credits",
        "examples": [
          {
            "category": "Write Your Own Story",
            "topic": "Three habits that quietly double your focus",
            "duration": "15 to 30 seconds",
            "format": "9:16"
          }
        ]
      },
      "RedditStoriesInput": {
        "type": "object",
        "properties": {
          "author": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "default": "AutoFeed.ai"
          },
          "subreddit": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_]{2,50}$",
            "default": "AskReddit"
          },
          "flairs": {
            "type": "string",
            "maxLength": 500,
            "default": ""
          },
          "commentsCount": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10,
            "default": 3
          },
          "backgroundCategory": {
            "type": "string",
            "enum": [
              "Minecraft",
              "GTA V",
              "Subway Surfers",
              "Fortnite",
              "Satisfying"
            ],
            "default": "Minecraft"
          },
          "music": {
            "type": "string",
            "maxLength": 255,
            "enum": [
              "",
              "none",
              "solitude",
              "assumptions",
              "passo-bem-solto",
              "calm-viral",
              "epic",
              "focused-viral",
              "happy",
              "mysterious-viral",
              "relaxing",
              "sad",
              "scary",
              "/ugc-sounds/classics/abba-sos.mp3",
              "/ugc-sounds/classics/adele-send-my-love.mp3",
              "/ugc-sounds/classics/blondie-heart-of-glass.mp3",
              "/ugc-sounds/classics/eminem-lose-yourself.mp3",
              "/ugc-sounds/classics/empire-of-the-sun-we-are-the-people.mp3",
              "/ugc-sounds/classics/hot-stuff.mp3",
              "/ugc-sounds/classics/marvin-gaye-aint-no-mountain-high-enough.mp3",
              "/ugc-sounds/classics/mia-paper-planes.mp3",
              "/ugc-sounds/classics/nelly-dilemma.mp3",
              "/ugc-sounds/classics/roxette-it-must-have-been-love.mp3",
              "/ugc-sounds/classics/shakira-la-tortura.mp3",
              "/ugc-sounds/classics/shania-twain-dont-impress-my-much.mp3",
              "/ugc-sounds/classics/shrek-song-all-star-smash-mouth.mp3",
              "/ugc-sounds/classics/the-beatles-here-comes-the-sun.mp3",
              "/ugc-sounds/classics/wheetus-teenage-dirtbag.mp3",
              "/ugc-sounds/moods/epic-neoclassical-music.mp3",
              "/ugc-sounds/moods/happy-music.mp3",
              "/ugc-sounds/moods/suspensful-music.mp3",
              "/ugc-sounds/moods/tension-music.mp3",
              "/ugc-sounds/moods/let-go-slowed.mp3",
              "/ugc-sounds/moods/let-go-guitar.mp3",
              "/ugc-sounds/movies/20th-century-studios-intro.mp3",
              "/ugc-sounds/movies/dirty-dancing.mp3",
              "/ugc-sounds/movies/footloose.mp3",
              "/ugc-sounds/movies/ghostbusters.mp3",
              "/ugc-sounds/movies/gladiator.mp3",
              "/ugc-sounds/movies/gta-san-andreas-theme.mp3",
              "/ugc-sounds/movies/james-bond.mp3",
              "/ugc-sounds/movies/married-life.mp3",
              "/ugc-sounds/movies/mission-impossible.mp3",
              "/ugc-sounds/movies/pirates-of-the-caribbean.mp3",
              "/ugc-sounds/movies/star-was-born.mp3",
              "/ugc-sounds/movies/taxi.mp3",
              "/ugc-sounds/movies/top-gun.mp3",
              "/ugc-sounds/viral/aesthetic.mp3",
              "/ugc-sounds/viral/anxiety.mp3",
              "/ugc-sounds/viral/artemas-i-like-the-way-you-kiss-me.mp3",
              "/ugc-sounds/viral/bad-bunny-dtmf.mp3",
              "/ugc-sounds/viral/beautiful-day.mp3",
              "/ugc-sounds/viral/benson-beautiful-things.mp3",
              "/ugc-sounds/viral/billie-eilish-birds-of-the-feather.mp3",
              "/ugc-sounds/viral/bounce-i-just-wanna-dance.mp3",
              "/ugc-sounds/viral/bounce-when-she-walk.mp3",
              "/ugc-sounds/viral/bruno-mars-apt.mp3",
              "/ugc-sounds/viral/chappel-roan-good-luck-baby.mp3",
              "/ugc-sounds/viral/con-calma-tik-tok-remix.mp3",
              "/ugc-sounds/viral/confidence-baby.mp3",
              "/ugc-sounds/viral/cooking-time.mp3",
              "/ugc-sounds/viral/danny-ocean-imaginate.mp3",
              "/ugc-sounds/viral/danza-kuduro.mp3",
              "/ugc-sounds/viral/disco-surf-curse.mp3",
              "/ugc-sounds/viral/djo-end-of-beginning.mp3",
              "/ugc-sounds/viral/este-o-este.mp3",
              "/ugc-sounds/viral/gracie-abrams-thats-so-true.mp3",
              "/ugc-sounds/viral/happy-cat.mp3",
              "/ugc-sounds/viral/hozier-too-sweet.mp3",
              "/ugc-sounds/viral/i-like-when-it-rains.mp3",
              "/ugc-sounds/viral/icona-pop-i-love-it-mashup.mp3",
              "/ugc-sounds/viral/inna-stereo-love.mp3",
              "/ugc-sounds/viral/kendrick-lamar-they-not-like-us.mp3",
              "/ugc-sounds/viral/kompa.mp3",
              "/ugc-sounds/viral/lady-gaga-die-with-the-smile.mp3",
              "/ugc-sounds/viral/lana-del-rey-when-you-know-you-know.mp3",
              "/ugc-sounds/viral/lola-young-messy.mp3",
              "/ugc-sounds/viral/madonna-like-a-prayer-choir-version.mp3",
              "/ugc-sounds/viral/mata-lloret-de-mar.mp3",
              "/ugc-sounds/viral/me-gustas-tu.mp3",
              "/ugc-sounds/viral/meow-meow-tiktok.mp3",
              "/ugc-sounds/viral/mr-probz-waves.mp3",
              "/ugc-sounds/viral/prayer-in-c.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-espresso.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-taste.mp3",
              "/ugc-sounds/viral/shaboozey-tipsy-bar-song.mp3",
              "/ugc-sounds/viral/the-weeknd-blinding-lights.mp3",
              "/ugc-sounds/viral/trendsetter.mp3",
              "/ugc-sounds/viral/volare-tik-tok-remix.mp3",
              "/background-music/solitude.mp3",
              "/background-music/assumptions.mp3",
              "/background-music/passo-bem-solto.mp3",
              "/background-music/calm-viral.mp3",
              "/background-music/epic.mp3",
              "/background-music/focused-viral.mp3",
              "/background-music/happy.mp3",
              "/background-music/mysterious-viral.mp3",
              "/background-music/relaxing.mp3",
              "/background-music/sad.mp3",
              "/background-music/scary.mp3"
            ],
            "default": "none"
          },
          "voice": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{16,40}$",
            "default": "JBFqnCBsd6RMkjVDRZzb"
          },
          "captionStyle": {
            "type": "string",
            "enum": [
              "None",
              "YouTuber",
              "Supreme",
              "Barbie",
              "Neon",
              "Glow",
              "Thumbnail",
              "Glitch",
              "Creepy",
              "TikToker",
              "Instagramer",
              "Classic 1",
              "Classic 2",
              "Custom"
            ],
            "default": "YouTuber"
          },
          "customCaptions": {
            "type": "object",
            "properties": {
              "fontName": {
                "type": "string",
                "enum": [
                  "Luckiest Guy",
                  "Carter One",
                  "Oooh Baby",
                  "Bungee",
                  "Titan One",
                  "Bangers",
                  "Creepster",
                  "Rubik Glitch",
                  "Outfit",
                  "Poiret One",
                  "Poppins",
                  "TikTokDisplayMedium",
                  "Anton",
                  "Bebas Neue",
                  "Archivo Black",
                  "Oswald",
                  "Staatliches",
                  "Alfa Slab One",
                  "Ultra",
                  "Russo One",
                  "Lilita One",
                  "Fredoka",
                  "Concert One",
                  "Righteous",
                  "Sigmar One",
                  "Rowdies",
                  "Chewy",
                  "Montserrat",
                  "Inter",
                  "Nunito",
                  "Kanit",
                  "Permanent Marker",
                  "Pacifico",
                  "Lobster",
                  "Caveat",
                  "Press Start 2P",
                  "Monoton",
                  "Orbitron",
                  "Black Ops One",
                  "Special Elite"
                ],
                "default": "Luckiest Guy"
              },
              "fontWeight": {
                "type": "string",
                "enum": [
                  "bold",
                  "normal"
                ],
                "default": "normal"
              },
              "textColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 255,
                  "blue": 255
                }
              },
              "borderColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "default": 20
              },
              "highlightColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 210,
                  "blue": 25
                }
              },
              "backgroundColor": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "red": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "green": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "blue": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      }
                    },
                    "required": [
                      "red",
                      "green",
                      "blue"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "glowing": {
                "type": "boolean",
                "default": false
              },
              "uppercase": {
                "type": "boolean",
                "default": true
              },
              "fontSize": {
                "type": "number",
                "minimum": 20,
                "maximum": 200
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false,
        "description": "A subreddit style in, an original narrated story over gameplay footage out.\n\nAlways vertical (9:16): there is no format, captionSize or captionPosition.\n\nThe background clip is drawn server-side from the category's pool and cannot be chosen.\n\nCost: 1000 credits, whatever the input.",
        "examples": [
          {
            "subreddit": "AskReddit",
            "commentsCount": 3,
            "backgroundCategory": "Minecraft"
          }
        ]
      },
      "WouldYouRatherInput": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "numberOfComparisons": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "default": 8
          },
          "removeBackground": {
            "type": "boolean",
            "default": false
          },
          "music": {
            "type": "string",
            "maxLength": 255,
            "enum": [
              "",
              "none",
              "solitude",
              "assumptions",
              "passo-bem-solto",
              "calm-viral",
              "epic",
              "focused-viral",
              "happy",
              "mysterious-viral",
              "relaxing",
              "sad",
              "scary",
              "/ugc-sounds/classics/abba-sos.mp3",
              "/ugc-sounds/classics/adele-send-my-love.mp3",
              "/ugc-sounds/classics/blondie-heart-of-glass.mp3",
              "/ugc-sounds/classics/eminem-lose-yourself.mp3",
              "/ugc-sounds/classics/empire-of-the-sun-we-are-the-people.mp3",
              "/ugc-sounds/classics/hot-stuff.mp3",
              "/ugc-sounds/classics/marvin-gaye-aint-no-mountain-high-enough.mp3",
              "/ugc-sounds/classics/mia-paper-planes.mp3",
              "/ugc-sounds/classics/nelly-dilemma.mp3",
              "/ugc-sounds/classics/roxette-it-must-have-been-love.mp3",
              "/ugc-sounds/classics/shakira-la-tortura.mp3",
              "/ugc-sounds/classics/shania-twain-dont-impress-my-much.mp3",
              "/ugc-sounds/classics/shrek-song-all-star-smash-mouth.mp3",
              "/ugc-sounds/classics/the-beatles-here-comes-the-sun.mp3",
              "/ugc-sounds/classics/wheetus-teenage-dirtbag.mp3",
              "/ugc-sounds/moods/epic-neoclassical-music.mp3",
              "/ugc-sounds/moods/happy-music.mp3",
              "/ugc-sounds/moods/suspensful-music.mp3",
              "/ugc-sounds/moods/tension-music.mp3",
              "/ugc-sounds/moods/let-go-slowed.mp3",
              "/ugc-sounds/moods/let-go-guitar.mp3",
              "/ugc-sounds/movies/20th-century-studios-intro.mp3",
              "/ugc-sounds/movies/dirty-dancing.mp3",
              "/ugc-sounds/movies/footloose.mp3",
              "/ugc-sounds/movies/ghostbusters.mp3",
              "/ugc-sounds/movies/gladiator.mp3",
              "/ugc-sounds/movies/gta-san-andreas-theme.mp3",
              "/ugc-sounds/movies/james-bond.mp3",
              "/ugc-sounds/movies/married-life.mp3",
              "/ugc-sounds/movies/mission-impossible.mp3",
              "/ugc-sounds/movies/pirates-of-the-caribbean.mp3",
              "/ugc-sounds/movies/star-was-born.mp3",
              "/ugc-sounds/movies/taxi.mp3",
              "/ugc-sounds/movies/top-gun.mp3",
              "/ugc-sounds/viral/aesthetic.mp3",
              "/ugc-sounds/viral/anxiety.mp3",
              "/ugc-sounds/viral/artemas-i-like-the-way-you-kiss-me.mp3",
              "/ugc-sounds/viral/bad-bunny-dtmf.mp3",
              "/ugc-sounds/viral/beautiful-day.mp3",
              "/ugc-sounds/viral/benson-beautiful-things.mp3",
              "/ugc-sounds/viral/billie-eilish-birds-of-the-feather.mp3",
              "/ugc-sounds/viral/bounce-i-just-wanna-dance.mp3",
              "/ugc-sounds/viral/bounce-when-she-walk.mp3",
              "/ugc-sounds/viral/bruno-mars-apt.mp3",
              "/ugc-sounds/viral/chappel-roan-good-luck-baby.mp3",
              "/ugc-sounds/viral/con-calma-tik-tok-remix.mp3",
              "/ugc-sounds/viral/confidence-baby.mp3",
              "/ugc-sounds/viral/cooking-time.mp3",
              "/ugc-sounds/viral/danny-ocean-imaginate.mp3",
              "/ugc-sounds/viral/danza-kuduro.mp3",
              "/ugc-sounds/viral/disco-surf-curse.mp3",
              "/ugc-sounds/viral/djo-end-of-beginning.mp3",
              "/ugc-sounds/viral/este-o-este.mp3",
              "/ugc-sounds/viral/gracie-abrams-thats-so-true.mp3",
              "/ugc-sounds/viral/happy-cat.mp3",
              "/ugc-sounds/viral/hozier-too-sweet.mp3",
              "/ugc-sounds/viral/i-like-when-it-rains.mp3",
              "/ugc-sounds/viral/icona-pop-i-love-it-mashup.mp3",
              "/ugc-sounds/viral/inna-stereo-love.mp3",
              "/ugc-sounds/viral/kendrick-lamar-they-not-like-us.mp3",
              "/ugc-sounds/viral/kompa.mp3",
              "/ugc-sounds/viral/lady-gaga-die-with-the-smile.mp3",
              "/ugc-sounds/viral/lana-del-rey-when-you-know-you-know.mp3",
              "/ugc-sounds/viral/lola-young-messy.mp3",
              "/ugc-sounds/viral/madonna-like-a-prayer-choir-version.mp3",
              "/ugc-sounds/viral/mata-lloret-de-mar.mp3",
              "/ugc-sounds/viral/me-gustas-tu.mp3",
              "/ugc-sounds/viral/meow-meow-tiktok.mp3",
              "/ugc-sounds/viral/mr-probz-waves.mp3",
              "/ugc-sounds/viral/prayer-in-c.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-espresso.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-taste.mp3",
              "/ugc-sounds/viral/shaboozey-tipsy-bar-song.mp3",
              "/ugc-sounds/viral/the-weeknd-blinding-lights.mp3",
              "/ugc-sounds/viral/trendsetter.mp3",
              "/ugc-sounds/viral/volare-tik-tok-remix.mp3",
              "/background-music/solitude.mp3",
              "/background-music/assumptions.mp3",
              "/background-music/passo-bem-solto.mp3",
              "/background-music/calm-viral.mp3",
              "/background-music/epic.mp3",
              "/background-music/focused-viral.mp3",
              "/background-music/happy.mp3",
              "/background-music/mysterious-viral.mp3",
              "/background-music/relaxing.mp3",
              "/background-music/sad.mp3",
              "/background-music/scary.mp3"
            ],
            "default": "solitude"
          },
          "voice": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{16,40}$",
            "default": "pNInz6obpgDQGcFmaJgB"
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "9:16"
          }
        },
        "required": [
          "topic"
        ],
        "additionalProperties": false,
        "description": "A topic in, a voiced \"would you rather\" video with an AI image per option out.\n\nThe price does not change with numberOfComparisons.\n\nCost: 1000 credits for the example. Other inputs:\n- numberOfComparisons: 10: 1000 credits",
        "examples": [
          {
            "topic": "Superpowers",
            "numberOfComparisons": 6
          }
        ]
      },
      "PickOneInput": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "numberOfImages": {
            "type": "integer",
            "minimum": 3,
            "maximum": 10,
            "default": 5
          },
          "substyle": {
            "type": "string",
            "enum": [
              "Realistic",
              "Cartoony",
              "Anime",
              "Cyberpunk",
              "Retro",
              "Painting",
              "Comic"
            ],
            "default": "Realistic"
          },
          "music": {
            "type": "string",
            "maxLength": 255,
            "enum": [
              "",
              "none",
              "solitude",
              "assumptions",
              "passo-bem-solto",
              "calm-viral",
              "epic",
              "focused-viral",
              "happy",
              "mysterious-viral",
              "relaxing",
              "sad",
              "scary",
              "/ugc-sounds/classics/abba-sos.mp3",
              "/ugc-sounds/classics/adele-send-my-love.mp3",
              "/ugc-sounds/classics/blondie-heart-of-glass.mp3",
              "/ugc-sounds/classics/eminem-lose-yourself.mp3",
              "/ugc-sounds/classics/empire-of-the-sun-we-are-the-people.mp3",
              "/ugc-sounds/classics/hot-stuff.mp3",
              "/ugc-sounds/classics/marvin-gaye-aint-no-mountain-high-enough.mp3",
              "/ugc-sounds/classics/mia-paper-planes.mp3",
              "/ugc-sounds/classics/nelly-dilemma.mp3",
              "/ugc-sounds/classics/roxette-it-must-have-been-love.mp3",
              "/ugc-sounds/classics/shakira-la-tortura.mp3",
              "/ugc-sounds/classics/shania-twain-dont-impress-my-much.mp3",
              "/ugc-sounds/classics/shrek-song-all-star-smash-mouth.mp3",
              "/ugc-sounds/classics/the-beatles-here-comes-the-sun.mp3",
              "/ugc-sounds/classics/wheetus-teenage-dirtbag.mp3",
              "/ugc-sounds/moods/epic-neoclassical-music.mp3",
              "/ugc-sounds/moods/happy-music.mp3",
              "/ugc-sounds/moods/suspensful-music.mp3",
              "/ugc-sounds/moods/tension-music.mp3",
              "/ugc-sounds/moods/let-go-slowed.mp3",
              "/ugc-sounds/moods/let-go-guitar.mp3",
              "/ugc-sounds/movies/20th-century-studios-intro.mp3",
              "/ugc-sounds/movies/dirty-dancing.mp3",
              "/ugc-sounds/movies/footloose.mp3",
              "/ugc-sounds/movies/ghostbusters.mp3",
              "/ugc-sounds/movies/gladiator.mp3",
              "/ugc-sounds/movies/gta-san-andreas-theme.mp3",
              "/ugc-sounds/movies/james-bond.mp3",
              "/ugc-sounds/movies/married-life.mp3",
              "/ugc-sounds/movies/mission-impossible.mp3",
              "/ugc-sounds/movies/pirates-of-the-caribbean.mp3",
              "/ugc-sounds/movies/star-was-born.mp3",
              "/ugc-sounds/movies/taxi.mp3",
              "/ugc-sounds/movies/top-gun.mp3",
              "/ugc-sounds/viral/aesthetic.mp3",
              "/ugc-sounds/viral/anxiety.mp3",
              "/ugc-sounds/viral/artemas-i-like-the-way-you-kiss-me.mp3",
              "/ugc-sounds/viral/bad-bunny-dtmf.mp3",
              "/ugc-sounds/viral/beautiful-day.mp3",
              "/ugc-sounds/viral/benson-beautiful-things.mp3",
              "/ugc-sounds/viral/billie-eilish-birds-of-the-feather.mp3",
              "/ugc-sounds/viral/bounce-i-just-wanna-dance.mp3",
              "/ugc-sounds/viral/bounce-when-she-walk.mp3",
              "/ugc-sounds/viral/bruno-mars-apt.mp3",
              "/ugc-sounds/viral/chappel-roan-good-luck-baby.mp3",
              "/ugc-sounds/viral/con-calma-tik-tok-remix.mp3",
              "/ugc-sounds/viral/confidence-baby.mp3",
              "/ugc-sounds/viral/cooking-time.mp3",
              "/ugc-sounds/viral/danny-ocean-imaginate.mp3",
              "/ugc-sounds/viral/danza-kuduro.mp3",
              "/ugc-sounds/viral/disco-surf-curse.mp3",
              "/ugc-sounds/viral/djo-end-of-beginning.mp3",
              "/ugc-sounds/viral/este-o-este.mp3",
              "/ugc-sounds/viral/gracie-abrams-thats-so-true.mp3",
              "/ugc-sounds/viral/happy-cat.mp3",
              "/ugc-sounds/viral/hozier-too-sweet.mp3",
              "/ugc-sounds/viral/i-like-when-it-rains.mp3",
              "/ugc-sounds/viral/icona-pop-i-love-it-mashup.mp3",
              "/ugc-sounds/viral/inna-stereo-love.mp3",
              "/ugc-sounds/viral/kendrick-lamar-they-not-like-us.mp3",
              "/ugc-sounds/viral/kompa.mp3",
              "/ugc-sounds/viral/lady-gaga-die-with-the-smile.mp3",
              "/ugc-sounds/viral/lana-del-rey-when-you-know-you-know.mp3",
              "/ugc-sounds/viral/lola-young-messy.mp3",
              "/ugc-sounds/viral/madonna-like-a-prayer-choir-version.mp3",
              "/ugc-sounds/viral/mata-lloret-de-mar.mp3",
              "/ugc-sounds/viral/me-gustas-tu.mp3",
              "/ugc-sounds/viral/meow-meow-tiktok.mp3",
              "/ugc-sounds/viral/mr-probz-waves.mp3",
              "/ugc-sounds/viral/prayer-in-c.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-espresso.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-taste.mp3",
              "/ugc-sounds/viral/shaboozey-tipsy-bar-song.mp3",
              "/ugc-sounds/viral/the-weeknd-blinding-lights.mp3",
              "/ugc-sounds/viral/trendsetter.mp3",
              "/ugc-sounds/viral/volare-tik-tok-remix.mp3",
              "/background-music/solitude.mp3",
              "/background-music/assumptions.mp3",
              "/background-music/passo-bem-solto.mp3",
              "/background-music/calm-viral.mp3",
              "/background-music/epic.mp3",
              "/background-music/focused-viral.mp3",
              "/background-music/happy.mp3",
              "/background-music/mysterious-viral.mp3",
              "/background-music/relaxing.mp3",
              "/background-music/sad.mp3",
              "/background-music/scary.mp3"
            ],
            "default": "/ugc-sounds/moods/let-go-slowed.mp3"
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "9:16"
          },
          "animatedImages": {
            "type": "boolean",
            "default": false
          },
          "zoomEffect": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "topic"
        ],
        "additionalProperties": false,
        "description": "A topic in, a \"pick one\" grid video of AI images out. No narration.\n\nThere is no voice: Pick One has no narration.\n\nPrice rises with numberOfImages beyond the included ones, and per image when animatedImages is on.\n\nCost: 1000 credits for the example. Other inputs:\n- numberOfImages: 3: 1000 credits\n- numberOfImages: 10: 1500 credits\n- numberOfImages: 5, animatedImages: true: 3000 credits",
        "examples": [
          {
            "topic": "Pick a dream house",
            "numberOfImages": 5
          }
        ]
      },
      "FakeTextInput": {
        "type": "object",
        "properties": {
          "topic": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2000
          },
          "numberOfMessages": {
            "type": "integer",
            "minimum": 6,
            "maximum": 14,
            "default": 10
          },
          "historyMode": {
            "type": "string",
            "enum": [
              "auto",
              "always",
              "never"
            ],
            "default": "auto"
          },
          "backgroundCategory": {
            "type": "string",
            "enum": [
              "None",
              "Minecraft",
              "GTA V",
              "Subway Surfers",
              "Fortnite",
              "Satisfying"
            ],
            "default": "None"
          },
          "theme": {
            "type": "string",
            "enum": [
              "dark",
              "light"
            ],
            "default": "dark"
          },
          "music": {
            "type": "string",
            "maxLength": 255,
            "enum": [
              "",
              "none",
              "solitude",
              "assumptions",
              "passo-bem-solto",
              "calm-viral",
              "epic",
              "focused-viral",
              "happy",
              "mysterious-viral",
              "relaxing",
              "sad",
              "scary",
              "/ugc-sounds/classics/abba-sos.mp3",
              "/ugc-sounds/classics/adele-send-my-love.mp3",
              "/ugc-sounds/classics/blondie-heart-of-glass.mp3",
              "/ugc-sounds/classics/eminem-lose-yourself.mp3",
              "/ugc-sounds/classics/empire-of-the-sun-we-are-the-people.mp3",
              "/ugc-sounds/classics/hot-stuff.mp3",
              "/ugc-sounds/classics/marvin-gaye-aint-no-mountain-high-enough.mp3",
              "/ugc-sounds/classics/mia-paper-planes.mp3",
              "/ugc-sounds/classics/nelly-dilemma.mp3",
              "/ugc-sounds/classics/roxette-it-must-have-been-love.mp3",
              "/ugc-sounds/classics/shakira-la-tortura.mp3",
              "/ugc-sounds/classics/shania-twain-dont-impress-my-much.mp3",
              "/ugc-sounds/classics/shrek-song-all-star-smash-mouth.mp3",
              "/ugc-sounds/classics/the-beatles-here-comes-the-sun.mp3",
              "/ugc-sounds/classics/wheetus-teenage-dirtbag.mp3",
              "/ugc-sounds/moods/epic-neoclassical-music.mp3",
              "/ugc-sounds/moods/happy-music.mp3",
              "/ugc-sounds/moods/suspensful-music.mp3",
              "/ugc-sounds/moods/tension-music.mp3",
              "/ugc-sounds/moods/let-go-slowed.mp3",
              "/ugc-sounds/moods/let-go-guitar.mp3",
              "/ugc-sounds/movies/20th-century-studios-intro.mp3",
              "/ugc-sounds/movies/dirty-dancing.mp3",
              "/ugc-sounds/movies/footloose.mp3",
              "/ugc-sounds/movies/ghostbusters.mp3",
              "/ugc-sounds/movies/gladiator.mp3",
              "/ugc-sounds/movies/gta-san-andreas-theme.mp3",
              "/ugc-sounds/movies/james-bond.mp3",
              "/ugc-sounds/movies/married-life.mp3",
              "/ugc-sounds/movies/mission-impossible.mp3",
              "/ugc-sounds/movies/pirates-of-the-caribbean.mp3",
              "/ugc-sounds/movies/star-was-born.mp3",
              "/ugc-sounds/movies/taxi.mp3",
              "/ugc-sounds/movies/top-gun.mp3",
              "/ugc-sounds/viral/aesthetic.mp3",
              "/ugc-sounds/viral/anxiety.mp3",
              "/ugc-sounds/viral/artemas-i-like-the-way-you-kiss-me.mp3",
              "/ugc-sounds/viral/bad-bunny-dtmf.mp3",
              "/ugc-sounds/viral/beautiful-day.mp3",
              "/ugc-sounds/viral/benson-beautiful-things.mp3",
              "/ugc-sounds/viral/billie-eilish-birds-of-the-feather.mp3",
              "/ugc-sounds/viral/bounce-i-just-wanna-dance.mp3",
              "/ugc-sounds/viral/bounce-when-she-walk.mp3",
              "/ugc-sounds/viral/bruno-mars-apt.mp3",
              "/ugc-sounds/viral/chappel-roan-good-luck-baby.mp3",
              "/ugc-sounds/viral/con-calma-tik-tok-remix.mp3",
              "/ugc-sounds/viral/confidence-baby.mp3",
              "/ugc-sounds/viral/cooking-time.mp3",
              "/ugc-sounds/viral/danny-ocean-imaginate.mp3",
              "/ugc-sounds/viral/danza-kuduro.mp3",
              "/ugc-sounds/viral/disco-surf-curse.mp3",
              "/ugc-sounds/viral/djo-end-of-beginning.mp3",
              "/ugc-sounds/viral/este-o-este.mp3",
              "/ugc-sounds/viral/gracie-abrams-thats-so-true.mp3",
              "/ugc-sounds/viral/happy-cat.mp3",
              "/ugc-sounds/viral/hozier-too-sweet.mp3",
              "/ugc-sounds/viral/i-like-when-it-rains.mp3",
              "/ugc-sounds/viral/icona-pop-i-love-it-mashup.mp3",
              "/ugc-sounds/viral/inna-stereo-love.mp3",
              "/ugc-sounds/viral/kendrick-lamar-they-not-like-us.mp3",
              "/ugc-sounds/viral/kompa.mp3",
              "/ugc-sounds/viral/lady-gaga-die-with-the-smile.mp3",
              "/ugc-sounds/viral/lana-del-rey-when-you-know-you-know.mp3",
              "/ugc-sounds/viral/lola-young-messy.mp3",
              "/ugc-sounds/viral/madonna-like-a-prayer-choir-version.mp3",
              "/ugc-sounds/viral/mata-lloret-de-mar.mp3",
              "/ugc-sounds/viral/me-gustas-tu.mp3",
              "/ugc-sounds/viral/meow-meow-tiktok.mp3",
              "/ugc-sounds/viral/mr-probz-waves.mp3",
              "/ugc-sounds/viral/prayer-in-c.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-espresso.mp3",
              "/ugc-sounds/viral/sabrina-carpenter-taste.mp3",
              "/ugc-sounds/viral/shaboozey-tipsy-bar-song.mp3",
              "/ugc-sounds/viral/the-weeknd-blinding-lights.mp3",
              "/ugc-sounds/viral/trendsetter.mp3",
              "/ugc-sounds/viral/volare-tik-tok-remix.mp3",
              "/background-music/solitude.mp3",
              "/background-music/assumptions.mp3",
              "/background-music/passo-bem-solto.mp3",
              "/background-music/calm-viral.mp3",
              "/background-music/epic.mp3",
              "/background-music/focused-viral.mp3",
              "/background-music/happy.mp3",
              "/background-music/mysterious-viral.mp3",
              "/background-music/relaxing.mp3",
              "/background-music/sad.mp3",
              "/background-music/scary.mp3"
            ],
            "default": ""
          },
          "voiceThem": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{16,40}$",
            "default": "cgSgspJ2msm6clMCkdW9"
          },
          "voiceMe": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{16,40}$",
            "default": "TX3LPaxmHKxFdv7VOQHJ"
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "9:16"
          }
        },
        "required": [
          "topic"
        ],
        "additionalProperties": false,
        "description": "A topic in, a voiced text-message conversation video out.\n\nTwo voices: voiceThem (left, grey) and voiceMe (right, blue). The singular \"voice\" field is rejected.\n\nThe price does not change with numberOfMessages.\n\nCost: 1000 credits, whatever the input.",
        "examples": [
          {
            "topic": "My roommate ate my birthday cake",
            "theme": "dark"
          }
        ]
      },
      "UgcInput": {
        "type": "object",
        "properties": {
          "hook": {
            "type": "string",
            "minLength": 1,
            "maxLength": 300
          },
          "avatarSrc": {
            "type": "string",
            "enum": [
              "/ugc-templates/1.mp4",
              "/ugc-templates/2.mp4",
              "/ugc-templates/3.mp4",
              "/ugc-templates/4.mp4",
              "/ugc-templates/5.mp4",
              "/ugc-templates/6.mp4",
              "/ugc-templates/7.mp4",
              "/ugc-templates/8.mp4",
              "/ugc-templates/9.mp4",
              "/ugc-templates/10.mp4",
              "/ugc-templates/11.mp4",
              "/ugc-templates/12.mp4",
              "/ugc-templates/13.mp4",
              "/ugc-templates/14.mp4",
              "/ugc-templates/15.mp4",
              "/ugc-templates/16.mp4",
              "/ugc-templates/17.mp4",
              "/ugc-templates/18.mp4",
              "/ugc-templates/19.mp4",
              "/ugc-templates/20.mp4",
              "/ugc-templates/21.mp4",
              "/ugc-templates/22.mp4",
              "/ugc-templates/23.mp4",
              "/ugc-templates/24.mp4",
              "/ugc-templates/25.mp4",
              "/ugc-templates/26.mp4",
              "/ugc-templates/27.mp4",
              "/ugc-templates/28.mp4",
              "/ugc-templates/29.mp4",
              "/ugc-templates/30.mp4",
              "/ugc-templates/31.mp4",
              "/ugc-templates/32.mp4",
              "/ugc-templates/33.mp4",
              "/ugc-templates/34.mp4",
              "/ugc-templates/35.mp4",
              "/ugc-templates/36.mp4",
              "/ugc-templates/37.mp4",
              "/ugc-templates/38.mp4",
              "/ugc-templates/39.mp4",
              "/ugc-templates/40.mp4",
              "/ugc-templates/41.mp4",
              "/ugc-templates/42.mp4",
              "/ugc-templates/43.mp4",
              "/ugc-templates/44.mp4",
              "/ugc-templates/45.mp4",
              "/ugc-templates/46.mp4",
              "/ugc-templates/47.mp4",
              "/ugc-templates/48.mp4",
              "/ugc-templates/49.mp4",
              "/ugc-templates/50.mp4",
              "/ugc-templates/51.mp4",
              "/ugc-templates/52.mp4",
              "/ugc-templates/53.mp4",
              "/ugc-templates/54.mp4",
              "/ugc-templates/55.mp4",
              "/ugc-templates/56.mp4",
              "/ugc-templates/57.mp4",
              "/ugc-templates/58.mp4"
            ],
            "default": "/ugc-templates/1.mp4"
          },
          "demoSrc": {
            "type": "string",
            "maxLength": 2048,
            "default": ""
          },
          "soundId": {
            "type": "string",
            "enum": [
              "none",
              "abba-sos",
              "adele-send-my-love",
              "blondie-heart-of-glass",
              "eminem-lose-yourself",
              "empire-of-the-sun",
              "hot-stuff",
              "marvin-gaye",
              "mia-paper-planes",
              "nelly-dilemma",
              "roxette-love",
              "shakira-tortura",
              "shania-dont-impress",
              "shrek-all-star",
              "beatles-here-comes",
              "wheatus-teenage-dirtbag",
              "epic-neoclassical",
              "happy-music",
              "suspenseful-music",
              "tension-music",
              "let-go-slowed",
              "let-go-guitar",
              "20th-century-intro",
              "dirty-dancing",
              "footloose",
              "ghostbusters",
              "gladiator",
              "gta-theme",
              "james-bond",
              "married-life",
              "mission-impossible",
              "pirates-caribbean",
              "star-was-born",
              "taxi",
              "top-gun",
              "aesthetic",
              "anxiety",
              "artemas",
              "bad-bunny",
              "beautiful-day",
              "benson-beautiful-things",
              "billie-eilish",
              "bounce-i-just-wanna-dance",
              "bounce-when-she-walk",
              "bruno-mars",
              "chappel-roan",
              "con-calma",
              "confidence-baby",
              "cooking-time",
              "danny-ocean",
              "danza-kuduro",
              "disco-surf",
              "djo-end-of-beginning",
              "este-o-este",
              "gracie-abrams",
              "happy-cat",
              "hozier",
              "i-like-when-it-rains",
              "icona-pop",
              "inna-stereo-love",
              "kendrick-lamar",
              "kompa",
              "lady-gaga",
              "lana-del-rey",
              "lola-young",
              "madonna",
              "mata-lloret",
              "me-gustas-tu",
              "meow-meow",
              "mr-probz",
              "prayer-in-c",
              "sabrina-carpenter-espresso",
              "sabrina-carpenter-taste",
              "shaboozey",
              "the-weeknd-blinding-lights",
              "trendsetter",
              "volare-tiktok"
            ],
            "default": "none"
          },
          "hookAlignment": {
            "type": "string",
            "enum": [
              "start",
              "center",
              "end"
            ],
            "default": "center"
          },
          "hookConfig": {
            "type": "object",
            "properties": {
              "fontName": {
                "type": "string",
                "enum": [
                  "Luckiest Guy",
                  "Carter One",
                  "Oooh Baby",
                  "Bungee",
                  "Titan One",
                  "Bangers",
                  "Creepster",
                  "Rubik Glitch",
                  "Outfit",
                  "Poiret One",
                  "Poppins",
                  "TikTokDisplayMedium",
                  "Anton",
                  "Bebas Neue",
                  "Archivo Black",
                  "Oswald",
                  "Staatliches",
                  "Alfa Slab One",
                  "Ultra",
                  "Russo One",
                  "Lilita One",
                  "Fredoka",
                  "Concert One",
                  "Righteous",
                  "Sigmar One",
                  "Rowdies",
                  "Chewy",
                  "Montserrat",
                  "Inter",
                  "Nunito",
                  "Kanit",
                  "Permanent Marker",
                  "Pacifico",
                  "Lobster",
                  "Caveat",
                  "Press Start 2P",
                  "Monoton",
                  "Orbitron",
                  "Black Ops One",
                  "Special Elite"
                ],
                "default": "TikTokDisplayMedium"
              },
              "fontWeight": {
                "type": "string",
                "enum": [
                  "bold",
                  "normal"
                ],
                "default": "bold"
              },
              "textColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 255,
                  "blue": 255
                }
              },
              "borderColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "default": 10
              },
              "highlightColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "backgroundColor": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "red": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "green": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "blue": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      }
                    },
                    "required": [
                      "red",
                      "green",
                      "blue"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "glowing": {
                "type": "boolean",
                "default": false
              },
              "uppercase": {
                "type": "boolean",
                "default": false
              },
              "fontSize": {
                "type": "number",
                "minimum": 20,
                "maximum": 200
              }
            },
            "additionalProperties": false,
            "default": {
              "fontName": "TikTokDisplayMedium",
              "fontWeight": "bold",
              "textColor": {
                "red": 255,
                "green": 255,
                "blue": 255
              },
              "borderColor": {
                "red": 0,
                "green": 0,
                "blue": 0
              },
              "borderWidth": 10,
              "highlightColor": {
                "red": 0,
                "green": 0,
                "blue": 0
              },
              "backgroundColor": null,
              "glowing": false,
              "uppercase": false
            }
          }
        },
        "required": [
          "hook"
        ],
        "additionalProperties": false,
        "description": "A hook line in, an avatar reaction clip followed by your product demo out.\n\nAlways 1080x1920: there is no format.\n\ndemoSrc is fetched by the renderer, so it must be a public https URL. Leave it empty for a reaction-only clip.\n\nNo script writing and no voiceover, so this is the fastest type.\n\nCost: 1000 credits, whatever the input.",
        "examples": [
          {
            "hook": "I tried this for a week and I am never going back",
            "demoSrc": ""
          }
        ]
      },
      "AiVideoInput": {
        "type": "object",
        "properties": {
          "model": {
            "type": "string",
            "enum": [
              "Google Veo 3.1 Fast",
              "Google Veo 3.1",
              "Google Veo 3.1 Lite",
              "Kling 3.0",
              "Kling 2.6",
              "Kling 2.5 Turbo Pro",
              "Seedance 2.0",
              "Seedance 2.0 Fast",
              "Seedance 1 Pro",
              "Seedance 1 Pro Fast",
              "Seedance 1 Lite",
              "Hailuo 2.3",
              "Hailuo 2.3 Fast",
              "Hailuo 02",
              "Hailuo 02 Fast",
              "Runway Gen-4.5",
              "Grok Imagine Video",
              "Grok Imagine Video 1.5",
              "Vidu Q3 Pro",
              "Vidu Q3 Turbo",
              "PixVerse v6",
              "PixVerse v5",
              "Luma Ray 3.2",
              "Wan 3.0",
              "Wan Video 2.2 T2V Fast",
              "Wan Video 2.2 I2V Fast",
              "LTX-2.3 Pro",
              "LTX-2.5 Fast"
            ]
          },
          "mode": {
            "type": "string",
            "enum": [
              "text_to_video",
              "image_to_video"
            ]
          },
          "textPrompt": {
            "type": "string",
            "minLength": 1,
            "maxLength": 5000
          },
          "imageUrl": {
            "type": "string",
            "maxLength": 2048
          },
          "duration": {
            "type": "integer",
            "exclusiveMinimum": 0
          },
          "resolution": {
            "type": "string",
            "maxLength": 32
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ]
          }
        },
        "required": [
          "model",
          "mode",
          "textPrompt",
          "duration",
          "resolution"
        ],
        "additionalProperties": false,
        "description": "A prompt (and optionally a source image) in, a clip from a text-to-video or image-to-video model out.\n\nduration, resolution and format must each be in the chosen model's own lists. Not every resolution is sold at every duration. GET /v1/types and the table in the spec list every combination with its price.\n\nimageUrl is required for image_to_video and rejected for text_to_video. It is fetched by the model host, so it must be a public https URL.\n\nCost: the price of the model/resolution/duration cell, 400 to 18000 credits. Every cell is in the table below and in GET /types.\n\n| model | modes | formats | credits by resolution and duration |\n|---|---|---|---|\n| Google Veo 3.1 Fast | text_to_video, image_to_video | 9:16, 16:9 | 720p: 4s 2400, 6s 3600, 8s 4800; 1080p: 4s 2400, 6s 3600, 8s 4800 |\n| Google Veo 3.1 | text_to_video, image_to_video | 9:16, 16:9 | 720p: 4s 6400, 6s 9600, 8s 12800; 1080p: 4s 6400, 6s 9600, 8s 12800 |\n| Google Veo 3.1 Lite | text_to_video, image_to_video | 9:16, 16:9 | 720p: 4s 800, 6s 1200, 8s 1600; 1080p: 8s 2560 |\n| Kling 3.0 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | standard: 5s 3360, 10s 6720; pro: 5s 4480, 10s 8960 |\n| Kling 2.6 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 1080p: 5s 2800, 10s 5600 |\n| Kling 2.5 Turbo Pro | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 1080p: 5s 1400, 10s 2800 |\n| Seedance 2.0 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 3600, 10s 7200; 1080p: 5s 9000, 10s 18000 |\n| Seedance 2.0 Fast | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 3000, 10s 6000; 480p: 5s 1400, 10s 2800 |\n| Seedance 1 Pro | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1200, 10s 2400; 1080p: 5s 3000, 10s 6000 |\n| Seedance 1 Pro Fast | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 500, 10s 1000; 1080p: 5s 1200, 10s 2400 |\n| Seedance 1 Lite | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 720, 10s 1440; 1080p: 5s 1440, 10s 2880 |\n| Hailuo 2.3 | text_to_video, image_to_video | 16:9 | 768p: 6s 1120, 10s 2240; 1080p: 6s 1960 |\n| Hailuo 2.3 Fast | image_to_video | 16:9 | 768p: 6s 760, 10s 1280; 1080p: 6s 1320 |\n| Hailuo 02 | text_to_video, image_to_video | 16:9 | 768p: 6s 1080, 10s 1800; 1080p: 6s 1920 |\n| Hailuo 02 Fast | image_to_video | 16:9 | 512p: 6s 400, 10s 600 |\n| Runway Gen-4.5 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 2400, 10s 4800 |\n| Grok Imagine Video | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1000, 10s 2000 |\n| Grok Imagine Video 1.5 | image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1600, 10s 3200 |\n| Vidu Q3 Pro | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 3000, 10s 6000; 1080p: 5s 3200, 10s 6400 |\n| Vidu Q3 Turbo | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1200, 10s 2400; 1080p: 5s 1600, 10s 3200 |\n| PixVerse v6 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1800, 8s 2880, 10s 3600; 1080p: 5s 3600, 8s 5760, 10s 7200 |\n| PixVerse v5 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1600, 8s 3200; 1080p: 5s 3200, 8s 5120 |\n| Luma Ray 3.2 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1200; 1080p: 5s 4800 |\n| Wan 3.0 | text_to_video, image_to_video | 9:16, 16:9, 1:1 | 720p: 5s 1000, 10s 2000; 1080p: 5s 2000, 10s 4000 |\n| Wan Video 2.2 T2V Fast | text_to_video | 9:16, 16:9 | 720p: 5s 400 |\n| Wan Video 2.2 I2V Fast | image_to_video | 9:16, 16:9 | 720p: 5s 400 |\n| LTX-2.3 Pro | text_to_video, image_to_video | 9:16, 16:9 | 1080p: 6s 1920, 8s 2560, 10s 3200 |\n| LTX-2.5 Fast | text_to_video, image_to_video | 9:16, 16:9 | 720p: 6s 720, 8s 960, 10s 1200; 1080p: 6s 1440, 8s 1920, 10s 2400 |",
        "examples": [
          {
            "model": "Google Veo 3.1 Fast",
            "mode": "text_to_video",
            "textPrompt": "A golden retriever surfing a wave at sunset, cinematic",
            "duration": 4,
            "resolution": "720p",
            "format": "9:16"
          }
        ]
      },
      "YtClipsInput": {
        "type": "object",
        "properties": {
          "youtubeUrl": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          },
          "clipCount": {
            "type": "integer",
            "minimum": 1,
            "maximum": 8,
            "default": 5
          },
          "captionStyle": {
            "type": "string",
            "enum": [
              "None",
              "YouTuber",
              "Supreme",
              "Barbie",
              "Neon",
              "Glow",
              "Thumbnail",
              "Glitch",
              "Creepy",
              "TikToker",
              "Instagramer",
              "Classic 1",
              "Classic 2",
              "Custom"
            ],
            "default": "YouTuber"
          },
          "customCaptions": {
            "type": "object",
            "properties": {
              "fontName": {
                "type": "string",
                "enum": [
                  "Luckiest Guy",
                  "Carter One",
                  "Oooh Baby",
                  "Bungee",
                  "Titan One",
                  "Bangers",
                  "Creepster",
                  "Rubik Glitch",
                  "Outfit",
                  "Poiret One",
                  "Poppins",
                  "TikTokDisplayMedium",
                  "Anton",
                  "Bebas Neue",
                  "Archivo Black",
                  "Oswald",
                  "Staatliches",
                  "Alfa Slab One",
                  "Ultra",
                  "Russo One",
                  "Lilita One",
                  "Fredoka",
                  "Concert One",
                  "Righteous",
                  "Sigmar One",
                  "Rowdies",
                  "Chewy",
                  "Montserrat",
                  "Inter",
                  "Nunito",
                  "Kanit",
                  "Permanent Marker",
                  "Pacifico",
                  "Lobster",
                  "Caveat",
                  "Press Start 2P",
                  "Monoton",
                  "Orbitron",
                  "Black Ops One",
                  "Special Elite"
                ],
                "default": "Luckiest Guy"
              },
              "fontWeight": {
                "type": "string",
                "enum": [
                  "bold",
                  "normal"
                ],
                "default": "normal"
              },
              "textColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 255,
                  "blue": 255
                }
              },
              "borderColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "default": 20
              },
              "highlightColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 255,
                  "green": 210,
                  "blue": 25
                }
              },
              "backgroundColor": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "red": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "green": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "blue": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      }
                    },
                    "required": [
                      "red",
                      "green",
                      "blue"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": null
              },
              "glowing": {
                "type": "boolean",
                "default": false
              },
              "uppercase": {
                "type": "boolean",
                "default": true
              },
              "fontSize": {
                "type": "number",
                "minimum": 20,
                "maximum": 200
              }
            },
            "additionalProperties": false
          },
          "format": {
            "type": "string",
            "enum": [
              "9:16",
              "16:9",
              "1:1"
            ],
            "default": "9:16"
          },
          "enableHook": {
            "type": "boolean",
            "default": true
          },
          "hookSeconds": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 2,
                "maximum": 10
              },
              {
                "type": "string",
                "const": "full"
              }
            ],
            "default": 5
          },
          "hookStyle": {
            "type": "object",
            "properties": {
              "fontName": {
                "type": "string",
                "enum": [
                  "Luckiest Guy",
                  "Carter One",
                  "Oooh Baby",
                  "Bungee",
                  "Titan One",
                  "Bangers",
                  "Creepster",
                  "Rubik Glitch",
                  "Outfit",
                  "Poiret One",
                  "Poppins",
                  "TikTokDisplayMedium",
                  "Anton",
                  "Bebas Neue",
                  "Archivo Black",
                  "Oswald",
                  "Staatliches",
                  "Alfa Slab One",
                  "Ultra",
                  "Russo One",
                  "Lilita One",
                  "Fredoka",
                  "Concert One",
                  "Righteous",
                  "Sigmar One",
                  "Rowdies",
                  "Chewy",
                  "Montserrat",
                  "Inter",
                  "Nunito",
                  "Kanit",
                  "Permanent Marker",
                  "Pacifico",
                  "Lobster",
                  "Caveat",
                  "Press Start 2P",
                  "Monoton",
                  "Orbitron",
                  "Black Ops One",
                  "Special Elite"
                ],
                "default": "Outfit"
              },
              "fontWeight": {
                "type": "string",
                "enum": [
                  "bold",
                  "normal"
                ],
                "default": "bold"
              },
              "textColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "borderWidth": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "default": 0
              },
              "highlightColor": {
                "type": "object",
                "properties": {
                  "red": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "green": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  },
                  "blue": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 255
                  }
                },
                "required": [
                  "red",
                  "green",
                  "blue"
                ],
                "additionalProperties": false,
                "default": {
                  "red": 0,
                  "green": 0,
                  "blue": 0
                }
              },
              "backgroundColor": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "red": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "green": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      },
                      "blue": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 255
                      }
                    },
                    "required": [
                      "red",
                      "green",
                      "blue"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "default": {
                  "red": 255,
                  "green": 255,
                  "blue": 255
                }
              },
              "glowing": {
                "type": "boolean",
                "default": false
              },
              "uppercase": {
                "type": "boolean",
                "default": false
              },
              "fontSize": {
                "type": "number",
                "minimum": 20,
                "maximum": 200,
                "default": 65
              }
            },
            "additionalProperties": false,
            "default": {
              "fontName": "Outfit",
              "fontWeight": "bold",
              "textColor": {
                "red": 0,
                "green": 0,
                "blue": 0
              },
              "borderColor": {
                "red": 0,
                "green": 0,
                "blue": 0
              },
              "borderWidth": 0,
              "highlightColor": {
                "red": 0,
                "green": 0,
                "blue": 0
              },
              "backgroundColor": {
                "red": 255,
                "green": 255,
                "blue": 255
              },
              "glowing": false,
              "uppercase": false,
              "fontSize": 65
            }
          },
          "swapPanels": {
            "type": "boolean",
            "default": true
          },
          "clipDuration": {
            "type": "string",
            "enum": [
              "Under 30 seconds",
              "30 to 45 seconds",
              "45 to 60 seconds",
              "60 to 90 seconds"
            ],
            "default": "30 to 45 seconds"
          },
          "captionSize": {
            "type": "string",
            "enum": [
              "Small",
              "Medium",
              "Large"
            ],
            "default": "Medium"
          },
          "captionPosition": {
            "type": "string",
            "enum": [
              "Top",
              "Center",
              "Bottom"
            ],
            "default": "Bottom"
          },
          "videoFit": {
            "type": "string",
            "enum": [
              "Cover (crop to fill)",
              "Contain (show full video)"
            ],
            "default": "Contain (show full video)"
          },
          "splitScreen": {
            "type": "boolean",
            "default": false
          },
          "splitScreenBackground": {
            "type": "string",
            "enum": [
              "Random",
              "Minecraft",
              "GTA V",
              "Subway Surfers",
              "Fortnite",
              "Satisfying"
            ],
            "default": "Random"
          }
        },
        "required": [
          "youtubeUrl"
        ],
        "additionalProperties": false,
        "description": "A YouTube URL in, several captioned vertical clips cut from it out.\n\nReturns several videos: read clipUrls. url is always null for this type.\n\nPriced for a fixed-length source video plus a per-clip charge, whatever the real length; the price quoted at accept is final.\n\nLimited to a small number of API jobs per day across all customers while in early access; over the limit is a 429 CAPACITY with nothing charged.\n\nCost: 6500 credits for the example. Other inputs:\n- clipCount: 1: 4500 credits\n- clipCount: 8: 8000 credits",
        "examples": [
          {
            "youtubeUrl": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
            "clipCount": 5
          }
        ]
      },
      "CreateAiSlideshowRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "ai_slideshow"
          },
          "input": {
            "$ref": "#/components/schemas/AiSlideshowInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateRedditStoriesRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "reddit_stories"
          },
          "input": {
            "$ref": "#/components/schemas/RedditStoriesInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateWouldYouRatherRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "would_you_rather"
          },
          "input": {
            "$ref": "#/components/schemas/WouldYouRatherInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreatePickOneRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "pick_one"
          },
          "input": {
            "$ref": "#/components/schemas/PickOneInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateFakeTextRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "fake_text"
          },
          "input": {
            "$ref": "#/components/schemas/FakeTextInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateUgcRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "ugc"
          },
          "input": {
            "$ref": "#/components/schemas/UgcInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateAiVideoRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "ai_video"
          },
          "input": {
            "$ref": "#/components/schemas/AiVideoInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateYtClipsRequest": {
        "type": "object",
        "required": [
          "type",
          "input"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "type": "string",
            "const": "yt_clips"
          },
          "input": {
            "$ref": "#/components/schemas/YtClipsInput"
          },
          "webhookUrl": {
            "$ref": "#/components/schemas/WebhookUrl"
          },
          "idempotencyKey": {
            "$ref": "#/components/schemas/IdempotencyKey"
          }
        }
      },
      "CreateVideoRequest": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/CreateAiSlideshowRequest"
          },
          {
            "$ref": "#/components/schemas/CreateRedditStoriesRequest"
          },
          {
            "$ref": "#/components/schemas/CreateWouldYouRatherRequest"
          },
          {
            "$ref": "#/components/schemas/CreatePickOneRequest"
          },
          {
            "$ref": "#/components/schemas/CreateFakeTextRequest"
          },
          {
            "$ref": "#/components/schemas/CreateUgcRequest"
          },
          {
            "$ref": "#/components/schemas/CreateAiVideoRequest"
          },
          {
            "$ref": "#/components/schemas/CreateYtClipsRequest"
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ai_slideshow": "#/components/schemas/CreateAiSlideshowRequest",
            "reddit_stories": "#/components/schemas/CreateRedditStoriesRequest",
            "would_you_rather": "#/components/schemas/CreateWouldYouRatherRequest",
            "pick_one": "#/components/schemas/CreatePickOneRequest",
            "fake_text": "#/components/schemas/CreateFakeTextRequest",
            "ugc": "#/components/schemas/CreateUgcRequest",
            "ai_video": "#/components/schemas/CreateAiVideoRequest",
            "yt_clips": "#/components/schemas/CreateYtClipsRequest"
          }
        },
        "description": "One variant per type, chosen by type. The envelope and every input are strict: an unknown property is a 400 naming it."
      }
    }
  }
}