Download
Import an Instagram video into VidJutsu
Accepts an Instagram post or reel URL, extracts the primary MP4 and normalized metadata from one provider response, and stores the MP4 in tenant-owned VidJutsu storage. The tenant cache is checked first; repeated imports return the stored CDN URL and metadata without provider or media fetches. Older cached assets return metadata: and are not backfilled.
POST
/
v1
/
videos
/
download
/
instagram
Import an Instagram video into VidJutsu
curl --request POST \
--url https://api.vidjutsu.ai/v1/videos/download/instagram \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>"
}
'import requests
url = "https://api.vidjutsu.ai/v1/videos/download/instagram"
payload = { "url": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>'})
};
fetch('https://api.vidjutsu.ai/v1/videos/download/instagram', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vidjutsu.ai/v1/videos/download/instagram",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vidjutsu.ai/v1/videos/download/instagram"
payload := strings.NewReader("{\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.vidjutsu.ai/v1/videos/download/instagram")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vidjutsu.ai/v1/videos/download/instagram")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"assetId": "<string>",
"url": "<string>",
"platform": "tiktok",
"externalId": "<string>",
"sourceUrl": "<string>",
"contentType": "video/mp4",
"size": 123,
"sha256": "<string>",
"reused": true,
"metadata": {
"caption": "<string>",
"authorHandle": "<string>",
"authorName": "<string>",
"hashtags": [
"<string>"
],
"postedAt": 123,
"durationSeconds": 123,
"coverUrl": "<string>",
"stats": {
"views": 123,
"likes": 123,
"comments": 123,
"shares": 123
}
}
}{
"error": "<string>",
"message": "<string>",
"setup": "<string>"
}{
"error": "<string>",
"message": "<string>",
"setup": "<string>"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
Response
The request has succeeded.
Available options:
tiktok, instagram Available options:
video/mp4 Normalized source metadata. Always present; older cached assets return an empty object.
Show child attributes
Show child attributes
Import an Instagram video into VidJutsu
curl --request POST \
--url https://api.vidjutsu.ai/v1/videos/download/instagram \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>"
}
'import requests
url = "https://api.vidjutsu.ai/v1/videos/download/instagram"
payload = { "url": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({url: '<string>'})
};
fetch('https://api.vidjutsu.ai/v1/videos/download/instagram', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.vidjutsu.ai/v1/videos/download/instagram",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vidjutsu.ai/v1/videos/download/instagram"
payload := strings.NewReader("{\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.vidjutsu.ai/v1/videos/download/instagram")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vidjutsu.ai/v1/videos/download/instagram")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"assetId": "<string>",
"url": "<string>",
"platform": "tiktok",
"externalId": "<string>",
"sourceUrl": "<string>",
"contentType": "video/mp4",
"size": 123,
"sha256": "<string>",
"reused": true,
"metadata": {
"caption": "<string>",
"authorHandle": "<string>",
"authorName": "<string>",
"hashtags": [
"<string>"
],
"postedAt": 123,
"durationSeconds": 123,
"coverUrl": "<string>",
"stats": {
"views": 123,
"likes": 123,
"comments": 123,
"shares": 123
}
}
}{
"error": "<string>",
"message": "<string>",
"setup": "<string>"
}{
"error": "<string>",
"message": "<string>",
"setup": "<string>"
}