curl --request POST \
--url https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{}'import requests
url = "https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept"
payload = {}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept', 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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept",
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([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PLANNED",
"generateBy": "2023-11-07T05:31:56Z",
"publishAt": "2023-11-07T05:31:56Z",
"priorityScore": 123,
"prioritizationReason": "<string>",
"scheduledAtReason": "<string>",
"documentConfiguration": {
"personaId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contentType": "ARTICLE",
"contentLength": "SHORT",
"toneOfVoice": "PROFESSIONAL",
"enabledTools": [
"GOOGLE_SEARCH"
],
"contentLanguageCode": "<string>"
},
"documentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"documentTitle": "<string>",
"contentType": "ARTICLE",
"contentLength": "SHORT",
"toneOfVoice": "PROFESSIONAL",
"personaId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"personaName": "<string>",
"title": "<string>",
"publishAttempts": 123,
"failureReason": "<string>",
"autoApproved": true,
"publishSource": "AUTOMATIC",
"publishedAt": "2023-11-07T05:31:56Z",
"publishedByName": "<string>",
"source": "<string>",
"recommendationTitle": "<string>",
"contentGapId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"publishState": "LIVE",
"cmsProvider": "<string>",
"liveUrl": "<string>",
"viewUrl": "<string>",
"viewUrlKind": "live",
"content": "<string>",
"description": "<string>",
"declineReason": "<string>",
"recommendationDetails": "<string>",
"recommendationImpact": "<string>",
"recommendationEffort": "<string>"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}Accept Content Agent slot
Accepts a draft in REVIEW: moves it to SCHEDULED (future publishAt) or APPROVED/PUBLISHED when publishing now. Use pastDueAction when the scheduled time has already passed.
curl --request POST \
--url https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{}'import requests
url = "https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept"
payload = {}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept', 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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept",
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([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/content-agent/slots/{id}/accept")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "PLANNED",
"generateBy": "2023-11-07T05:31:56Z",
"publishAt": "2023-11-07T05:31:56Z",
"priorityScore": 123,
"prioritizationReason": "<string>",
"scheduledAtReason": "<string>",
"documentConfiguration": {
"personaId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"contentType": "ARTICLE",
"contentLength": "SHORT",
"toneOfVoice": "PROFESSIONAL",
"enabledTools": [
"GOOGLE_SEARCH"
],
"contentLanguageCode": "<string>"
},
"documentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"documentTitle": "<string>",
"contentType": "ARTICLE",
"contentLength": "SHORT",
"toneOfVoice": "PROFESSIONAL",
"personaId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"personaName": "<string>",
"title": "<string>",
"publishAttempts": 123,
"failureReason": "<string>",
"autoApproved": true,
"publishSource": "AUTOMATIC",
"publishedAt": "2023-11-07T05:31:56Z",
"publishedByName": "<string>",
"source": "<string>",
"recommendationTitle": "<string>",
"contentGapId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"promptId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"publishState": "LIVE",
"cmsProvider": "<string>",
"liveUrl": "<string>",
"viewUrl": "<string>",
"viewUrlKind": "live",
"content": "<string>",
"description": "<string>",
"declineReason": "<string>",
"recommendationDetails": "<string>",
"recommendationImpact": "<string>",
"recommendationEffort": "<string>"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}{
"code": "CONTENT_AUTOMATION_SLOT_NOT_FOUND",
"message": "Content piece not found"
}Authorizations
API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.
Path Parameters
Content schedule slot id.
Body
Required when the slot's publishAt is already in the past (unless publishTiming is IMMEDIATE_ON_APPROVAL). publish_now publishes immediately; reschedule moves to the next valid window.
publish_now, reschedule Response
Default Response
Resource identifier
Slot lifecycle status.
PLANNED, GENERATING, REVIEW, APPROVED, SCHEDULED, PUBLISHING, PUBLISHED, DEFERRED, SUPPRESSED, FAILED When generation is due.
Scheduled publish time.
Per-slot content options applied when the piece is generated.
Show child attributes
Show child attributes
ARTICLE, BLOG_POST, OPINION, LISTICLE, HOW_TO, REVIEW, COMPARISON, CASE_STUDY, INTERVIEW, DOCUMENTATION, WIKI, PRODUCT_PAGE, LANDING_PAGE, PRESS_RELEASE, GENERIC_CONTENT, PRODUCT_COMPARISON SHORT, MEDIUM, LONG PROFESSIONAL, CASUAL, TECHNICAL, CONVERSATIONAL, NEUTRAL, AUTHORITATIVE, FRIENDLY, PERSUASIVE Display title for the scheduled piece.
AUTOMATIC, MANUAL Timestamp (ISO 8601)
Backlog source label (content gap, prompt, etc.).
LIVE, DRAFT Best available link (live, draft, or CMS editor).
live, draft, cmsEditor Markdown draft body; empty until generated.