curl --request POST \
--url https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"name": "<string>",
"label": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents"
payload = {
"url": "<string>",
"name": "<string>",
"label": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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>',
name: '<string>',
label: '<string>',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents', 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.publishbuddy.com/v1/workspaces/{workspace}/media_contents",
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>',
'name' => '<string>',
'label' => '<string>',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.publishbuddy.com/v1/workspaces/{workspace}/media_contents"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.publishbuddy.com/v1/workspaces/{workspace}/media_contents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents")
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 \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"name": "<string>",
"full_name": "<string>",
"label": "<string>",
"link": "<string>",
"status": "<string>",
"error_message": "<string>",
"size": 123,
"width": 123,
"height": 123,
"time": 123,
"thumbnail": "<unknown>",
"folder_id": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"id": "<string>",
"name": "<string>",
"full_name": "<string>",
"label": "<string>",
"link": "<string>",
"status": "<string>",
"error_message": "<string>",
"size": 123,
"width": 123,
"height": 123,
"time": 123,
"thumbnail": "<unknown>",
"folder_id": "<string>"
}
],
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Upload media
Give a URL or a file; the server decides how to store it. Images given by URL come back
ready (201, status active). Videos given by URL, and files larger than 50 MB, come back
processing (202): poll GET /media_contents/{id} until status is active (the link
is final then) or failed (error_message says why). Files sent as multipart/form-data
in files[] (1 to 10, up to 200 MB each) come back active (201). Use presign only for
files above the multipart limit. A processing or failed item cannot be attached to a post.
curl --request POST \
--url https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "<string>",
"name": "<string>",
"label": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents"
payload = {
"url": "<string>",
"name": "<string>",
"label": "<string>",
"folder_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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>',
name: '<string>',
label: '<string>',
folder_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents', 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.publishbuddy.com/v1/workspaces/{workspace}/media_contents",
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>',
'name' => '<string>',
'label' => '<string>',
'folder_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.publishbuddy.com/v1/workspaces/{workspace}/media_contents"
payload := strings.NewReader("{\n \"url\": \"<string>\",\n \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.publishbuddy.com/v1/workspaces/{workspace}/media_contents")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"<string>\",\n \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.publishbuddy.com/v1/workspaces/{workspace}/media_contents")
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 \"name\": \"<string>\",\n \"label\": \"<string>\",\n \"folder_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "<string>",
"name": "<string>",
"full_name": "<string>",
"label": "<string>",
"link": "<string>",
"status": "<string>",
"error_message": "<string>",
"size": 123,
"width": 123,
"height": 123,
"time": 123,
"thumbnail": "<unknown>",
"folder_id": "<string>"
}
],
"message": "<string>"
}{
"data": [
{
"id": "<string>",
"name": "<string>",
"full_name": "<string>",
"label": "<string>",
"link": "<string>",
"status": "<string>",
"error_message": "<string>",
"size": 123,
"width": 123,
"height": 123,
"time": 123,
"thumbnail": "<unknown>",
"folder_id": "<string>"
}
],
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
The workspace UUID
Body
Either a JSON body with url, or a multipart/form-data body with files[].
The JSON shape of POST /workspaces/{workspace}/media_contents: a file given by URL. The multipart
shape (files in the request) is StoreMediaContentFilesRequestStub; the generated spec shows both.
Public http(s) URL of the image or video. Redirects are followed (3 at most) and every hop must point at a public address. The file type is read from the bytes, not from the URL or the Content-Type.
2048Name to store the file under (3 to 100 characters, no extension needed: it comes from the file). Defaults to the URL's file name.
3 - 100Label shown in the library
250Folder UUID from GET /workspaces/{workspace}/media_library/folders; omit for the root of the library