Recoup

Get started with Recoup.

API REFERENCE

Generate lipsync (release pending)

On this page
POST/api/content/lipsync

Available after the coordinated API and Tasks release for mono#348. Not verified on the deployed baseline. Fixed fal-ai/ltx-2-19b/audio-to-video; estimated rounded output megapixels at $0.0018 per unit, actual provider units used when supplied. The worker verifies an audio stream before final composition; presence of audio is not proof of perceptual lip alignment.

Authentication

x-api-key in header

bearerAuth bearer

Request

cURL
curl --request POST \
  --url 'https://api.recoupable.dev/api/content/lipsync' \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "prompt": "The artist performs the supplied vocal phrase.",
  "image_url": "https://example.com/artist.png",
  "audio_url": "https://example.com/selected-clip.mp3",
  "duration": 15
}'

Try it

Fill in the fields, send the request from your browser, and read the live response. The curl below updates as you type.

Kept in this browser tab only and cleared when it closes.

cURL for this request
curl --request POST \
  --url 'https://recoup-api.vercel.app/api/content/lipsync' \
  --header 'Content-Type: application/json' \
  --data '{
  "prompt": "The artist performs the supplied vocal phrase.",
  "image_url": "https://example.com/artist.png",
  "audio_url": "https://example.com/selected-clip.mp3",
  "duration": 15
}'

Request body required

application/json

promptstringrequired

minLength: 1 · maxLength: 50000

image_urlstringrequired

format: uri

audio_urlstringrequired

Public URL of the selected song window, not the full track.

format: uri

durationintegerrequired

minimum: 5 · maximum: 19

seedinteger

Responses

200Video generated successfully

application/json

videoUrlstringrequired

URL of the generated video

format: uri

400Validation failed — invalid or missing request body fields

application/json

errorstringrequired

Error message describing what went wrong

401Unauthorized — invalid or missing API key

application/json

errorstringrequired

Error message describing what went wrong

402Insufficient credits before generation. The fixed LTX audio-to-video model costs $0.0018 per rounded output megapixel (1,800 micro-dollar credits per unit); duration and frame dimensions determine the preflight estimate.

application/json

errorstringrequired

Error message describing what went wrong

429Per-account generation rate exceeded (30 requests/minute). Retry-After states seconds to wait.

No response body schema is specified.

500Internal server error

application/json

errorstringrequired

Error message describing what went wrong

502Provider returned no usable video; no Recoup generation charge is recorded.

No response body schema is specified.

503Shared generation throttling unavailable; no provider generation starts.

No response body schema is specified.

Full specification

Download the OpenAPI file for complete schemas, constraints, and examples.

Download content.json
View operation source
json
{
  "summary": "Generate audio-driven video (release pending)",
  "description": "Available after the coordinated API and Tasks release for mono#348. Not verified on the deployed baseline. Fixed fal-ai/ltx-2-19b/audio-to-video; estimated rounded output megapixels at $0.0018 per unit, actual provider units used when supplied. The worker verifies an audio stream before final composition; presence of audio is not proof of perceptual lip alignment.",
  "operationId": "createContentLipsync",
  "tags": [
    "Content"
  ],
  "security": [
    {
      "apiKeyAuth": []
    },
    {
      "bearerAuth": []
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "$ref": "#/components/schemas/ContentCreateLipsyncRequest"
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "Video generated successfully",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ContentCreateVideoResponse"
          }
        }
      }
    },
    "400": {
      "description": "Validation failed — invalid or missing request body fields",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ContentErrorResponse"
          }
        }
      }
    },
    "401": {
      "description": "Unauthorized — invalid or missing API key",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ContentErrorResponse"
          }
        }
      }
    },
    "402": {
      "description": "Insufficient credits before generation. The fixed LTX audio-to-video model costs $0.0018 per rounded output megapixel (1,800 micro-dollar credits per unit); duration and frame dimensions determine the preflight estimate.",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ContentErrorResponse"
          }
        }
      }
    },
    "429": {
      "description": "Per-account generation rate exceeded (30 requests/minute). Retry-After states seconds to wait."
    },
    "500": {
      "description": "Internal server error",
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/ContentErrorResponse"
          }
        }
      }
    },
    "502": {
      "description": "Provider returned no usable video; no Recoup generation charge is recorded."
    },
    "503": {
      "description": "Shared generation throttling unavailable; no provider generation starts."
    }
  }
}