Update Content
curl --request PUT \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"content": {},
"tags": [
"<string>"
],
"folderId": "<string>",
"metadata": {}
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"content": {},
"tags": ["<string>"],
"folderId": "<string>",
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
content: {},
tags: ['<string>'],
folderId: '<string>',
metadata: {}
})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}', 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.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'content' => [
],
'tags' => [
'<string>'
],
'folderId' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyContent
Update Content
Update an existing content item
PUT
/
app
/
v1
/
organizations
/
{organizationId}
/
projects
/
{projectId}
/
content
/
{id}
Update Content
curl --request PUT \
--url https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id} \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"description": "<string>",
"content": {},
"tags": [
"<string>"
],
"folderId": "<string>",
"metadata": {}
}
'import requests
url = "https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}"
payload = {
"name": "<string>",
"description": "<string>",
"content": {},
"tags": ["<string>"],
"folderId": "<string>",
"metadata": {}
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
content: {},
tags: ['<string>'],
folderId: '<string>',
metadata: {}
})
};
fetch('https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}', 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.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'description' => '<string>',
'content' => [
],
'tags' => [
'<string>'
],
'folderId' => '<string>',
'metadata' => [
]
]),
CURLOPT_HTTPHEADER => [
"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.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
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.put("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/app/v1/organizations/{organizationId}/projects/{projectId}/content/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"content\": {},\n \"tags\": [\n \"<string>\"\n ],\n \"folderId\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_bodyPath Parameters
Organization ID
Project ID
Content ID
Request Body
All fields are optional. Only provided fields will be updated.Display name for the content
Structured markdown description
The content data following the ContentType’s schema
Tags for categorization
Folder ID for organization
Additional metadata
Example Request
{
"name": "Updated Getting Started Guide",
"content": {
"title": "Getting Started with Metabind (Updated)",
"subtitle": "Your complete guide, now with more examples",
"components": [
{
"type": "ArticleParagraph",
"text": "Updated introduction text..."
},
{
"type": "ArticleHeading",
"text": "New Section",
"level": 2
}
]
},
"tags": ["Tutorial", "Updated"]
}
Updating a published content item changes its status to
modified. The changes will not be visible to end users until the content is published again.Response
Returns the updated Content object.{
"id": "cont124",
"typeId": "ct123",
"typeVersion": 2,
"version": 1,
"lastPublishedVersion": 1,
"packageVersion": "1.0.0",
"name": "Updated Getting Started Guide",
"status": "modified",
"isTemplate": false,
"content": {
"title": "Getting Started with Metabind (Updated)",
"subtitle": "Your complete guide, now with more examples",
"components": [...]
},
"compiled": "const body = () => { ... }",
"tags": ["Tutorial", "Updated"],
"metadata": { ... },
"createdAt": "2024-03-21T10:00:00Z",
"updatedAt": "2024-03-22T15:30:00Z"
}
Error Responses
Content Not Found
{
"error": {
"code": "NOT_FOUND",
"message": "Content not found"
}
}
Validation Failed
{
"error": {
"code": "VALIDATION_FAILED",
"message": "Content does not match schema",
"details": {
"errors": [
{
"path": "/content/components/0/type",
"message": "Component type 'InvalidComponent' not allowed"
}
]
}
}
}
Code Examples
curl -X PUT "https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content/cont124" \
-H "Authorization: Bearer YOUR_JWT" \
-H "Content-Type: application/json" \
-d '{
"name": "Updated Getting Started Guide",
"content": {
"title": "Getting Started with Metabind (Updated)",
"components": [
{
"type": "ArticleParagraph",
"text": "Updated introduction text..."
}
]
}
}'
const response = await fetch(
'https://api.metabind.ai/app/v1/organizations/org123/projects/proj456/content/cont124',
{
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_JWT',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'Updated Getting Started Guide',
content: {
title: 'Getting Started with Metabind (Updated)',
components: [
{
type: 'ArticleParagraph',
text: 'Updated introduction text...'
}
]
}
})
}
);
const content = await response.json();
console.log(`Updated content, new status: ${content.status}`);
⌘I