curl --request POST \
--url https://app.octavehq.com/api/v2/playbook/create \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"description": "<string>",
"keyInsight": "<string>",
"name": "<string>",
"type": "<string>",
"context": "<string>",
"personaOIds": [
"<string>"
],
"useCaseOIds": [
"<string>"
],
"competitorOId": "<string>",
"segmentOId": "<string>",
"proofPointOIds": [
"<string>"
],
"referenceOIds": [
"<string>"
],
"productOId": "<string>",
"brandVoiceOId": "bv_123456",
"status": "active",
"referenceMode": "specific",
"proofPointMode": "none",
"additionalContextSources": [
{
"type": "URL",
"value": "https://example.com/market-research"
},
{
"type": "TEXT",
"value": "Additional market insights about the target segment."
}
],
"async": false,
"callbackUrl": "https://example.com/webhook/playbook",
"offeringOId": "<string>"
}
'import requests
url = "https://app.octavehq.com/api/v2/playbook/create"
payload = {
"description": "<string>",
"keyInsight": "<string>",
"name": "<string>",
"type": "<string>",
"context": "<string>",
"personaOIds": ["<string>"],
"useCaseOIds": ["<string>"],
"competitorOId": "<string>",
"segmentOId": "<string>",
"proofPointOIds": ["<string>"],
"referenceOIds": ["<string>"],
"productOId": "<string>",
"brandVoiceOId": "bv_123456",
"status": "active",
"referenceMode": "specific",
"proofPointMode": "none",
"additionalContextSources": [
{
"type": "URL",
"value": "https://example.com/market-research"
},
{
"type": "TEXT",
"value": "Additional market insights about the target segment."
}
],
"async": False,
"callbackUrl": "https://example.com/webhook/playbook",
"offeringOId": "<string>"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: '<string>',
keyInsight: '<string>',
name: '<string>',
type: '<string>',
context: '<string>',
personaOIds: ['<string>'],
useCaseOIds: ['<string>'],
competitorOId: '<string>',
segmentOId: '<string>',
proofPointOIds: ['<string>'],
referenceOIds: ['<string>'],
productOId: '<string>',
brandVoiceOId: 'bv_123456',
status: 'active',
referenceMode: 'specific',
proofPointMode: 'none',
additionalContextSources: [
{type: 'URL', value: 'https://example.com/market-research'},
{type: 'TEXT', value: 'Additional market insights about the target segment.'}
],
async: false,
callbackUrl: 'https://example.com/webhook/playbook',
offeringOId: '<string>'
})
};
fetch('https://app.octavehq.com/api/v2/playbook/create', 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://app.octavehq.com/api/v2/playbook/create",
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([
'description' => '<string>',
'keyInsight' => '<string>',
'name' => '<string>',
'type' => '<string>',
'context' => '<string>',
'personaOIds' => [
'<string>'
],
'useCaseOIds' => [
'<string>'
],
'competitorOId' => '<string>',
'segmentOId' => '<string>',
'proofPointOIds' => [
'<string>'
],
'referenceOIds' => [
'<string>'
],
'productOId' => '<string>',
'brandVoiceOId' => 'bv_123456',
'status' => 'active',
'referenceMode' => 'specific',
'proofPointMode' => 'none',
'additionalContextSources' => [
[
'type' => 'URL',
'value' => 'https://example.com/market-research'
],
[
'type' => 'TEXT',
'value' => 'Additional market insights about the target segment.'
]
],
'async' => false,
'callbackUrl' => 'https://example.com/webhook/playbook',
'offeringOId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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://app.octavehq.com/api/v2/playbook/create"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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://app.octavehq.com/api/v2/playbook/create")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.octavehq.com/api/v2/playbook/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"playbook": {
"oId": "<string>",
"name": "<string>",
"description": "<string>",
"keyInsight": [
"<string>"
]
},
"personas": [
{
"oId": "p_1234",
"data": {
"internalName": "<string>",
"primaryResponsibilities": [
"Responsibility 1",
"Responsibility 2"
],
"painPoints": [
"Pain Point 1",
"Pain Point 2"
],
"keyConcerns": [
"Concern 1",
"Concern 2"
],
"keyObjectives": [
"Objective 1",
"Objective 2"
],
"commonJobTitles": [
"Job Title 1",
"Job Title 2"
],
"whyTheyMatterToUs": [
"Reason 1",
"Reason 2"
],
"whyWeMatterToThem": [
"Reason 1",
"Reason 2"
],
"buyingRole": [
"Economic buyer with budget authority over the GTM stack.",
"Experienced operator who has evaluated similar tooling before."
],
"customFields": [
{
"title": "<string>",
"value": [
"<string>"
]
}
],
"additionalProperties": {}
},
"valueProps": [
{
"title": "<string>",
"details": "<string>",
"evidence": [
"<string>"
]
}
],
"name": "VP of Sales",
"internalName": "Sally the Sales Leader",
"description": "<string>",
"active": true,
"qualifyingQuestions": [
{
"question": "<string>",
"rationale": "<string>",
"fitType": "GOOD",
"weight": "MEDIUM",
"archivedAt": "2023-11-07T05:31:56Z"
}
]
}
]
}{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"message": "<string>"
}Create Playbook
Create Playbook
curl --request POST \
--url https://app.octavehq.com/api/v2/playbook/create \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"description": "<string>",
"keyInsight": "<string>",
"name": "<string>",
"type": "<string>",
"context": "<string>",
"personaOIds": [
"<string>"
],
"useCaseOIds": [
"<string>"
],
"competitorOId": "<string>",
"segmentOId": "<string>",
"proofPointOIds": [
"<string>"
],
"referenceOIds": [
"<string>"
],
"productOId": "<string>",
"brandVoiceOId": "bv_123456",
"status": "active",
"referenceMode": "specific",
"proofPointMode": "none",
"additionalContextSources": [
{
"type": "URL",
"value": "https://example.com/market-research"
},
{
"type": "TEXT",
"value": "Additional market insights about the target segment."
}
],
"async": false,
"callbackUrl": "https://example.com/webhook/playbook",
"offeringOId": "<string>"
}
'import requests
url = "https://app.octavehq.com/api/v2/playbook/create"
payload = {
"description": "<string>",
"keyInsight": "<string>",
"name": "<string>",
"type": "<string>",
"context": "<string>",
"personaOIds": ["<string>"],
"useCaseOIds": ["<string>"],
"competitorOId": "<string>",
"segmentOId": "<string>",
"proofPointOIds": ["<string>"],
"referenceOIds": ["<string>"],
"productOId": "<string>",
"brandVoiceOId": "bv_123456",
"status": "active",
"referenceMode": "specific",
"proofPointMode": "none",
"additionalContextSources": [
{
"type": "URL",
"value": "https://example.com/market-research"
},
{
"type": "TEXT",
"value": "Additional market insights about the target segment."
}
],
"async": False,
"callbackUrl": "https://example.com/webhook/playbook",
"offeringOId": "<string>"
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
description: '<string>',
keyInsight: '<string>',
name: '<string>',
type: '<string>',
context: '<string>',
personaOIds: ['<string>'],
useCaseOIds: ['<string>'],
competitorOId: '<string>',
segmentOId: '<string>',
proofPointOIds: ['<string>'],
referenceOIds: ['<string>'],
productOId: '<string>',
brandVoiceOId: 'bv_123456',
status: 'active',
referenceMode: 'specific',
proofPointMode: 'none',
additionalContextSources: [
{type: 'URL', value: 'https://example.com/market-research'},
{type: 'TEXT', value: 'Additional market insights about the target segment.'}
],
async: false,
callbackUrl: 'https://example.com/webhook/playbook',
offeringOId: '<string>'
})
};
fetch('https://app.octavehq.com/api/v2/playbook/create', 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://app.octavehq.com/api/v2/playbook/create",
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([
'description' => '<string>',
'keyInsight' => '<string>',
'name' => '<string>',
'type' => '<string>',
'context' => '<string>',
'personaOIds' => [
'<string>'
],
'useCaseOIds' => [
'<string>'
],
'competitorOId' => '<string>',
'segmentOId' => '<string>',
'proofPointOIds' => [
'<string>'
],
'referenceOIds' => [
'<string>'
],
'productOId' => '<string>',
'brandVoiceOId' => 'bv_123456',
'status' => 'active',
'referenceMode' => 'specific',
'proofPointMode' => 'none',
'additionalContextSources' => [
[
'type' => 'URL',
'value' => 'https://example.com/market-research'
],
[
'type' => 'TEXT',
'value' => 'Additional market insights about the target segment.'
]
],
'async' => false,
'callbackUrl' => 'https://example.com/webhook/playbook',
'offeringOId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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://app.octavehq.com/api/v2/playbook/create"
payload := strings.NewReader("{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("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://app.octavehq.com/api/v2/playbook/create")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.octavehq.com/api/v2/playbook/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"description\": \"<string>\",\n \"keyInsight\": \"<string>\",\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"context\": \"<string>\",\n \"personaOIds\": [\n \"<string>\"\n ],\n \"useCaseOIds\": [\n \"<string>\"\n ],\n \"competitorOId\": \"<string>\",\n \"segmentOId\": \"<string>\",\n \"proofPointOIds\": [\n \"<string>\"\n ],\n \"referenceOIds\": [\n \"<string>\"\n ],\n \"productOId\": \"<string>\",\n \"brandVoiceOId\": \"bv_123456\",\n \"status\": \"active\",\n \"referenceMode\": \"specific\",\n \"proofPointMode\": \"none\",\n \"additionalContextSources\": [\n {\n \"type\": \"URL\",\n \"value\": \"https://example.com/market-research\"\n },\n {\n \"type\": \"TEXT\",\n \"value\": \"Additional market insights about the target segment.\"\n }\n ],\n \"async\": false,\n \"callbackUrl\": \"https://example.com/webhook/playbook\",\n \"offeringOId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"playbook": {
"oId": "<string>",
"name": "<string>",
"description": "<string>",
"keyInsight": [
"<string>"
]
},
"personas": [
{
"oId": "p_1234",
"data": {
"internalName": "<string>",
"primaryResponsibilities": [
"Responsibility 1",
"Responsibility 2"
],
"painPoints": [
"Pain Point 1",
"Pain Point 2"
],
"keyConcerns": [
"Concern 1",
"Concern 2"
],
"keyObjectives": [
"Objective 1",
"Objective 2"
],
"commonJobTitles": [
"Job Title 1",
"Job Title 2"
],
"whyTheyMatterToUs": [
"Reason 1",
"Reason 2"
],
"whyWeMatterToThem": [
"Reason 1",
"Reason 2"
],
"buyingRole": [
"Economic buyer with budget authority over the GTM stack.",
"Experienced operator who has evaluated similar tooling before."
],
"customFields": [
{
"title": "<string>",
"value": [
"<string>"
]
}
],
"additionalProperties": {}
},
"valueProps": [
{
"title": "<string>",
"details": "<string>",
"evidence": [
"<string>"
]
}
],
"name": "VP of Sales",
"internalName": "Sally the Sales Leader",
"description": "<string>",
"active": true,
"qualifyingQuestions": [
{
"question": "<string>",
"rationale": "<string>",
"fitType": "GOOD",
"weight": "MEDIUM",
"archivedAt": "2023-11-07T05:31:56Z"
}
]
}
]
}{
"_metadata": {
"requestId": "requestId",
"timestamp": "2021-01-01T00:00:00.000Z",
"usage": 0,
"message": "message"
},
"message": "<string>"
}Authorizations
Body
Playbook creation input
Description of the playbook
Key insight of the playbook
Name of the playbook
Type of the playbook. Legacy types are automatically mapped: SEGMENT→SECTOR, SIGNAL→MILESTONE, SPECIALIST→PRACTITIONER.
Context of the playbook - used to help select Personas and Use Cases if none are provided
Persona OIds of the playbook
Use case OIds of the playbook
Competitor OId for competitive playbooks
Segment OId of the playbook
Proof point OIds of the playbook
Reference OIds of the playbook
@deprecated Use offeringOId instead. Kept for backward compatibility.
Brand voice oId to apply to generated playbook
"bv_123456"
Status of the playbook
active, draft, archived "active"
Reference mode of the playbook
specific, none "specific"
Proof point mode of the playbook
specific, none "none"
Additional context sources for the playbook. URL and TEXT source types are supported.
Show child attributes
Show child attributes
[ { "type": "URL", "value": "https://example.com/market-research" }, { "type": "TEXT", "value": "Additional market insights about the target segment." } ]
If true, the playbook creation will be processed asynchronously. The API will return immediately with a message indicating the request has been queued.
false
Optional callback URL. When provided with async: true, the API will POST the result to this URL once processing completes.
"https://example.com/webhook/playbook"
Workspace offering OId for the playbook. Accepts Product and Service OIds only (Solution is not supported).