GET /api/v1/contents/calendar
curl --request GET \
--url https://api.draftliftai.com/api/v1/contents/calendarimport requests
url = "https://api.draftliftai.com/api/v1/contents/calendar"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.draftliftai.com/api/v1/contents/calendar', 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.draftliftai.com/api/v1/contents/calendar",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.draftliftai.com/api/v1/contents/calendar"
req, _ := http.NewRequest("GET", url, nil)
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.draftliftai.com/api/v1/contents/calendar")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.draftliftai.com/api/v1/contents/calendar")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyContents
Get Calendar Data
GET
/
api
/
v1
/
contents
/
calendar
GET /api/v1/contents/calendar
curl --request GET \
--url https://api.draftliftai.com/api/v1/contents/calendarimport requests
url = "https://api.draftliftai.com/api/v1/contents/calendar"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.draftliftai.com/api/v1/contents/calendar', 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.draftliftai.com/api/v1/contents/calendar",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.draftliftai.com/api/v1/contents/calendar"
req, _ := http.NewRequest("GET", url, nil)
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.draftliftai.com/api/v1/contents/calendar")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.draftliftai.com/api/v1/contents/calendar")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyThis endpoint returns editorial planning dates only. It never infers that
content was published. Unplanned content is omitted instead of being placed on
the calendar by its creation date.
Each item includes:
planned_for: the stable editorial day inYYYY-MM-DDformat.content_state:draftfor editable draft/generated content orfinalfor finalized content.date: a compatibility alias forplanned_for.
planned_for with the browser-local day to show
Planned or Overdue. A past date does not change content_state and never
creates a Published state.
Publishing-tool handoff
The calendar’s Export plan action downloads a neutral JSON handoff. It does not publish, authorize a social account, or claim delivery.{
"schema_version": "draftlift.planning-handoff.v1",
"purpose": "editorial_planning_only",
"exported_at": "2030-08-01T09:00:00.000Z",
"timezone": "America/Chicago",
"items": [
{
"content_id": 7,
"title": "A truthful plan",
"platform": "linkedin",
"content_state": "final",
"planning_state": "planned",
"planned_for": "2030-08-05",
"content_path": "/edit/7",
"handoff_status": "ready",
"handoff_note": "Import into a dedicated publishing tool."
}
]
}
handoff_status is unsupported when an item has no platform. The export
still contains the item and its content_path, so the user can repair the
missing platform and export again. Browser download failures remain visible in
the calendar and do not change saved planning dates.Response
Successful response.
Was this page helpful?