Skip to main content

Overview

Recoup’s content API gives you seven independent primitives for generating and editing visual content. Each primitive does one thing well. You orchestrate them. Every primitive works without a template. Pass your own prompt, reference images, and parameters directly. Templates are optional shortcuts — opinionated creative recipes that pre-fill parameters for a specific look.

Primitives

There is also POST /api/content/create which runs the full pipeline in one call — use it when you want a video without creative control over each step.

How It Works

Without a template (malleable mode)

Pass your own parameters directly to any primitive. Maximum creative control.

With a template (shortcut mode)

Pass a template ID and the primitive fills in prompts, reference images, and style rules automatically. You can still override any parameter.
Use GET /api/content/templates to see available templates with descriptions.

Templates

A template is a complete creative recipe — it defines what a piece of content looks like across every primitive:
  • Image config: prompt, reference images, style rules (camera, lighting, composition)
  • Video config: mood variations, movement descriptions
  • Caption config: tone, formatting rules, example captions
  • Edit config: crop ratio, text overlay style, audio mixing
Templates are optional. They save time by pre-filling parameters with curated defaults. When you see customers repeatedly creating the same kind of content, that pattern becomes a template.

Override priority

When using a template, your explicit parameters always win:
  1. Your params — highest priority. What you pass overrides everything.
  2. Artist context — if the artist has a style guide, it personalizes the template.
  3. Template defaults — lowest priority. The recipe’s built-in values.

Video Modes

The video primitive supports 6 generation modes: Set mode explicitly, or omit it and the API infers the mode from the inputs you provide.

Iteration

Each primitive is independent. Redo any step without rerunning the whole pipeline:
  • Bad image? Regenerate with a different prompt or reference
  • Caption too long? Regenerate with length: "short"
  • Video glitchy? Analyze it, then regenerate with adjusted params
  • Clip too short? Use extend mode to continue it
  • Low quality? Upscale the image or video
  • Everything good but wrong caption? Just re-run the edit step

Content Agent (Slack Bot)

The Recoup Content Agent is a Slack bot that generates social-ready artist videos on @mention. It plugs into the content creation pipeline and delivers results directly in your Slack thread.

@Mention Syntax

Examples

Basic — single video with default template:
Custom template:
Batch with lipsync:

Architecture

Data Flow

  1. Slack eventPOST /api/content-agent/slack handles the webhook
  2. Mention handler parses the command, calls GET /api/content/validate to check artist readiness
  3. Content creation triggered via POST /api/content/create — returns runIds
  4. Poll task (poll-content-run) monitors the Trigger.dev runs every 30 seconds (up to 30 minutes)
  5. CallbackPOST /api/content-agent/callback receives results and posts video URLs back to the Slack thread

Setup

1. Create a Slack App

  1. Go to api.slack.com/apps and create a new app
  2. Under OAuth & Permissions, add bot scopes:
    • chat:write — post messages
    • app_mentions:read — receive @mention events
  3. Under Event Subscriptions:
    • Enable events
    • Set the request URL to https://api.recoupable.dev/api/content-agent/slack
    • Subscribe to app_mention bot event
  4. Install the app to your workspace

2. Configure Environment Variables

3. Verify

Mention the bot in any Slack channel where it’s been added:
You should see:
  1. An immediate acknowledgment message
  2. A video URL reply in the thread after ~5-10 minutes

Troubleshooting