Skip to main content
POST
/
automation
/
publish-clip
Publish Clip
curl --request POST \
  --url https://public.reap.video/api/v1/automation/publish-clip \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "projectId": "<string>",
  "clipId": "<string>",
  "integrations": [
    "<string>"
  ],
  "title": "<string>",
  "description": "<string>",
  "tags": [
    "<string>"
  ],
  "platformSettings": {
    "youtube": {
      "privacy": "public",
      "embeddable": true,
      "publicStats": true,
      "madeForKids": false
    },
    "tiktok": {
      "privacy": "public",
      "disableComments": false,
      "disableDuet": false,
      "disableStitch": false,
      "brandContent": false,
      "brandOrganic": false
    },
    "instagram": {
      "shareToFeed": false
    },
    "linkedin": {
      "privacy": "public"
    }
  }
}
'
{
  "id": "<string>",
  "projectId": "<string>",
  "clipId": "<string>",
  "platforms": [
    "<string>"
  ],
  "successPlatforms": [
    "<string>"
  ],
  "failedPlatforms": [
    "<string>"
  ],
  "integrations": [
    "<string>"
  ],
  "title": "<string>",
  "description": "<string>",
  "tags": [
    "<string>"
  ],
  "status": "processing",
  "scheduleType": "scheduled",
  "scheduleDate": 123,
  "publishDate": 123,
  "urls": {},
  "platformSettings": {
    "youtube": {
      "privacy": "public",
      "embeddable": true,
      "publicStats": true,
      "madeForKids": false
    },
    "tiktok": {
      "privacy": "public",
      "disableComments": false,
      "disableDuet": false,
      "disableStitch": false,
      "brandContent": false,
      "brandOrganic": false
    },
    "instagram": {
      "shareToFeed": false
    },
    "linkedin": {
      "privacy": "public"
    }
  },
  "createdAt": 123,
  "updatedAt": 123
}

Overview

Publish a completed clip directly to one or more social media platforms. The clip must have a completed status before it can be published. Use Get Integrations to retrieve your available integration IDs.

Rate Limiting

This endpoint is rate limited to 10 requests per minute per API key.
Only completed clips can be published. Get integration IDs from the Get Integrations endpoint. The platformSettings object lets you configure per-platform settings — only include platforms you’re publishing to.

Response

id
string
Unique post identifier
projectId
string
ID of the parent project
clipId
string
ID of the published clip
platforms
array
Array of target platform names
successPlatforms
array
Platforms where publishing succeeded
failedPlatforms
array
Platforms where publishing failed
integrations
array
Array of integration IDs used for publishing
title
string
Post title
description
string
Post description
tags
array
Array of tags applied to the post
status
string
Current post status
  • processing - Post is being published
  • completed - Published successfully to all platforms
  • failed - Publishing failed on all platforms
  • unresolved - Partial success (some platforms failed)
scheduleType
string
Type of scheduling (immediate or scheduled)
scheduleDate
integer
Scheduled publish date as Unix timestamp (null for immediate)
publishDate
integer
Actual publish date as Unix timestamp
urls
object
Published URLs per platform (populated after successful publishing)
platformSettings
object
Per-platform configuration
createdAt
integer
Unix timestamp when the post was created
updatedAt
integer
Unix timestamp when the post was last updated

Example Request

curl -X POST "https://public.reap.video/api/v1/automation/publish-clip" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "65f1a2b3c4d5e6f7a8b9c0d2",
    "clipId": "65f1a2b3c4d5e6f7a8b9c0d4",
    "integrations": ["66a1b2c3d4e5f6a7b8c9d0e1"],
    "title": "The Future of AI",
    "description": "Exploring how AI will transform our daily lives",
    "tags": ["ai", "technology", "future"],
    "platformSettings": {
      "youtube": {
        "privacy": "private",
        "embeddable": true,
        "publicStats": true,
        "madeForKids": false
      }
    }
  }'

Example Response

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
projectId
string
required

ID of the project containing the clip

clipId
string
required

ID of the clip to publish

integrations
string[]
required

List of integration IDs to publish to

title
string | null

Post title (defaults to clip title)

description
string | null

Post description

tags
string[] | null

Post tags (max 10)

platformSettings
object

Per-platform publishing settings

Response

200 - application/json

Successful response

id
string
projectId
string | null
clipId
string | null
platforms
string[]
successPlatforms
string[]
failedPlatforms
string[]
integrations
string[]
title
string | null
description
string | null
tags
string[] | null
status
enum<string>
Available options:
processing,
draft,
completed,
failed,
cancelled,
unresolved
scheduleType
enum<string>
Available options:
scheduled,
immediate
scheduleDate
integer
publishDate
integer
urls
object

Social media URLs keyed by integration ID

platformSettings
object
createdAt
integer
updatedAt
integer