curl --request PUT \
--url https://api.example.com/v1/contents/{contentId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"version": 123,
"assignedToId": "<string>",
"contentStatusId": "<string>",
"dueDate": "<string>",
"folderId": "<string>",
"html": "<string>",
"metaDescription": "<string>",
"title": "<string>"
}
'import requests
url = "https://api.example.com/v1/contents/{contentId}"
payload = {
"version": 123,
"assignedToId": "<string>",
"contentStatusId": "<string>",
"dueDate": "<string>",
"folderId": "<string>",
"html": "<string>",
"metaDescription": "<string>",
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
version: 123,
assignedToId: '<string>',
contentStatusId: '<string>',
dueDate: '<string>',
folderId: '<string>',
html: '<string>',
metaDescription: '<string>',
title: '<string>'
})
};
fetch('https://api.example.com/v1/contents/{contentId}', 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/v1/contents/{contentId}",
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([
'version' => 123,
'assignedToId' => '<string>',
'contentStatusId' => '<string>',
'dueDate' => '<string>',
'folderId' => '<string>',
'html' => '<string>',
'metaDescription' => '<string>',
'title' => '<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.example.com/v1/contents/{contentId}"
payload := strings.NewReader("{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v1/contents/{contentId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/contents/{contentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"assignedTo": {
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"profileImageUrl": "<string>"
},
"contentScore": 123,
"contentStatus": {
"color": "<string>",
"id": "<string>",
"isReadOnly": true,
"label": "<string>",
"position": 123
},
"contentUpdatedAt": "<string>",
"createdAt": "<string>",
"dueDate": "<string>",
"folder": {
"id": "<string>",
"name": "<string>"
},
"id": "<string>",
"page": {
"id": "<string>",
"lastStatusCode": 123,
"url": "<string>"
},
"publishedAt": "<string>",
"title": "<string>",
"type": "DRAFT",
"updatedAt": "<string>",
"wordsCount": 123,
"contentUpdatedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"html": "<string>",
"htmlSanitized": "<string>",
"isStarted": true,
"lastGeneration": {
"id": "<string>",
"status": "queued",
"type": "optimize"
},
"metaDescription": "<string>",
"publishedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"version": 123
}Update a content
Updates a content. The version field is required for optimistic locking.
curl --request PUT \
--url https://api.example.com/v1/contents/{contentId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"version": 123,
"assignedToId": "<string>",
"contentStatusId": "<string>",
"dueDate": "<string>",
"folderId": "<string>",
"html": "<string>",
"metaDescription": "<string>",
"title": "<string>"
}
'import requests
url = "https://api.example.com/v1/contents/{contentId}"
payload = {
"version": 123,
"assignedToId": "<string>",
"contentStatusId": "<string>",
"dueDate": "<string>",
"folderId": "<string>",
"html": "<string>",
"metaDescription": "<string>",
"title": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
version: 123,
assignedToId: '<string>',
contentStatusId: '<string>',
dueDate: '<string>',
folderId: '<string>',
html: '<string>',
metaDescription: '<string>',
title: '<string>'
})
};
fetch('https://api.example.com/v1/contents/{contentId}', 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/v1/contents/{contentId}",
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([
'version' => 123,
'assignedToId' => '<string>',
'contentStatusId' => '<string>',
'dueDate' => '<string>',
'folderId' => '<string>',
'html' => '<string>',
'metaDescription' => '<string>',
'title' => '<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.example.com/v1/contents/{contentId}"
payload := strings.NewReader("{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", 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.put("https://api.example.com/v1/contents/{contentId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/contents/{contentId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"version\": 123,\n \"assignedToId\": \"<string>\",\n \"contentStatusId\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"folderId\": \"<string>\",\n \"html\": \"<string>\",\n \"metaDescription\": \"<string>\",\n \"title\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"assignedTo": {
"email": "<string>",
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>",
"profileImageUrl": "<string>"
},
"contentScore": 123,
"contentStatus": {
"color": "<string>",
"id": "<string>",
"isReadOnly": true,
"label": "<string>",
"position": 123
},
"contentUpdatedAt": "<string>",
"createdAt": "<string>",
"dueDate": "<string>",
"folder": {
"id": "<string>",
"name": "<string>"
},
"id": "<string>",
"page": {
"id": "<string>",
"lastStatusCode": 123,
"url": "<string>"
},
"publishedAt": "<string>",
"title": "<string>",
"type": "DRAFT",
"updatedAt": "<string>",
"wordsCount": 123,
"contentUpdatedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"html": "<string>",
"htmlSanitized": "<string>",
"isStarted": true,
"lastGeneration": {
"id": "<string>",
"status": "queued",
"type": "optimize"
},
"metaDescription": "<string>",
"publishedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"version": 123
}Authorizations
API key starting with sk_. Generate one in Settings > API Keys.
Path Parameters
Content ID.
Body
Current version for optimistic locking.
New assignee ID, or null to unassign.
New workflow status ID.
New due date (ISO 8601), or null to remove.
New folder ID, or null to remove.
New HTML body.
New meta description.
New title.
255Response
Default Response
User assigned to this content.
Show child attributes
Show child attributes
This score out of 100 measures the SEO quality of a content.
Workflow status assigned to this content.
Show child attributes
Show child attributes
ISO 8601 date of the last content body change.
ISO 8601 creation date.
Due date (ISO 8601).
Folder this content is organized in.
Show child attributes
Show child attributes
Unique identifier of the content.
Page this content belongs to.
Show child attributes
Show child attributes
Publication date (ISO 8601).
Title of the content.
Content type.
DRAFT, PUBLISHED, ORIGINAL ISO 8601 last update date.
Number of words in the content.
User who last edited the content body.
Show child attributes
Show child attributes
HTML body of the content as authored in the Semji editor. May contain editor-only markers (comments, fact-check annotations) — for a clean version safe to publish externally, use htmlSanitized.
HTML body of the content with all Semji editor annotations (comments, fact-check markers) stripped. Safe to push into a CMS or publish externally.
Whether the content has any HTML body.
Last Atomic Content generation.
Show child attributes
Show child attributes
Meta description for SEO.
User who published this content.
Show child attributes
Show child attributes
Optimistic locking version.
Was this page helpful?