curl --request POST \
--url https://api.example.com/v1/contents/{contentId}/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"publishedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
'import requests
url = "https://api.example.com/v1/contents/{contentId}/publish"
payload = {
"publishedAt": "2023-11-07T05:31:56Z",
"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({publishedAt: '2023-11-07T05:31:56Z', url: '<string>'})
};
fetch('https://api.example.com/v1/contents/{contentId}/publish', 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}/publish",
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([
'publishedAt' => '2023-11-07T05:31:56Z',
'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.example.com/v1/contents/{contentId}/publish"
payload := strings.NewReader("{\n \"publishedAt\": \"2023-11-07T05:31:56Z\",\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.example.com/v1/contents/{contentId}/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"publishedAt\": \"2023-11-07T05:31:56Z\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/contents/{contentId}/publish")
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 \"publishedAt\": \"2023-11-07T05:31:56Z\",\n \"url\": \"<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
}Mark a content as published
Marks the content as published in Semji. Call this endpoint after the content has been published on your CMS. If no URL is provided, the associated page URL is used. If no publication date is provided, the current server time is used.
curl --request POST \
--url https://api.example.com/v1/contents/{contentId}/publish \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"publishedAt": "2023-11-07T05:31:56Z",
"url": "<string>"
}
'import requests
url = "https://api.example.com/v1/contents/{contentId}/publish"
payload = {
"publishedAt": "2023-11-07T05:31:56Z",
"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({publishedAt: '2023-11-07T05:31:56Z', url: '<string>'})
};
fetch('https://api.example.com/v1/contents/{contentId}/publish', 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}/publish",
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([
'publishedAt' => '2023-11-07T05:31:56Z',
'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.example.com/v1/contents/{contentId}/publish"
payload := strings.NewReader("{\n \"publishedAt\": \"2023-11-07T05:31:56Z\",\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.example.com/v1/contents/{contentId}/publish")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"publishedAt\": \"2023-11-07T05:31:56Z\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/contents/{contentId}/publish")
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 \"publishedAt\": \"2023-11-07T05:31:56Z\",\n \"url\": \"<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
Publication date (ISO 8601). Defaults to the current server time.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$Target publication URL. Defaults to the associated page URL.
Response
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?