Skip to main content

Zapier Integration

Build your own Zapier workflow with scheduled HTTP requests to the VideoNest public API.

Build a scheduled HTTP workflow

This guide uses a schedule and generic outbound HTTP requests you configure in Zapier. It does not depend on a published native VideoNest app, trigger, or action. Set up your own Zapier account and destination accounts; available modules and setup depend on your account.

Where available, a Schedule trigger starts the run and a Webhooks by Zapier outbound request action calls VideoNest. “Webhooks” here means a request your Zap sends. It does not mean VideoNest sends events to a Zapier catch-hook URL.

Create a scoped vn_live_ key in the dashboard and select its channels. Send Authorization: Bearer vn_live_YOUR_SCOPED_KEY from your automation server. Reading videos requires read_videos. Metadata updates require write_videos and permission for the key owner to edit the selected channel. A key cannot grant access its owner lacks. Store keys in your tool's credential store. See API Authentication.

1. Request the video list

Set the outbound request method to GET, with no body:

GET https://api1.videonest.co/v1/videos?channel=chn_4412&limit=50
Authorization: Bearer vn_live_YOUR_SCOPED_KEY

The response contains object, has_more, next_cursor, and data. Map each video's id and title from data into your destination action.

Iterate over data. When has_more is true, send next_cursor as the next request's cursor parameter with the same filters. Stop when has_more is false. limit accepts 1–100, default 50. There is no numbered page parameter.

2. Process each video once

Store handled video IDs in your own durable state and mark them after your destination action succeeds. For metadata synchronization, compare updated_at or the fields you use on later scans. created_at_min filters ingestion time, not later edits; use overlapping windows and deduplication for new-video discovery. A listed video is not a processing-complete or partner-publication event. The public video object has no processing-status field.

Configure iteration, durable deduplication, and pagination explicitly. If your Zap cannot support them, use a worker that can. Fetching only the first page repeatedly can miss videos. For a CMS draft, map title and description; the API has no embed_url or channel_name. Copy player embed code from the dashboard.

Update video metadata

Send PATCH https://api1.videonest.co/v1/videos/vid_981234, replacing the last segment with the target video's id. Add Authorization, Content-Type: application/json, and an Idempotency-Key. The body supports these four fields:

{
  "title": "Building the Harbor Bridge",
  "description": "How the bridge went up in 14 months.",
  "tags": [
    "engineering",
    "documentary"
  ],
  "evergreen_eligible": true
}

Send only fields you intend to change. tags replaces the full list; description: null clears the description. An explicit evergreen_eligible choice is preserved against automatic evergreen checks. PATCH returns the updated video.

Uploads and error handling

To upload a file, follow the upload endpoints: POST /uploads, PUT the returned parts directly to their signed storage URLs, then POST /uploads/{upload_id}/complete. This requires file bytes; there is no public URL-import POST /videos or feed-publish action.

Branch on the HTTP status. Errors use error.type, error.code, error.message, error.param, error.doc_url, and error.request_id; missing-scope errors also include error.required_scope. Correct credentials or access on 401/403, fix invalid input on 400, and honor Retry-After on 429. Record the Request-Id header for support.

Generate an Idempotency-Key for each logical PATCH or POST. Reuse it with the same method, URL, and body when retrying a timed-out write; use a new key for a different update. Results are retained for 24 hours. Keep write retries separate from polling.

Was this article helpful?

Thanks for your feedback.

Need help now? Contact support