Skip to main content
GET
/
workflow-results
/
{triggerId}
Get Results
curl --request GET \
  --url https://api.joinoverlap.com/workflow-results/{triggerId}

Endpoint

GET https://api.joinoverlap.com/workflow-results/{triggerId}
Poll this endpoint after POST /trigger-template returns a triggerId. We recommend polling every 5-10 seconds until the workflow reaches Completed or Error.
Use renderedUrl as the editable preview video. Call POST /render when you need a finalized export after clip edits.

Authentication

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

Path Parameters

ParameterDescription
triggerIdUnique workflow run identifier returned by POST /trigger-template.

Response Format

{
  "status": "Pending | Processing | Learning | Completed | Error",
  "clips": [],
  "error": "Error message when status is Error"
}
Statuses can vary by workflow step, but successful runs finish with Completed and failed runs finish with Error.

Completed Response

{
  "clips": [
    {
      "aspectRatio": "16:9",
      "bio": "An experienced startup founder and investor explains how founder psychology can make or break a company.",
      "duration": 51.724999,
      "endTimestamp": 51.724999,
      "id": "0e3b1690-3bad-42cc-810d-87fd433054b8",
      "keywords": ["startup", "founder psychology", "self-awareness"],
      "people": ["Startup Founder"],
      "renderedUrl": "https://cdn.overlap.ai/fe249157-6be2-4fce-9aec-961f800604f1.mp4",
      "startTimestamp": 0.0,
      "thumbnailURL": "https://cdn.overlap.ai/thumbnails/ce99b3c5-4d5d-4cc4-ae69-b835d23fe77a_thumb.jpg",
      "timestampBoundary": {
        "start": 0.0,
        "end": 30.0
      },
      "title": "Startup Founder: You're Your Startup's Biggest Threat",
      "viralityScore": 89.5
    }
  ],
  "status": "Completed"
}

Processing Response

{
  "clips": [],
  "status": "Processing"
}

Error Response

{
  "clips": [],
  "status": "Error",
  "error": "Workflow failed while processing the source video."
}
javascript
async function getWorkflowResults(triggerId) {
  const response = await fetch(
    `https://api.joinoverlap.com/workflow-results/${triggerId}`,
    {
      headers: {
        "Authorization": `Bearer ${process.env.OVERLAP_API_KEY}`,
        "Content-Type": "application/json"
      }
    }
  );

  return response.json();
}
  • Continue polling while status is Pending, Processing, Learning, or another in-progress workflow step.
  • Stop polling when status is Completed and use the returned clips.
  • Stop polling when status is Error and show or log the returned error.

Clip Object

PropertyTypeDescription
idstringUnique identifier for the clip. Use this as clipId for update and render calls.
titlestringTitle of the clip.
biostringShort contextual description or bio for the clip.
keywordsstring[]Array of relevant keywords or tags associated with the clip.
peoplestring[]Array of people (e.g., speakers) featured in the clip.
durationnumberTotal duration of the clip in seconds.
startTimestampnumberTimestamp (in seconds) where the clip starts in the source video.
endTimestampnumberTimestamp (in seconds) where the clip ends in the source video.
timestampBoundaryobjectObject defining the clipping boundary (see below).
timestampBoundary.startnumberStart boundary (in seconds) for clip extraction.
timestampBoundary.endnumberEnd boundary (in seconds) for clip extraction.
aspectRatiostringAspect ratio of the clip, e.g., "16:9" or "9:16".
renderedUrlstringPublic preview video URL. Use /render for a finalized export after changes.
rawUrlstringRaw clip URL when available.
thumbnailURLstringURL to the thumbnail image for the clip.
viralityScorenumberNumerical score indicating the clip’s predicted virality potential.

Update Clip

Save edited clip fields before rendering

Render Clip

Create a finalized clip export