Generate Content Score
curl --request POST \
--url 'https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=' \
--header 'Content-Type: application/json' \
--data '
{
"title": "How to Improve Team Communication",
"metaDescription": "A practical guide to better collaboration.",
"bodyCopy": "Effective communication helps teams align and execute."
}
'import requests
url = "https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig="
payload = {
"title": "How to Improve Team Communication",
"metaDescription": "A practical guide to better collaboration.",
"bodyCopy": "Effective communication helps teams align and execute."
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'How to Improve Team Communication',
metaDescription: 'A practical guide to better collaboration.',
bodyCopy: 'Effective communication helps teams align and execute.'
})
};
fetch('https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=', 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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=",
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([
'title' => 'How to Improve Team Communication',
'metaDescription' => 'A practical guide to better collaboration.',
'bodyCopy' => 'Effective communication helps teams align and execute.'
]),
CURLOPT_HTTPHEADER => [
"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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig="
payload := strings.NewReader("{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}"
response = http.request(request)
puts response.read_body{
"overallScore": 67,
"responseId": "6fvXaYjXAuXd_uMPg4fYwQQ",
"intentAlignment": {
"objectiveAssessment": {
"detailedEvaluation": "The content provides a professional comparison of checking and savings accounts but lacks a structured head-to-head of daily-access features.",
"summary": "Strong analogy and decision framework; needs more granular detail on physical access differences.",
"shortSummary": "Add concrete debit/ATM access details and a direct feature comparison.",
"overallObjectiveScore": 1,
"improvementPriority": [
"Compare daily access features like debit cards and ATMs.",
"List common best-use cases for each account type."
]
},
"audienceAssessment": {
"detailedEvaluation": "Addresses early-career adults well but omits popular features like savings buckets and round-ups.",
"summary": "Clear, practical breakdown with a solid decision framework.",
"shortSummary": "Integrate automation features to better serve the audience.",
"overallAlignmentScore": 2,
"improvementPriority": [
"Incorporate automated round-ups and savings buckets.",
"Refine terminology to avoid alienating non-technical readers."
]
},
"journeyStageAssessment": {
"detailedEvaluation": "Serves the Awareness stage effectively but leans into Consideration-level vetting detail.",
"summary": "Aligns well with Awareness by framing finance as a strategic system.",
"shortSummary": "Solid Awareness content; focus more on lifestyle benefits.",
"overallJourneyScore": 1,
"improvementPriority": [
"Deepen the 'why' with lifestyle impacts before listing criteria.",
"Emphasize emergency funds over technical vetting frameworks."
]
},
"intentScore": 37
},
"topicalCoverage": {
"questionsAssessment": {
"questionEvaluations": [
{
"question": "What is a savings account and how does it work?",
"explanation": "Defines it as a Growth Layer that earns interest to protect against inflation.",
"score": 1
},
{
"question": "Does Thrivent have a savings account?",
"explanation": "No mention of Thrivent or specific banking brands.",
"score": 0
}
],
"overallScore": 1,
"summary": "High-quality strategic advice undermined by missing brand-specific answers.",
"shortSummary": "Strong framework, missing specific brand information.",
"improvementPriority": [
"Address specific providers like Thrivent and Schwab.",
"Define how checking accounts relate to debit cards."
]
},
"subtopicAssessment": {
"subtopicEvaluations": [
{
"subtopic": "What checking accounts are and how they work",
"score": 1,
"explanation": "Defines checking as an 'operating system' for paychecks and expenses."
}
],
"overallScore": 1,
"summary": "Solid framework that needs more detail on account linking and overdraft protection.",
"shortSummary": "Needs detail on direct deposits and overdraft protection.",
"improvementPriority": [
"Detail setting up automated transfers and direct deposits.",
"Explain how overdraft protection works between accounts."
]
},
"keyTermsAssessment": null,
"coverageScore": {
"score": 1,
"scoreMatches": [
{
"term": "checking account",
"termType": "IMPORTANT",
"match": true
},
{
"term": "debit card",
"termType": "IMPORTANT",
"match": false
},
{
"term": "minimum balance",
"termType": "SUPPORTING",
"match": true
},
{
"term": "savings goals",
"termType": "ADDITIONAL",
"match": true
}
]
},
"topicalCoverageScore": 30
}
}{
"code": "<string>",
"message": "<string>"
}{
"detail": "<string>"
}Content Score
Generate content score
Evaluate content (title, meta description, body copy) for a draft and return scoring insights across multiple dimensions.
POST
/
v4
/
accounts
/
{accountId}
/
drafts
/
{draftId}
/
content-score
Generate Content Score
curl --request POST \
--url 'https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=' \
--header 'Content-Type: application/json' \
--data '
{
"title": "How to Improve Team Communication",
"metaDescription": "A practical guide to better collaboration.",
"bodyCopy": "Effective communication helps teams align and execute."
}
'import requests
url = "https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig="
payload = {
"title": "How to Improve Team Communication",
"metaDescription": "A practical guide to better collaboration.",
"bodyCopy": "Effective communication helps teams align and execute."
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'How to Improve Team Communication',
metaDescription: 'A practical guide to better collaboration.',
bodyCopy: 'Effective communication helps teams align and execute.'
})
};
fetch('https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=', 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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=",
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([
'title' => 'How to Improve Team Communication',
'metaDescription' => 'A practical guide to better collaboration.',
'bodyCopy' => 'Effective communication helps teams align and execute.'
]),
CURLOPT_HTTPHEADER => [
"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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig="
payload := strings.NewReader("{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.conductor.com/v4/accounts/{accountId}/drafts/{draftId}/content-score?apiKey=&sig=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"How to Improve Team Communication\",\n \"metaDescription\": \"A practical guide to better collaboration.\",\n \"bodyCopy\": \"Effective communication helps teams align and execute.\"\n}"
response = http.request(request)
puts response.read_body{
"overallScore": 67,
"responseId": "6fvXaYjXAuXd_uMPg4fYwQQ",
"intentAlignment": {
"objectiveAssessment": {
"detailedEvaluation": "The content provides a professional comparison of checking and savings accounts but lacks a structured head-to-head of daily-access features.",
"summary": "Strong analogy and decision framework; needs more granular detail on physical access differences.",
"shortSummary": "Add concrete debit/ATM access details and a direct feature comparison.",
"overallObjectiveScore": 1,
"improvementPriority": [
"Compare daily access features like debit cards and ATMs.",
"List common best-use cases for each account type."
]
},
"audienceAssessment": {
"detailedEvaluation": "Addresses early-career adults well but omits popular features like savings buckets and round-ups.",
"summary": "Clear, practical breakdown with a solid decision framework.",
"shortSummary": "Integrate automation features to better serve the audience.",
"overallAlignmentScore": 2,
"improvementPriority": [
"Incorporate automated round-ups and savings buckets.",
"Refine terminology to avoid alienating non-technical readers."
]
},
"journeyStageAssessment": {
"detailedEvaluation": "Serves the Awareness stage effectively but leans into Consideration-level vetting detail.",
"summary": "Aligns well with Awareness by framing finance as a strategic system.",
"shortSummary": "Solid Awareness content; focus more on lifestyle benefits.",
"overallJourneyScore": 1,
"improvementPriority": [
"Deepen the 'why' with lifestyle impacts before listing criteria.",
"Emphasize emergency funds over technical vetting frameworks."
]
},
"intentScore": 37
},
"topicalCoverage": {
"questionsAssessment": {
"questionEvaluations": [
{
"question": "What is a savings account and how does it work?",
"explanation": "Defines it as a Growth Layer that earns interest to protect against inflation.",
"score": 1
},
{
"question": "Does Thrivent have a savings account?",
"explanation": "No mention of Thrivent or specific banking brands.",
"score": 0
}
],
"overallScore": 1,
"summary": "High-quality strategic advice undermined by missing brand-specific answers.",
"shortSummary": "Strong framework, missing specific brand information.",
"improvementPriority": [
"Address specific providers like Thrivent and Schwab.",
"Define how checking accounts relate to debit cards."
]
},
"subtopicAssessment": {
"subtopicEvaluations": [
{
"subtopic": "What checking accounts are and how they work",
"score": 1,
"explanation": "Defines checking as an 'operating system' for paychecks and expenses."
}
],
"overallScore": 1,
"summary": "Solid framework that needs more detail on account linking and overdraft protection.",
"shortSummary": "Needs detail on direct deposits and overdraft protection.",
"improvementPriority": [
"Detail setting up automated transfers and direct deposits.",
"Explain how overdraft protection works between accounts."
]
},
"keyTermsAssessment": null,
"coverageScore": {
"score": 1,
"scoreMatches": [
{
"term": "checking account",
"termType": "IMPORTANT",
"match": true
},
{
"term": "debit card",
"termType": "IMPORTANT",
"match": false
},
{
"term": "minimum balance",
"termType": "SUPPORTING",
"match": true
},
{
"term": "savings goals",
"termType": "ADDITIONAL",
"match": true
}
]
},
"topicalCoverageScore": 30
}
}{
"code": "<string>",
"message": "<string>"
}{
"detail": "<string>"
}Authorizations
API Key as a query parameter
Request signature computed using API key and secret. Valid for 5 minutes after creation.
Path Parameters
Account identifier
Draft identifier
Body
application/json
Response
Content score
Score from 0 to 100.
Identifier for the request.
Evaluates how well content aligns with the configured objective, audience, and journey stage.
Show child attributes
Show child attributes
Evaluates how thoroughly the content covers relevant questions, subtopics, and key terms.
Show child attributes
Show child attributes
⌘I
