curl --request GET \
--url https://api.example.com/v1/contents/{contentId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/v1/contents/{contentId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
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 => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/contents/{contentId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/contents/{contentId}")
.header("Authorization", "Bearer <token>")
.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::Get.new(url)
request["Authorization"] = 'Bearer <token>'
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>"
},
"markedAsPublishedAt": "<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>",
"markedAsPublishedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"publishedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<string>"
},
"version": 123
}Get content details
Returns full details of a content, including HTML body, version, and embedded relations.
curl --request GET \
--url https://api.example.com/v1/contents/{contentId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.example.com/v1/contents/{contentId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
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 => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/contents/{contentId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/contents/{contentId}")
.header("Authorization", "Bearer <token>")
.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::Get.new(url)
request["Authorization"] = 'Bearer <token>'
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>"
},
"markedAsPublishedAt": "<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>",
"markedAsPublishedBy": {
"firstName": "<string>",
"id": "<string>",
"lastName": "<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.
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
Timestamp of the 'mark as published' action, set by Semji (ISO 8601). Never editable. Use this one to detect publications.
Publication date declared by the author in the editor (ISO 8601). Day granularity, and it can be back or forward dated, so it does not tell when the content was actually published.
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 ran the 'mark as published' action.
Show child attributes
Show child attributes
Deprecated, use markedAsPublishedBy. Same value, kept so existing integrations keep working.
Show child attributes
Show child attributes
Optimistic locking version.
Was this page helpful?