Make & n8n Integration
Build advanced multi-step automation workflows with VideoNest using Make and n8n.
Connect through HTTP
Use a schedule you configure with Make's HTTP module or n8n's HTTP Request node. You set up the automation account, credentials, and destination services yourself. This workflow uses generic HTTP requests.
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. Poll videos on a schedule
Configure a scheduled run, then a GET request with no body. Set the URL, query parameters, and header as follows:
GET https://api1.videonest.co/v1/videos?channel=chn_4412&limit=50 Authorization: Bearer vn_live_YOUR_SCOPED_KEY
A complete list response with one video:
{
"object": "list",
"has_more": false,
"next_cursor": null,
"data": [
{
"id": "vid_981234",
"object": "video",
"created_at": "2026-09-02T08:00:14Z",
"updated_at": "2026-09-02T08:05:41Z",
"title": "Building the Harbor Bridge",
"description": "How the bridge went up in 14 months.",
"tags": [
"engineering",
"documentary"
],
"channel": "chn_4412",
"duration": 1325,
"thumbnail_url": "https://cdn.videonest.co/videos/981234/thumb.jpg",
"published_at": "2026-09-01T12:00:00Z",
"visibility": "visible",
"access_mode": "public",
"view_count": 18204,
"source_platform": "youtube",
"evergreen_eligible": true
}
]
}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. Map the response into your workflow
In Make, iterate over data; in n8n, split data into individual items before the next HTTP step. Map the item's id into the update URL and transform title, description, or tags as needed. channel is a channel ID such as chn_4412, not a name.
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.
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 reliable runs
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.