Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
curl --request PATCH \
--url http://localhost:3000/v2/pages/{id}/plan \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"goals": [
{
"id": "<string>",
"description": "<string>"
}
],
"current_step": 123
}
'import requests
url = "http://localhost:3000/v2/pages/{id}/plan"
payload = {
"goals": [
{
"id": "<string>",
"description": "<string>"
}
],
"current_step": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({goals: [{id: '<string>', description: '<string>'}], current_step: 123})
};
fetch('http://localhost:3000/v2/pages/{id}/plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/v2/pages/{id}/plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'goals' => [
[
'id' => '<string>',
'description' => '<string>'
]
],
'current_step' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "http://localhost:3000/v2/pages/{id}/plan"
payload := strings.NewReader("{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("http://localhost:3000/v2/pages/{id}/plan")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/v2/pages/{id}/plan")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}"
response = http.request(request)
puts response.read_body{
"object": "page",
"id": "p_abc123",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T14:45:00.000Z",
"kind": "report",
"title": "<string>",
"agent": {
"type": "none"
},
"assignee": [
{
"type": "user_id",
"user_id": "<string>"
}
],
"targets": [
{
"type": "company",
"company": {
"id": "cmp_abc123",
"document": "12345678000190",
"tradeName": "Acme Corp",
"legalName": "Acme Ltda",
"icon": {
"type": "emoji",
"emoji": "page_icon",
"external": {
"url": "https://example.com/image.jpg"
},
"file_upload": {
"id": "fu_abc123"
},
"domain": "acme.com",
"file": {
"url": "https://s3.amazonaws.com/...",
"expiryTime": "2024-01-15T10:30:00.000Z"
},
"lucide": "file-text",
"brand": "github",
"dicebear": {
"style": "notionists-neutral",
"seed": "0256de50-f90c-49a8-81f0-3988b2b89d8d",
"backgroundColor": "b6e3f4,b6e3f4",
"options": {
"brows": "<string>",
"eyes": "<string>",
"glasses": "<string>",
"lips": "<string>",
"nose": "<string>",
"flip": true,
"rotate": 123,
"scale": 123,
"radius": 123,
"size": 123,
"backgroundType": "solid",
"backgroundRotation": [
123
],
"translateX": 123,
"translateY": 123,
"clip": true,
"randomizeIds": true
}
},
"background": "blue",
"empty": true,
"updatedBy": "dataset:empresas"
}
}
}
],
"permissions": {
"allow": [
"<string>"
],
"deny": [
"<string>"
],
"ask": [
"<string>"
]
},
"files": [
{
"type": "file_upload",
"name": "<string>",
"file_upload": {
"id": "<string>"
}
}
],
"pipelines": {},
"properties": {},
"relations": {},
"summary": "<string>",
"createdBy": {
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
},
"updatedBy": {
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
},
"icon": {
"type": "emoji",
"emoji": "page_icon",
"external": {
"url": "https://example.com/image.jpg"
},
"file_upload": {
"id": "fu_abc123"
},
"domain": "acme.com",
"file": {
"url": "https://s3.amazonaws.com/...",
"expiryTime": "2024-01-15T10:30:00.000Z"
},
"lucide": "file-text",
"brand": "github",
"dicebear": {
"style": "notionists-neutral",
"seed": "0256de50-f90c-49a8-81f0-3988b2b89d8d",
"backgroundColor": "b6e3f4,b6e3f4",
"options": {
"brows": "<string>",
"eyes": "<string>",
"glasses": "<string>",
"lips": "<string>",
"nose": "<string>",
"flip": true,
"rotate": 123,
"scale": 123,
"radius": 123,
"size": 123,
"backgroundType": "solid",
"backgroundRotation": [
123
],
"translateX": 123,
"translateY": 123,
"clip": true,
"randomizeIds": true
}
},
"background": "blue",
"empty": true,
"updatedBy": "dataset:empresas"
},
"agentFileId": "<string>",
"content": {
"rich_text": [
{
"type": "text",
"text": {
"content": "<string>",
"link": {
"url": "<string>"
}
},
"annotations": {
"bold": true,
"italic": true,
"strikethrough": true,
"underline": true,
"code": true,
"color": "<string>",
"trend": "up"
},
"plain_text": "<string>",
"href": "<string>"
}
],
"color": "<string>"
},
"parent": {
"type": "page_id",
"page_id": "<string>"
},
"usage": {
"input": 123,
"output": 123,
"total": 123,
"cacheReadInputTokens": 123,
"cacheCreationInputTokens": 123,
"cacheCreationEphemeral1hInputTokens": 123,
"cacheCreationEphemeral5mInputTokens": 123,
"totalInputTokens": 123,
"durationSeconds": 123,
"activeSeconds": 123,
"claudeUsage": {},
"claudeStats": {}
},
"runSessionId": {
"object": "session",
"id": "<string>",
"status": "provisioning",
"userId": "<string>"
},
"url": "<string>"
}Atomically updates the plan for a report page. Uses PostgreSQL jsonb_set for concurrent-safe updates.
curl --request PATCH \
--url http://localhost:3000/v2/pages/{id}/plan \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"goals": [
{
"id": "<string>",
"description": "<string>"
}
],
"current_step": 123
}
'import requests
url = "http://localhost:3000/v2/pages/{id}/plan"
payload = {
"goals": [
{
"id": "<string>",
"description": "<string>"
}
],
"current_step": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({goals: [{id: '<string>', description: '<string>'}], current_step: 123})
};
fetch('http://localhost:3000/v2/pages/{id}/plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/v2/pages/{id}/plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'goals' => [
[
'id' => '<string>',
'description' => '<string>'
]
],
'current_step' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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 := "http://localhost:3000/v2/pages/{id}/plan"
payload := strings.NewReader("{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("http://localhost:3000/v2/pages/{id}/plan")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/v2/pages/{id}/plan")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"goals\": [\n {\n \"id\": \"<string>\",\n \"description\": \"<string>\"\n }\n ],\n \"current_step\": 123\n}"
response = http.request(request)
puts response.read_body{
"object": "page",
"id": "p_abc123",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T14:45:00.000Z",
"kind": "report",
"title": "<string>",
"agent": {
"type": "none"
},
"assignee": [
{
"type": "user_id",
"user_id": "<string>"
}
],
"targets": [
{
"type": "company",
"company": {
"id": "cmp_abc123",
"document": "12345678000190",
"tradeName": "Acme Corp",
"legalName": "Acme Ltda",
"icon": {
"type": "emoji",
"emoji": "page_icon",
"external": {
"url": "https://example.com/image.jpg"
},
"file_upload": {
"id": "fu_abc123"
},
"domain": "acme.com",
"file": {
"url": "https://s3.amazonaws.com/...",
"expiryTime": "2024-01-15T10:30:00.000Z"
},
"lucide": "file-text",
"brand": "github",
"dicebear": {
"style": "notionists-neutral",
"seed": "0256de50-f90c-49a8-81f0-3988b2b89d8d",
"backgroundColor": "b6e3f4,b6e3f4",
"options": {
"brows": "<string>",
"eyes": "<string>",
"glasses": "<string>",
"lips": "<string>",
"nose": "<string>",
"flip": true,
"rotate": 123,
"scale": 123,
"radius": 123,
"size": 123,
"backgroundType": "solid",
"backgroundRotation": [
123
],
"translateX": 123,
"translateY": 123,
"clip": true,
"randomizeIds": true
}
},
"background": "blue",
"empty": true,
"updatedBy": "dataset:empresas"
}
}
}
],
"permissions": {
"allow": [
"<string>"
],
"deny": [
"<string>"
],
"ask": [
"<string>"
]
},
"files": [
{
"type": "file_upload",
"name": "<string>",
"file_upload": {
"id": "<string>"
}
}
],
"pipelines": {},
"properties": {},
"relations": {},
"summary": "<string>",
"createdBy": {
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
},
"updatedBy": {
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
},
"icon": {
"type": "emoji",
"emoji": "page_icon",
"external": {
"url": "https://example.com/image.jpg"
},
"file_upload": {
"id": "fu_abc123"
},
"domain": "acme.com",
"file": {
"url": "https://s3.amazonaws.com/...",
"expiryTime": "2024-01-15T10:30:00.000Z"
},
"lucide": "file-text",
"brand": "github",
"dicebear": {
"style": "notionists-neutral",
"seed": "0256de50-f90c-49a8-81f0-3988b2b89d8d",
"backgroundColor": "b6e3f4,b6e3f4",
"options": {
"brows": "<string>",
"eyes": "<string>",
"glasses": "<string>",
"lips": "<string>",
"nose": "<string>",
"flip": true,
"rotate": 123,
"scale": 123,
"radius": 123,
"size": 123,
"backgroundType": "solid",
"backgroundRotation": [
123
],
"translateX": 123,
"translateY": 123,
"clip": true,
"randomizeIds": true
}
},
"background": "blue",
"empty": true,
"updatedBy": "dataset:empresas"
},
"agentFileId": "<string>",
"content": {
"rich_text": [
{
"type": "text",
"text": {
"content": "<string>",
"link": {
"url": "<string>"
}
},
"annotations": {
"bold": true,
"italic": true,
"strikethrough": true,
"underline": true,
"code": true,
"color": "<string>",
"trend": "up"
},
"plain_text": "<string>",
"href": "<string>"
}
],
"color": "<string>"
},
"parent": {
"type": "page_id",
"page_id": "<string>"
},
"usage": {
"input": 123,
"output": 123,
"total": 123,
"cacheReadInputTokens": 123,
"cacheCreationInputTokens": 123,
"cacheCreationEphemeral1hInputTokens": 123,
"cacheCreationEphemeral5mInputTokens": 123,
"totalInputTokens": 123,
"durationSeconds": 123,
"activeSeconds": 123,
"claudeUsage": {},
"claudeStats": {}
},
"runSessionId": {
"object": "session",
"id": "<string>",
"status": "provisioning",
"userId": "<string>"
},
"url": "<string>"
}OAuth2 Authorization Code flow
Page ID (must be a report page)
Plan updated successfully
Object type
"page"
Unique identifier
"p_abc123"
Creation timestamp
"2024-01-15T10:30:00.000Z"
Last update timestamp
"2024-01-15T14:45:00.000Z"
Object kind (report | deal).
report, deal Page title
Agent reference
Show child attributes
Page assignees. Supports users and agents.
Show child attributes
Page targets
Show child attributes
Show child attributes
Show child attributes
Board placements keyed by pipeline id ({ stage, position }). Empty when not on any board.
Show child attributes
Custom properties (scalar values) keyed by property name. Filter/group via properties.<name>.
Relation values keyed by relation name (target key or array). Filter via relations.<name>.
Principal who created this object
Show child attributes
{
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
}
Principal who last updated this object
Show child attributes
{
"object": "user",
"id": "u_abc123",
"apiKeyId": "bsk_abc123"
}
Page icon
Show child attributes
Source PPTX file ID for the full deck used by this page agent
Page-level content. Uses the same schema as block.content and renders before child blocks.
Show child attributes
Parent relationship (Notion-compatible).
Show child attributes
Token usage summary for the page
Show child attributes
Associated page run session reference. Use expand=runSessionId.status or expand=runSessionId.userId to include run metadata.
Show child attributes
Absolute app URL for the page. Included only when requested with expand=url.