Skip to main content
POST
/
update-clip
const response = await fetch("https://api.joinoverlap.com/update-clip", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.OVERLAP_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    companyId: process.env.OVERLAP_COMPANY_ID,
    clipId: "clip-id-from-results",
    updates: {
      title: "Product Launch Highlights",
      subtitleConfig: {
        subtitleY: 50
      }
    }
  })
});

const data = await response.json();

Endpoint

POST https://api.joinoverlap.com/update-clip
Use this endpoint after a user reviews or edits a clip. It updates the saved clip document only; it does not render a new video.

Authentication

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Request Body

{
  "companyId": "your-company-id",
  "clipId": "clip-id-from-results",
  "updates": {
    "title": "Product Launch Highlights",
    "bio": "Key moments from the product launch webinar.",
    "subtitleConfig": {
      "subtitleY": 50
    }
  },
  "merge": true
}
Send editable fields inside updates. For convenience, editable fields can also be sent at the top level beside companyId and clipId. When merge is true or omitted, nested config objects such as subtitleConfig and titleConfig are shallow-merged with the existing clip config. Set merge to false only when you want to replace those nested objects.

Editable Fields

FieldTypeDescription
titlestringClip title.
biostringClip description.
keywordsstring[]Clip keywords.
peoplestring[]People or speakers associated with the clip.
segmentsobject[]Final keep segments for the clip.
durationnumberClip duration in seconds.
startTimestamp / endTimestampnumberSource video timestamps.
timestampBoundaryobjectClip extraction boundary.
subtitleConfigobjectSubtitle rendering configuration.
titleConfigobjectTitle overlay configuration.
watermarkConfigobjectWatermark configuration.
backgroundMusicOptionobjectBackground music configuration.
endCardOption / end_card_optionobjectEnd card configuration.
Unsupported fields return UNSUPPORTED_CLIP_FIELDS.
const response = await fetch("https://api.joinoverlap.com/update-clip", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.OVERLAP_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    companyId: process.env.OVERLAP_COMPANY_ID,
    clipId: "clip-id-from-results",
    updates: {
      title: "Product Launch Highlights",
      subtitleConfig: {
        subtitleY: 50
      }
    }
  })
});

const data = await response.json();

Response

{
  "clipId": "clip-id-from-results",
  "status": "success",
  "updatedFields": ["title", "subtitleConfig"],
  "updates": {
    "title": "Product Launch Highlights",
    "subtitleConfig": {
      "subtitleY": 50
    }
  }
}

Render Clip

Render the updated clip into a finalized export