@graph8/sdk 0.251.0 → 0.262.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +9 -2
  2. package/dist/cli.js +216 -0
  3. package/dist/index.d.mts +105 -7
  4. package/dist/index.d.ts +105 -7
  5. package/dist/index.js +44 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +44 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react.d.mts +103 -7
  10. package/dist/react.d.ts +103 -7
  11. package/dist/react.js +62 -11
  12. package/dist/react.js.map +1 -1
  13. package/dist/react.mjs +53 -12
  14. package/dist/react.mjs.map +1 -1
  15. package/dist/types/README.md +7 -0
  16. package/dist/types/agency.d.ts +20 -0
  17. package/dist/types/agentSetup.d.ts +57 -0
  18. package/dist/types/api.d.ts +127 -0
  19. package/dist/types/appClient.d.ts +99 -0
  20. package/dist/types/appPlatform.d.ts +269 -0
  21. package/dist/types/appTokens.d.ts +125 -0
  22. package/dist/types/apps.d.ts +130 -0
  23. package/dist/types/audiences.d.ts +88 -0
  24. package/dist/types/calendar.d.ts +55 -0
  25. package/dist/types/campaigns.d.ts +61 -0
  26. package/dist/types/chat.d.ts +35 -0
  27. package/dist/types/cli.d.ts +14 -0
  28. package/dist/types/companies.d.ts +123 -0
  29. package/dist/types/contacts.d.ts +200 -0
  30. package/dist/types/copilot.d.ts +31 -0
  31. package/dist/types/core.d.ts +1052 -0
  32. package/dist/types/deals.d.ts +215 -0
  33. package/dist/types/enrich.d.ts +51 -0
  34. package/dist/types/fields.d.ts +84 -0
  35. package/dist/types/forms.d.ts +16 -0
  36. package/dist/types/http.d.ts +141 -0
  37. package/dist/types/inbox.d.ts +123 -0
  38. package/dist/types/index.d.ts +63 -0
  39. package/dist/types/intent.d.ts +196 -0
  40. package/dist/types/lists.d.ts +44 -0
  41. package/dist/types/mailboxes.d.ts +240 -0
  42. package/dist/types/marketplace.d.ts +62 -0
  43. package/dist/types/meetings.d.ts +70 -0
  44. package/dist/types/newsletter.d.ts +212 -0
  45. package/dist/types/notes.d.ts +57 -0
  46. package/dist/types/objects.d.ts +281 -0
  47. package/dist/types/pipelines.d.ts +135 -0
  48. package/dist/types/quotes.d.ts +143 -0
  49. package/dist/types/react.d.ts +978 -0
  50. package/dist/types/search.d.ts +99 -0
  51. package/dist/types/sequences.d.ts +255 -0
  52. package/dist/types/signals.d.ts +28 -0
  53. package/dist/types/skills.d.ts +176 -0
  54. package/dist/types/snippet.d.ts +24 -0
  55. package/dist/types/studio.d.ts +161 -0
  56. package/dist/types/tasks.d.ts +101 -0
  57. package/dist/types/types.d.ts +45 -0
  58. package/dist/types/utils.d.ts +21 -0
  59. package/dist/types/version.d.ts +10 -0
  60. package/dist/types/visitors.d.ts +29 -0
  61. package/dist/types/voice.d.ts +304 -0
  62. package/dist/types/webhooks.d.ts +71 -0
  63. package/dist/types/workflows.d.ts +229 -0
  64. package/docs/agents.md +748 -0
  65. package/docs/api/README.md +165 -0
  66. package/docs/api/accounts.d.ts +396 -0
  67. package/docs/api/accounts.md +644 -0
  68. package/docs/api/adCampaigns.d.ts +707 -0
  69. package/docs/api/adCampaigns.md +1091 -0
  70. package/docs/api/adCreatives.d.ts +996 -0
  71. package/docs/api/adCreatives.md +1708 -0
  72. package/docs/api/agency.d.ts +556 -0
  73. package/docs/api/agency.md +845 -0
  74. package/docs/api/agent.d.ts +330 -0
  75. package/docs/api/agent.md +514 -0
  76. package/docs/api/agents.d.ts +1622 -0
  77. package/docs/api/agents.md +2860 -0
  78. package/docs/api/aiInbox.d.ts +1984 -0
  79. package/docs/api/aiInbox.md +3490 -0
  80. package/docs/api/analytics.d.ts +1273 -0
  81. package/docs/api/analytics.md +2095 -0
  82. package/docs/api/apiKeys.d.ts +252 -0
  83. package/docs/api/apiKeys.md +318 -0
  84. package/docs/api/appDeployments.d.ts +236 -0
  85. package/docs/api/appDeployments.md +471 -0
  86. package/docs/api/appDomains.d.ts +171 -0
  87. package/docs/api/appDomains.md +281 -0
  88. package/docs/api/appLogs.d.ts +120 -0
  89. package/docs/api/appLogs.md +159 -0
  90. package/docs/api/appObjects.d.ts +415 -0
  91. package/docs/api/appObjects.md +568 -0
  92. package/docs/api/appPages.d.ts +557 -0
  93. package/docs/api/appPages.md +796 -0
  94. package/docs/api/appPlatformTokens.d.ts +123 -0
  95. package/docs/api/appPlatformTokens.md +172 -0
  96. package/docs/api/appointments.d.ts +2361 -0
  97. package/docs/api/appointments.md +3917 -0
  98. package/docs/api/apps.d.ts +822 -0
  99. package/docs/api/apps.md +1342 -0
  100. package/docs/api/assertUpsert.d.ts +286 -0
  101. package/docs/api/assertUpsert.md +370 -0
  102. package/docs/api/audienceSyncs.d.ts +259 -0
  103. package/docs/api/audienceSyncs.md +395 -0
  104. package/docs/api/brandKit.d.ts +686 -0
  105. package/docs/api/brandKit.md +1133 -0
  106. package/docs/api/bugReports.d.ts +181 -0
  107. package/docs/api/bugReports.md +268 -0
  108. package/docs/api/by-path.md +3260 -0
  109. package/docs/api/calendarInvites.d.ts +117 -0
  110. package/docs/api/calendarInvites.md +148 -0
  111. package/docs/api/campaignWorkflows.d.ts +152 -0
  112. package/docs/api/campaignWorkflows.md +200 -0
  113. package/docs/api/campaigns.d.ts +721 -0
  114. package/docs/api/campaigns.md +1236 -0
  115. package/docs/api/channels.d.ts +171 -0
  116. package/docs/api/channels.md +235 -0
  117. package/docs/api/cliCampaigns.d.ts +205 -0
  118. package/docs/api/cliCampaigns.md +256 -0
  119. package/docs/api/cliPipelines.d.ts +324 -0
  120. package/docs/api/cliPipelines.md +562 -0
  121. package/docs/api/clickHouse.d.ts +115 -0
  122. package/docs/api/clickHouse.md +138 -0
  123. package/docs/api/companies.d.ts +1636 -0
  124. package/docs/api/companies.md +2211 -0
  125. package/docs/api/companyIntelligence.d.ts +299 -0
  126. package/docs/api/companyIntelligence.md +488 -0
  127. package/docs/api/contacts.d.ts +2173 -0
  128. package/docs/api/contacts.md +3143 -0
  129. package/docs/api/content.d.ts +968 -0
  130. package/docs/api/content.md +1667 -0
  131. package/docs/api/contentGridSkills.d.ts +177 -0
  132. package/docs/api/contentGridSkills.md +271 -0
  133. package/docs/api/copilot.d.ts +1017 -0
  134. package/docs/api/copilot.md +1765 -0
  135. package/docs/api/crmSyncs.d.ts +215 -0
  136. package/docs/api/crmSyncs.md +301 -0
  137. package/docs/api/customerSuccess.d.ts +491 -0
  138. package/docs/api/customerSuccess.md +776 -0
  139. package/docs/api/deals.d.ts +1697 -0
  140. package/docs/api/deals.md +2436 -0
  141. package/docs/api/deliverability.d.ts +418 -0
  142. package/docs/api/deliverability.md +677 -0
  143. package/docs/api/desk.d.ts +1765 -0
  144. package/docs/api/desk.md +3007 -0
  145. package/docs/api/dialer.d.ts +1185 -0
  146. package/docs/api/dialer.md +2166 -0
  147. package/docs/api/dialerAnalytics.d.ts +187 -0
  148. package/docs/api/dialerAnalytics.md +257 -0
  149. package/docs/api/documents.d.ts +895 -0
  150. package/docs/api/documents.md +1440 -0
  151. package/docs/api/duplicates.d.ts +195 -0
  152. package/docs/api/duplicates.md +315 -0
  153. package/docs/api/eSign.d.ts +38 -0
  154. package/docs/api/eSign.md +54 -0
  155. package/docs/api/eSignature.d.ts +242 -0
  156. package/docs/api/eSignature.md +341 -0
  157. package/docs/api/enrichment.d.ts +3207 -0
  158. package/docs/api/enrichment.md +5225 -0
  159. package/docs/api/events.d.ts +115 -0
  160. package/docs/api/events.md +105 -0
  161. package/docs/api/fields.d.ts +482 -0
  162. package/docs/api/fields.md +566 -0
  163. package/docs/api/forms.d.ts +1012 -0
  164. package/docs/api/forms.md +1542 -0
  165. package/docs/api/gtmCampaigns.d.ts +662 -0
  166. package/docs/api/gtmCampaigns.md +1044 -0
  167. package/docs/api/gtmContext.d.ts +1187 -0
  168. package/docs/api/gtmContext.md +2112 -0
  169. package/docs/api/gtmDeliverability.d.ts +60 -0
  170. package/docs/api/gtmDeliverability.md +63 -0
  171. package/docs/api/gtmKnowledgeBase.d.ts +76 -0
  172. package/docs/api/gtmKnowledgeBase.md +91 -0
  173. package/docs/api/gtmLaunchHelpers.d.ts +123 -0
  174. package/docs/api/gtmLaunchHelpers.md +148 -0
  175. package/docs/api/gtmLibrary.d.ts +448 -0
  176. package/docs/api/gtmLibrary.md +780 -0
  177. package/docs/api/health.d.ts +39 -0
  178. package/docs/api/health.md +58 -0
  179. package/docs/api/imageLibrary.d.ts +341 -0
  180. package/docs/api/imageLibrary.md +569 -0
  181. package/docs/api/imports.d.ts +157 -0
  182. package/docs/api/imports.md +174 -0
  183. package/docs/api/inbox.d.ts +709 -0
  184. package/docs/api/inbox.md +1067 -0
  185. package/docs/api/install.d.ts +213 -0
  186. package/docs/api/install.md +317 -0
  187. package/docs/api/installedApps.d.ts +131 -0
  188. package/docs/api/installedApps.md +241 -0
  189. package/docs/api/integrationStatus.d.ts +142 -0
  190. package/docs/api/integrationStatus.md +205 -0
  191. package/docs/api/integrations.d.ts +2327 -0
  192. package/docs/api/integrations.md +3791 -0
  193. package/docs/api/intent.d.ts +482 -0
  194. package/docs/api/intent.md +858 -0
  195. package/docs/api/knowledge.d.ts +501 -0
  196. package/docs/api/knowledge.md +843 -0
  197. package/docs/api/knowledgeBase.d.ts +84 -0
  198. package/docs/api/knowledgeBase.md +96 -0
  199. package/docs/api/landingPages.d.ts +1411 -0
  200. package/docs/api/landingPages.md +2488 -0
  201. package/docs/api/leads.d.ts +133 -0
  202. package/docs/api/leads.md +180 -0
  203. package/docs/api/library.d.ts +217 -0
  204. package/docs/api/library.md +338 -0
  205. package/docs/api/linkedIn.d.ts +227 -0
  206. package/docs/api/linkedIn.md +289 -0
  207. package/docs/api/linkedInOutreach.d.ts +727 -0
  208. package/docs/api/linkedInOutreach.md +990 -0
  209. package/docs/api/lists.d.ts +1106 -0
  210. package/docs/api/lists.md +1609 -0
  211. package/docs/api/logs.d.ts +71 -0
  212. package/docs/api/logs.md +70 -0
  213. package/docs/api/mailboxes.d.ts +1050 -0
  214. package/docs/api/mailboxes.md +1690 -0
  215. package/docs/api/marketingIntelligence.d.ts +256 -0
  216. package/docs/api/marketingIntelligence.md +454 -0
  217. package/docs/api/marketplace.d.ts +3173 -0
  218. package/docs/api/marketplace.md +5953 -0
  219. package/docs/api/mcp.d.ts +69 -0
  220. package/docs/api/mcp.md +69 -0
  221. package/docs/api/me.d.ts +54 -0
  222. package/docs/api/me.md +56 -0
  223. package/docs/api/meetings.d.ts +539 -0
  224. package/docs/api/meetings.md +747 -0
  225. package/docs/api/newsletter.d.ts +1613 -0
  226. package/docs/api/newsletter.md +2746 -0
  227. package/docs/api/notes.d.ts +517 -0
  228. package/docs/api/notes.md +888 -0
  229. package/docs/api/notifications.d.ts +94 -0
  230. package/docs/api/notifications.md +105 -0
  231. package/docs/api/objects.d.ts +621 -0
  232. package/docs/api/objects.md +1098 -0
  233. package/docs/api/openSearch.d.ts +234 -0
  234. package/docs/api/openSearch.md +297 -0
  235. package/docs/api/ops.d.ts +299 -0
  236. package/docs/api/ops.md +339 -0
  237. package/docs/api/orgGovernance.d.ts +393 -0
  238. package/docs/api/orgGovernance.md +623 -0
  239. package/docs/api/orgVideos.d.ts +184 -0
  240. package/docs/api/orgVideos.md +252 -0
  241. package/docs/api/organizationSettings.d.ts +626 -0
  242. package/docs/api/organizationSettings.md +911 -0
  243. package/docs/api/phoneNumbers.d.ts +484 -0
  244. package/docs/api/phoneNumbers.md +777 -0
  245. package/docs/api/profile.d.ts +329 -0
  246. package/docs/api/profile.md +540 -0
  247. package/docs/api/programmaticPages.d.ts +400 -0
  248. package/docs/api/programmaticPages.md +626 -0
  249. package/docs/api/providerDomains.d.ts +866 -0
  250. package/docs/api/providerDomains.md +1446 -0
  251. package/docs/api/providerUsage.d.ts +129 -0
  252. package/docs/api/providerUsage.md +186 -0
  253. package/docs/api/public.d.ts +69 -0
  254. package/docs/api/public.md +78 -0
  255. package/docs/api/publicCopilot.d.ts +67 -0
  256. package/docs/api/publicCopilot.md +80 -0
  257. package/docs/api/publicSignals.d.ts +66 -0
  258. package/docs/api/publicSignals.md +71 -0
  259. package/docs/api/publicVisitors.d.ts +97 -0
  260. package/docs/api/publicVisitors.md +118 -0
  261. package/docs/api/quotes.d.ts +1564 -0
  262. package/docs/api/quotes.md +2553 -0
  263. package/docs/api/radar.d.ts +808 -0
  264. package/docs/api/radar.md +1431 -0
  265. package/docs/api/radarReports.d.ts +208 -0
  266. package/docs/api/radarReports.md +306 -0
  267. package/docs/api/recordRoles.d.ts +143 -0
  268. package/docs/api/recordRoles.md +175 -0
  269. package/docs/api/repos.d.ts +146 -0
  270. package/docs/api/repos.md +211 -0
  271. package/docs/api/research.d.ts +295 -0
  272. package/docs/api/research.md +534 -0
  273. package/docs/api/revenue.d.ts +402 -0
  274. package/docs/api/revenue.md +608 -0
  275. package/docs/api/revenueAnalytics.d.ts +147 -0
  276. package/docs/api/revenueAnalytics.md +212 -0
  277. package/docs/api/revenueLifecycle.d.ts +207 -0
  278. package/docs/api/revenueLifecycle.md +274 -0
  279. package/docs/api/revenueRecords.d.ts +372 -0
  280. package/docs/api/revenueRecords.md +563 -0
  281. package/docs/api/roles.d.ts +431 -0
  282. package/docs/api/roles.md +812 -0
  283. package/docs/api/salesCoach.d.ts +877 -0
  284. package/docs/api/salesCoach.md +1540 -0
  285. package/docs/api/sandbox.d.ts +210 -0
  286. package/docs/api/sandbox.md +380 -0
  287. package/docs/api/scans.d.ts +104 -0
  288. package/docs/api/scans.md +136 -0
  289. package/docs/api/scheduleBuy.d.ts +293 -0
  290. package/docs/api/scheduleBuy.md +431 -0
  291. package/docs/api/scraping.d.ts +266 -0
  292. package/docs/api/scraping.md +383 -0
  293. package/docs/api/sdrAnalytics.d.ts +138 -0
  294. package/docs/api/sdrAnalytics.md +246 -0
  295. package/docs/api/search.d.ts +598 -0
  296. package/docs/api/search.md +866 -0
  297. package/docs/api/seo.d.ts +447 -0
  298. package/docs/api/seo.md +660 -0
  299. package/docs/api/sequenceLifecycle.d.ts +439 -0
  300. package/docs/api/sequenceLifecycle.md +513 -0
  301. package/docs/api/sequences.d.ts +1936 -0
  302. package/docs/api/sequences.md +3232 -0
  303. package/docs/api/settings.d.ts +448 -0
  304. package/docs/api/settings.md +731 -0
  305. package/docs/api/signals.d.ts +1441 -0
  306. package/docs/api/signals.md +2526 -0
  307. package/docs/api/signatures.d.ts +719 -0
  308. package/docs/api/signatures.md +1247 -0
  309. package/docs/api/skills.d.ts +230 -0
  310. package/docs/api/skills.md +466 -0
  311. package/docs/api/snippet.d.ts +85 -0
  312. package/docs/api/snippet.md +106 -0
  313. package/docs/api/socialPublishing.d.ts +824 -0
  314. package/docs/api/socialPublishing.md +1245 -0
  315. package/docs/api/studioDocuments.d.ts +244 -0
  316. package/docs/api/studioDocuments.md +348 -0
  317. package/docs/api/support.d.ts +90 -0
  318. package/docs/api/support.md +76 -0
  319. package/docs/api/suppressions.d.ts +241 -0
  320. package/docs/api/suppressions.md +343 -0
  321. package/docs/api/surveys.d.ts +847 -0
  322. package/docs/api/surveys.md +1223 -0
  323. package/docs/api/tasks.d.ts +813 -0
  324. package/docs/api/tasks.md +1344 -0
  325. package/docs/api/teamMembers.d.ts +668 -0
  326. package/docs/api/teamMembers.md +1040 -0
  327. package/docs/api/teams.d.ts +784 -0
  328. package/docs/api/teams.md +1395 -0
  329. package/docs/api/usage.d.ts +277 -0
  330. package/docs/api/usage.md +389 -0
  331. package/docs/api/visitors.d.ts +690 -0
  332. package/docs/api/visitors.md +1075 -0
  333. package/docs/api/voice.d.ts +4661 -0
  334. package/docs/api/voice.md +7905 -0
  335. package/docs/api/webAnalytics.d.ts +964 -0
  336. package/docs/api/webAnalytics.md +1452 -0
  337. package/docs/api/webChat.d.ts +1704 -0
  338. package/docs/api/webChat.md +2048 -0
  339. package/docs/api/webhooks.d.ts +251 -0
  340. package/docs/api/webhooks.md +386 -0
  341. package/docs/api/websiteEditor.d.ts +324 -0
  342. package/docs/api/websiteEditor.md +517 -0
  343. package/docs/api/work.d.ts +2298 -0
  344. package/docs/api/work.md +3096 -0
  345. package/docs/api/workbench.d.ts +2962 -0
  346. package/docs/api/workbench.md +4884 -0
  347. package/docs/api/workflows.d.ts +1218 -0
  348. package/docs/api/workflows.md +2302 -0
  349. package/docs/sdk-clients.md +4339 -0
  350. package/package.json +10 -3
@@ -0,0 +1,1667 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.content`: Content
4
+
5
+ 41 operations (18 read, 10 write, 4 destructive, 7 billable, 2 external).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.content.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
8
+
9
+ Every example below assumes this setup (server-side, API key):
10
+
11
+ ```ts
12
+ import { g8 } from "@graph8/sdk";
13
+
14
+ g8.init({ apiKey: process.env.G8_API_KEY! });
15
+ ```
16
+
17
+ Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
18
+
19
+ Exact TypeScript types for every operation on this page, and every schema they use: [content.d.ts](content.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`addContentGridRow`](#op-addcontentgridrow) | `POST /api/v1/content/grids/{grid_id}/rows` | write | `campaigns:write` | Add Content Grid Row |
26
+ | [`backfillContentPages`](#op-backfillcontentpages) | `POST /api/v1/content/pages/backfill` | write | `campaigns:write` | Backfill Content Pages |
27
+ | [`createContentApprovalShare`](#op-createcontentapprovalshare) | `POST /api/v1/content/calendar/approvals` | write | `campaigns:write` | Create Content Approval Share |
28
+ | [`createContentFromIdea`](#op-createcontentfromidea) | `POST /api/v1/content/calendar/ideas/{idea_id}/create-content` | billable | `campaigns:run` | Create Content From Idea |
29
+ | [`createContentGrid`](#op-createcontentgrid) | `POST /api/v1/content/grids` | write | `campaigns:write` | Create Content Grid |
30
+ | [`createContentPage`](#op-createcontentpage) | `POST /api/v1/content/pages` | write | `campaigns:write` | Create Content Page |
31
+ | [`deleteContentGrid`](#op-deletecontentgrid) | `DELETE /api/v1/content/grids/{grid_id}` | destructive | `campaigns:delete` | Delete Content Grid |
32
+ | [`deleteContentGridRow`](#op-deletecontentgridrow) | `DELETE /api/v1/content/grids/{grid_id}/rows/{row_id}` | destructive | `campaigns:delete` | Delete Content Grid Row |
33
+ | [`deleteContentPage`](#op-deletecontentpage) | `DELETE /api/v1/content/pages/{page_id}` | destructive | `campaigns:delete` | Delete Content Page |
34
+ | [`deleteContentWorkspacePage`](#op-deletecontentworkspacepage) | `DELETE /api/v1/content-workspace/pages/{page_id}` | destructive | `campaigns:delete` | Delete Content Workspace Page |
35
+ | [`enrichContentPage`](#op-enrichcontentpage) | `POST /api/v1/content/pages/{page_id}/enrich-seo` | billable | `campaigns:run` | Enrich Content Page |
36
+ | [`enrichContentPagesBulk`](#op-enrichcontentpagesbulk) | `POST /api/v1/content/pages/enrich-seo-bulk` | billable | `campaigns:run` | Enrich Content Pages Bulk |
37
+ | [`getContentBackfillStatus`](#op-getcontentbackfillstatus) | `GET /api/v1/content/pages/backfill/status/{task_id}` | read | `campaigns:read` | Get Content Backfill Status |
38
+ | [`getContentCalendar`](#op-getcontentcalendar) | `GET /api/v1/content/calendar` | read | `campaigns:read` | Get Content Calendar |
39
+ | [`getContentGrid`](#op-getcontentgrid) | `GET /api/v1/content/grids/{grid_id}` | read | `campaigns:read` | Get Content Grid |
40
+ | [`getContentIdeaEvidence`](#op-getcontentideaevidence) | `GET /api/v1/content/calendar/ideas/{idea_id}/evidence` | read | `campaigns:read` | Get Content Idea Evidence |
41
+ | [`getContentImportStatus`](#op-getcontentimportstatus) | `GET /api/v1/content-workspace/import/status/{job_id}` | read | `campaigns:read` | Get Content Import Status |
42
+ | [`getContentPage`](#op-getcontentpage) | `GET /api/v1/content/pages/{page_id}` | read | `campaigns:read` | Get Content Page |
43
+ | [`getContentSeoSummary`](#op-getcontentseosummary) | `GET /api/v1/content-workspace/seo-summary` | read | `campaigns:read` | Get Content Seo Summary |
44
+ | [`getContentSignalMiningStatus`](#op-getcontentsignalminingstatus) | `GET /api/v1/content/calendar/mine-signals/status` | read | `campaigns:read` | Get Content Signal Mining Status |
45
+ | [`getContentWorkspacePage`](#op-getcontentworkspacepage) | `GET /api/v1/content-workspace/pages/{page_id}` | read | `campaigns:read` | Get Content Workspace Page |
46
+ | [`getIdeaCorpusStats`](#op-getideacorpusstats) | `GET /api/v1/content/calendar/ideas/corpus-stats` | read | `campaigns:read` | Get Idea Corpus Stats |
47
+ | [`importContentPagesFromSitemap`](#op-importcontentpagesfromsitemap) | `POST /api/v1/content/pages/import-sitemap` | write | `campaigns:write` | Import Content Pages From Sitemap |
48
+ | [`listContentApprovalShares`](#op-listcontentapprovalshares) | `GET /api/v1/content/calendar/approvals` | read | `campaigns:read` | List Content Approval Shares |
49
+ | [`listContentGrids`](#op-listcontentgrids) | `GET /api/v1/content/grids` | read | `campaigns:read` | List Content Grids |
50
+ | [`listContentIdeas`](#op-listcontentideas) | `GET /api/v1/content/calendar/ideas` | read | `campaigns:read` | List Content Ideas |
51
+ | [`listContentImportJobs`](#op-listcontentimportjobs) | `GET /api/v1/content-workspace/import/jobs` | read | `campaigns:read` | List Content Import Jobs |
52
+ | [`listContentPages`](#op-listcontentpages) | `GET /api/v1/content/pages` | read | `campaigns:read` | List Content Pages |
53
+ | [`listContentTypes`](#op-listcontenttypes) | `GET /api/v1/content/types` | read | `campaigns:read` | List Content Types |
54
+ | [`listContentWorkspacePages`](#op-listcontentworkspacepages) | `GET /api/v1/content-workspace/pages` | read | `campaigns:read` | List Content Workspace Pages |
55
+ | [`listWebsiteTemplates`](#op-listwebsitetemplates) | `GET /api/v1/content/website-templates` | read | `campaigns:read` | List Website Templates |
56
+ | [`mineContentSignals`](#op-minecontentsignals) | `POST /api/v1/content/calendar/mine-signals` | billable | `campaigns:run` | Mine Content Signals |
57
+ | [`patchContentIdea`](#op-patchcontentidea) | `PATCH /api/v1/content/calendar/ideas/{idea_id}` | write | `campaigns:write` | Patch Content Idea |
58
+ | [`repurposeContentToAd`](#op-repurposecontenttoad) | `POST /api/v1/content/calendar/repurpose/ad` | billable | `campaigns:run` | Repurpose Content To Ad |
59
+ | [`repurposeContentToLinkedinPost`](#op-repurposecontenttolinkedinpost) | `POST /api/v1/content/calendar/repurpose/linkedin-post` | billable | `campaigns:run` | Repurpose Content To Linkedin Post |
60
+ | [`retryContentPublish`](#op-retrycontentpublish) | `POST /api/v1/content/calendar/{content_type}/{content_id}/retry-publish` | external | `campaigns:run` | Retry Content Publish |
61
+ | [`scheduleContentPiece`](#op-schedulecontentpiece) | `PATCH /api/v1/content/calendar/{content_type}/{content_id}/schedule` | external | `campaigns:run` | Schedule Content Piece |
62
+ | [`startContentCrawlImport`](#op-startcontentcrawlimport) | `POST /api/v1/content-workspace/import/crawl` | billable | `campaigns:run` | Start Content Crawl Import |
63
+ | [`startContentSitemapImport`](#op-startcontentsitemapimport) | `POST /api/v1/content-workspace/import/sitemap` | write | `campaigns:write` | Start Content Sitemap Import |
64
+ | [`updateContentPage`](#op-updatecontentpage) | `PATCH /api/v1/content/pages/{page_id}` | write | `campaigns:write` | Update Content Page |
65
+ | [`updateContentWorkspacePage`](#op-updatecontentworkspacepage) | `PATCH /api/v1/content-workspace/pages/{page_id}` | write | `campaigns:write` | Update Content Workspace Page |
66
+
67
+ ---
68
+
69
+ <a id="op-addcontentgridrow"></a>
70
+
71
+ ### `g8.api.content.addContentGridRow(input)`
72
+
73
+ **Add Content Grid Row**
74
+
75
+ - HTTP: `POST /api/v1/content/grids/{grid_id}/rows`
76
+ - operationId: `add_content_grid_row_content_grids__grid_id__rows_post` (also callable as `g8.api.call("add_content_grid_row_content_grids__grid_id__rows_post", input)`)
77
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
78
+ - API-key scope: `campaigns:write`
79
+
80
+ Add one job to a grid. FREE - queuing it is not running it.
81
+
82
+ **Input**
83
+
84
+ | Field | Type | Required | Description |
85
+ |---|---|---|---|
86
+ | `path.grid_id` | `string` | yes | Content grid id. |
87
+ | `body` | `AddRowRequest` | yes | Request body; fields below. |
88
+
89
+ Body fields (`AddRowRequest`):
90
+
91
+ | Field | Type | Required | Description |
92
+ |---|---|---|---|
93
+ | `body.job_type` | `string` | yes | |
94
+ | `body.author_team_member_id` | `string \| null` | no | |
95
+ | `body.original_body` | `string \| null` | no | |
96
+ | `body.original_meta` | `string \| null` | no | |
97
+ | `body.original_title` | `string \| null` | no | |
98
+ | `body.source_url` | `string \| null` | no | |
99
+ | `body.target_keyword` | `string \| null` | no | |
100
+
101
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
102
+
103
+ Other envelope fields: `pagination` (PaginationMeta).
104
+
105
+ **Example**
106
+
107
+ ```ts
108
+ const result = await g8.api.content.addContentGridRow({ path: { grid_id: "id" }, body: { job_type: "example" } });
109
+ ```
110
+
111
+ ---
112
+
113
+ <a id="op-backfillcontentpages"></a>
114
+
115
+ ### `g8.api.content.backfillContentPages(input?)`
116
+
117
+ **Backfill Content Pages**
118
+
119
+ - HTTP: `POST /api/v1/content/pages/backfill`
120
+ - operationId: `backfill_content_pages_content_pages_backfill_post` (also callable as `g8.api.call("backfill_content_pages_content_pages_backfill_post", input)`)
121
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
122
+ - API-key scope: `campaigns:write`
123
+
124
+ Create inventory rows from website scrapes the org already has. FREE.
125
+
126
+ Reads `cb_intelligence_data` - no site is fetched and no provider is
127
+ called. IDEMPOTENT: a page that already exists is skipped rather than
128
+ duplicated.
129
+
130
+ **Input**: none.
131
+
132
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
133
+
134
+ Other envelope fields: `pagination` (PaginationMeta).
135
+
136
+ **Example**
137
+
138
+ ```ts
139
+ const result = await g8.api.content.backfillContentPages();
140
+ ```
141
+
142
+ ---
143
+
144
+ <a id="op-createcontentapprovalshare"></a>
145
+
146
+ ### `g8.api.content.createContentApprovalShare(input)`
147
+
148
+ **Create Content Approval Share**
149
+
150
+ - HTTP: `POST /api/v1/content/calendar/approvals`
151
+ - operationId: `create_content_approval_share_content_calendar_approvals_post` (also callable as `g8.api.call("create_content_approval_share_content_calendar_approvals_post", input)`)
152
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
153
+ - API-key scope: `campaigns:write`
154
+
155
+ Mint a client-approval link for a piece. FREE.
156
+
157
+ The link is a BEARER URL: whoever holds it can approve or reject the piece
158
+ with no graph8 login. That is what it is for - it goes to a client - but it
159
+ means `expires_in_days` is the only thing bounding it, so send a short one
160
+ rather than taking the fourteen-day default by accident.
161
+
162
+ **Input**
163
+
164
+ | Field | Type | Required | Description |
165
+ |---|---|---|---|
166
+ | `body` | `CreateApprovalShareRequest` | yes | Request body; fields below. |
167
+
168
+ Body fields (`CreateApprovalShareRequest`):
169
+
170
+ | Field | Type | Required | Description |
171
+ |---|---|---|---|
172
+ | `body.content_id` | `string` | yes | |
173
+ | `body.content_type` | `string` | yes | |
174
+ | `body.expires_in_days` | `integer` | no | default `14`, min 1, max 90 |
175
+
176
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
177
+
178
+ Other envelope fields: `pagination` (PaginationMeta).
179
+
180
+ **Example**
181
+
182
+ ```ts
183
+ const result = await g8.api.content.createContentApprovalShare({ body: { content_id: "id", content_type: "example" } });
184
+ ```
185
+
186
+ ---
187
+
188
+ <a id="op-createcontentfromidea"></a>
189
+
190
+ ### `g8.api.content.createContentFromIdea(input)`
191
+
192
+ **Create Content From Idea**
193
+
194
+ - HTTP: `POST /api/v1/content/calendar/ideas/{idea_id}/create-content`
195
+ - operationId: `create_content_from_idea_content_calendar_ideas__idea_id__create_content_post` (also callable as `g8.api.call("create_content_from_idea_content_calendar_ideas__idea_id__create_content_post", input)`)
196
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
197
+ - API-key scope: `campaigns:run`
198
+
199
+ Turn a mined idea into a DRAFT. SPENDS CREDIT, immediately and inline.
200
+
201
+ Not queued - the generation runs during this call. `format` decides which
202
+ generator runs and therefore what it costs; a landing page is the
203
+ expensive one.
204
+
205
+ **Input**
206
+
207
+ | Field | Type | Required | Description |
208
+ |---|---|---|---|
209
+ | `path.idea_id` | `string` | yes | Mined idea id. |
210
+ | `body` | `CreateFromIdeaRequest` | yes | Request body; fields below. |
211
+
212
+ Body fields (`CreateFromIdeaRequest`):
213
+
214
+ | Field | Type | Required | Description |
215
+ |---|---|---|---|
216
+ | `body.format` | `"landing_page" \| "linkedin_post" \| "ad_creative" \| "newsletter_section"` | yes | |
217
+
218
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
219
+
220
+ Other envelope fields: `pagination` (PaginationMeta).
221
+
222
+ **Example**
223
+
224
+ ```ts
225
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
226
+ const result = await g8.api.content.createContentFromIdea({ path: { idea_id: "id" }, body: { format: "landing_page" } });
227
+ ```
228
+
229
+ ---
230
+
231
+ <a id="op-createcontentgrid"></a>
232
+
233
+ ### `g8.api.content.createContentGrid(input)`
234
+
235
+ **Create Content Grid**
236
+
237
+ - HTTP: `POST /api/v1/content/grids`
238
+ - operationId: `create_content_grid_content_grids_post` (also callable as `g8.api.call("create_content_grid_content_grids_post", input)`)
239
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
240
+ - API-key scope: `campaigns:write`
241
+
242
+ Create a grid - a batch of content jobs. FREE.
243
+
244
+ Creating the grid costs nothing; the jobs inside it cost when they RUN.
245
+
246
+ **Input**
247
+
248
+ | Field | Type | Required | Description |
249
+ |---|---|---|---|
250
+ | `body` | `CreateGridRequest` | yes | Request body; fields below. |
251
+
252
+ Body fields (`CreateGridRequest`):
253
+
254
+ | Field | Type | Required | Description |
255
+ |---|---|---|---|
256
+ | `body.grid_type` | `string` | yes | |
257
+ | `body.name` | `string` | yes | |
258
+ | `body.workflow_config` | `Record<string, unknown> \| null` | no | |
259
+
260
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
261
+
262
+ Other envelope fields: `pagination` (PaginationMeta).
263
+
264
+ **Example**
265
+
266
+ ```ts
267
+ const result = await g8.api.content.createContentGrid({ body: { grid_type: "example", name: "Example" } });
268
+ ```
269
+
270
+ ---
271
+
272
+ <a id="op-createcontentpage"></a>
273
+
274
+ ### `g8.api.content.createContentPage(input)`
275
+
276
+ **Create Content Page**
277
+
278
+ - HTTP: `POST /api/v1/content/pages`
279
+ - operationId: `create_content_page_content_pages_post` (also callable as `g8.api.call("create_content_page_content_pages_post", input)`)
280
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
281
+ - API-key scope: `campaigns:write`
282
+
283
+ Add one page to the inventory. FREE.
284
+
285
+ `is_owned` defaults TRUE - this is the org's own page. Set it false to
286
+ track a competitor's, which changes what the analytics surfaces count it
287
+ towards.
288
+
289
+ **Input**
290
+
291
+ | Field | Type | Required | Description |
292
+ |---|---|---|---|
293
+ | `body` | `CreatePageRequest` | yes | Request body; fields below. |
294
+
295
+ Body fields (`CreatePageRequest`):
296
+
297
+ | Field | Type | Required | Description |
298
+ |---|---|---|---|
299
+ | `body.url` | `string` | yes | |
300
+ | `body.content_status` | `string \| null` | no | default `"idea"` |
301
+ | `body.content_type` | `string \| null` | no | default `"website"` |
302
+ | `body.is_owned` | `boolean` | no | default `true` |
303
+ | `body.title` | `string \| null` | no | |
304
+
305
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
306
+
307
+ Other envelope fields: `pagination` (PaginationMeta).
308
+
309
+ **Example**
310
+
311
+ ```ts
312
+ const result = await g8.api.content.createContentPage({ body: { url: "https://example.com" } });
313
+ ```
314
+
315
+ ---
316
+
317
+ <a id="op-deletecontentgrid"></a>
318
+
319
+ ### `g8.api.content.deleteContentGrid(input)`
320
+
321
+ **Delete Content Grid**
322
+
323
+ - HTTP: `DELETE /api/v1/content/grids/{grid_id}`
324
+ - operationId: `delete_content_grid_content_grids__grid_id__delete` (also callable as `g8.api.call("delete_content_grid_content_grids__grid_id__delete", input)`)
325
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
326
+ - API-key scope: `campaigns:delete`
327
+
328
+ Delete a grid AND every row in it. The pages the rows referenced stay.
329
+
330
+ Spends nothing.
331
+
332
+ **Input**
333
+
334
+ | Field | Type | Required | Description |
335
+ |---|---|---|---|
336
+ | `path.grid_id` | `string` | yes | Content grid id. |
337
+
338
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
339
+
340
+ Other envelope fields: `pagination` (PaginationMeta).
341
+
342
+ **Example**
343
+
344
+ ```ts
345
+ // destructive: deletes or archives data; confirm with a human before calling.
346
+ const result = await g8.api.content.deleteContentGrid({ path: { grid_id: "id" } });
347
+ ```
348
+
349
+ ---
350
+
351
+ <a id="op-deletecontentgridrow"></a>
352
+
353
+ ### `g8.api.content.deleteContentGridRow(input)`
354
+
355
+ **Delete Content Grid Row**
356
+
357
+ - HTTP: `DELETE /api/v1/content/grids/{grid_id}/rows/{row_id}`
358
+ - operationId: `delete_content_grid_row_content_grids__grid_id__rows__row_id__delete` (also callable as `g8.api.call("delete_content_grid_row_content_grids__grid_id__rows__row_id__delete", input)`)
359
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
360
+ - API-key scope: `campaigns:delete`
361
+
362
+ Remove one job from a grid.
363
+
364
+ Spends nothing.
365
+
366
+ **Input**
367
+
368
+ | Field | Type | Required | Description |
369
+ |---|---|---|---|
370
+ | `path.grid_id` | `string` | yes | Content grid id. |
371
+ | `path.row_id` | `string` | yes | Row id within the grid. |
372
+
373
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
374
+
375
+ Other envelope fields: `pagination` (PaginationMeta).
376
+
377
+ **Example**
378
+
379
+ ```ts
380
+ // destructive: deletes or archives data; confirm with a human before calling.
381
+ const result = await g8.api.content.deleteContentGridRow({ path: { grid_id: "id", row_id: "id" } });
382
+ ```
383
+
384
+ ---
385
+
386
+ <a id="op-deletecontentpage"></a>
387
+
388
+ ### `g8.api.content.deleteContentPage(input)`
389
+
390
+ **Delete Content Page**
391
+
392
+ - HTTP: `DELETE /api/v1/content/pages/{page_id}`
393
+ - operationId: `delete_content_page_content_pages__page_id__delete` (also callable as `g8.api.call("delete_content_page_content_pages__page_id__delete", input)`)
394
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
395
+ - API-key scope: `campaigns:delete`
396
+
397
+ Remove a page from the inventory.
398
+
399
+ Spends nothing.
400
+
401
+ **Input**
402
+
403
+ | Field | Type | Required | Description |
404
+ |---|---|---|---|
405
+ | `path.page_id` | `string` | yes | Content page id. |
406
+ | `query.force` | `boolean` | no | Delete even when the page is referenced by grid rows or calendar entries. Without it, a referenced page is refused rather than silently orphaning them. default `false` |
407
+
408
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
409
+
410
+ Other envelope fields: `pagination` (PaginationMeta).
411
+
412
+ **Example**
413
+
414
+ ```ts
415
+ // destructive: deletes or archives data; confirm with a human before calling.
416
+ const result = await g8.api.content.deleteContentPage({ path: { page_id: "id" } });
417
+ ```
418
+
419
+ ---
420
+
421
+ <a id="op-deletecontentworkspacepage"></a>
422
+
423
+ ### `g8.api.content.deleteContentWorkspacePage(input)`
424
+
425
+ **Delete Content Workspace Page**
426
+
427
+ - HTTP: `DELETE /api/v1/content-workspace/pages/{page_id}`
428
+ - operationId: `delete_content_workspace_page_content_workspace_pages__page_id__delete` (also callable as `g8.api.call("delete_content_workspace_page_content_workspace_pages__page_id__delete", input)`)
429
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
430
+ - API-key scope: `campaigns:delete`
431
+
432
+ Delete a page from the workspace. The live website is not touched.
433
+
434
+ Spends nothing.
435
+
436
+ **Input**
437
+
438
+ | Field | Type | Required | Description |
439
+ |---|---|---|---|
440
+ | `path.page_id` | `string` | yes | Content page id (UUID). |
441
+
442
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
443
+
444
+ Other envelope fields: `pagination` (PaginationMeta).
445
+
446
+ **Example**
447
+
448
+ ```ts
449
+ // destructive: deletes or archives data; confirm with a human before calling.
450
+ const result = await g8.api.content.deleteContentWorkspacePage({ path: { page_id: "id" } });
451
+ ```
452
+
453
+ ---
454
+
455
+ <a id="op-enrichcontentpage"></a>
456
+
457
+ ### `g8.api.content.enrichContentPage(input)`
458
+
459
+ **Enrich Content Page**
460
+
461
+ - HTTP: `POST /api/v1/content/pages/{page_id}/enrich-seo`
462
+ - operationId: `enrich_content_page_content_pages__page_id__enrich_seo_post` (also callable as `g8.api.call("enrich_content_page_content_pages__page_id__enrich_seo_post", input)`)
463
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
464
+ - API-key scope: `campaigns:run`
465
+
466
+ Buy SEO data for ONE page. SPENDS PROVIDER CREDIT.
467
+
468
+ The bounded version of the bulk route - one page, one charge.
469
+
470
+ **Input**
471
+
472
+ | Field | Type | Required | Description |
473
+ |---|---|---|---|
474
+ | `path.page_id` | `string` | yes | Content page id. |
475
+
476
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
477
+
478
+ Other envelope fields: `pagination` (PaginationMeta).
479
+
480
+ **Example**
481
+
482
+ ```ts
483
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
484
+ const result = await g8.api.content.enrichContentPage({ path: { page_id: "id" } });
485
+ ```
486
+
487
+ ---
488
+
489
+ <a id="op-enrichcontentpagesbulk"></a>
490
+
491
+ ### `g8.api.content.enrichContentPagesBulk(input)`
492
+
493
+ **Enrich Content Pages Bulk**
494
+
495
+ - HTTP: `POST /api/v1/content/pages/enrich-seo-bulk`
496
+ - operationId: `enrich_content_pages_bulk_content_pages_enrich_seo_bulk_post` (also callable as `g8.api.call("enrich_content_pages_bulk_content_pages_enrich_seo_bulk_post", input)`)
497
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
498
+ - API-key scope: `campaigns:run`
499
+
500
+ Buy SEO data for many pages at once. SPENDS PROVIDER CREDIT, per page.
501
+
502
+ `limit` is THE CEILING ON THE SPEND, not a page size - omit `page_ids` and
503
+ this enriches the next `limit` un-enriched pages and bills for each of
504
+ them. Send it deliberately.
505
+
506
+ **Input**
507
+
508
+ | Field | Type | Required | Description |
509
+ |---|---|---|---|
510
+ | `body` | `EnrichSeoBulkRequest` | yes | Request body; fields below. |
511
+
512
+ Body fields (`EnrichSeoBulkRequest`):
513
+
514
+ | Field | Type | Required | Description |
515
+ |---|---|---|---|
516
+ | `body.limit` | `integer` | no | Maximum pages enriched, and therefore the maximum spend. default `50` |
517
+ | `body.page_ids` | `Array<string> \| null` | no | |
518
+
519
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
520
+
521
+ Other envelope fields: `pagination` (PaginationMeta).
522
+
523
+ **Example**
524
+
525
+ ```ts
526
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
527
+ const result = await g8.api.content.enrichContentPagesBulk({ body: {} });
528
+ ```
529
+
530
+ ---
531
+
532
+ <a id="op-getcontentbackfillstatus"></a>
533
+
534
+ ### `g8.api.content.getContentBackfillStatus(input)`
535
+
536
+ **Get Content Backfill Status**
537
+
538
+ - HTTP: `GET /api/v1/content/pages/backfill/status/{task_id}`
539
+ - operationId: `get_content_backfill_status_content_pages_backfill_status__task_id__get` (also callable as `g8.api.call("get_content_backfill_status_content_pages_backfill_status__task_id__get", input)`)
540
+ - Tier: `read`: reads data; safe to call and to retry
541
+ - API-key scope: `campaigns:read`
542
+
543
+ Progress of a background content backfill. FREE - the poll target.
544
+
545
+ **Input**
546
+
547
+ | Field | Type | Required | Description |
548
+ |---|---|---|---|
549
+ | `path.task_id` | `string` | yes | Task id returned by `POST /content/pages/backfill`. |
550
+
551
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
552
+
553
+ Other envelope fields: `pagination` (PaginationMeta).
554
+
555
+ **Example**
556
+
557
+ ```ts
558
+ const result = await g8.api.content.getContentBackfillStatus({ path: { task_id: "id" } });
559
+ ```
560
+
561
+ ---
562
+
563
+ <a id="op-getcontentcalendar"></a>
564
+
565
+ ### `g8.api.content.getContentCalendar(input)`
566
+
567
+ **Get Content Calendar**
568
+
569
+ - HTTP: `GET /api/v1/content/calendar`
570
+ - operationId: `get_content_calendar_content_calendar_get` (also callable as `g8.api.call("get_content_calendar_content_calendar_get", input)`)
571
+ - Tier: `read`: reads data; safe to call and to retry
572
+ - API-key scope: `campaigns:read`
573
+
574
+ Everything scheduled in a date window, across all five lanes. FREE.
575
+
576
+ Also embeds the non-archived mined ideas, so this one call answers both
577
+ "what is shipping" and "what could we ship".
578
+
579
+ `task_scope` is resolved from the key's own credential, not from a browser
580
+ session - a key narrowed away from tasks sees the calendar without the
581
+ review tasks attached to it.
582
+
583
+ **Input**
584
+
585
+ | Field | Type | Required | Description |
586
+ |---|---|---|---|
587
+ | `query.date_from` | `string (date-time)` | yes | Window start, inclusive. |
588
+ | `query.date_to` | `string (date-time)` | yes | Window end, inclusive. |
589
+ | `query.types` | `string \| null` | no | Comma-separated lanes to include. Omit for all five. Same vocabulary as the `content_type` path parameter. |
590
+ | `query.include_unscheduled` | `boolean` | no | Include pieces with no planned date, capped per lane. default `true` |
591
+
592
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
593
+
594
+ Other envelope fields: `pagination` (PaginationMeta).
595
+
596
+ **Example**
597
+
598
+ ```ts
599
+ const result = await g8.api.content.getContentCalendar({
600
+ query: { date_from: "2026-01-01T09:00:00Z", date_to: "2026-01-01T09:00:00Z" },
601
+ });
602
+ ```
603
+
604
+ ---
605
+
606
+ <a id="op-getcontentgrid"></a>
607
+
608
+ ### `g8.api.content.getContentGrid(input)`
609
+
610
+ **Get Content Grid**
611
+
612
+ - HTTP: `GET /api/v1/content/grids/{grid_id}`
613
+ - operationId: `get_content_grid_content_grids__grid_id__get` (also callable as `g8.api.call("get_content_grid_content_grids__grid_id__get", input)`)
614
+ - Tier: `read`: reads data; safe to call and to retry
615
+ - API-key scope: `campaigns:read`
616
+
617
+ One grid with all its rows and columns. FREE.
618
+
619
+ **Input**
620
+
621
+ | Field | Type | Required | Description |
622
+ |---|---|---|---|
623
+ | `path.grid_id` | `string` | yes | Content grid id. |
624
+
625
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
626
+
627
+ Other envelope fields: `pagination` (PaginationMeta).
628
+
629
+ **Example**
630
+
631
+ ```ts
632
+ const result = await g8.api.content.getContentGrid({ path: { grid_id: "id" } });
633
+ ```
634
+
635
+ ---
636
+
637
+ <a id="op-getcontentideaevidence"></a>
638
+
639
+ ### `g8.api.content.getContentIdeaEvidence(input)`
640
+
641
+ **Get Content Idea Evidence**
642
+
643
+ - HTTP: `GET /api/v1/content/calendar/ideas/{idea_id}/evidence`
644
+ - operationId: `get_content_idea_evidence_content_calendar_ideas__idea_id__evidence_get` (also callable as `g8.api.call("get_content_idea_evidence_content_calendar_ideas__idea_id__evidence_get", input)`)
645
+ - Tier: `read`: reads data; safe to call and to retry
646
+ - API-key scope: `campaigns:read`
647
+
648
+ Every conversation the idea was mined from. FREE.
649
+
650
+ The provenance trail - this is how a human checks that a mined idea is
651
+ real before spending a generation on it.
652
+
653
+ **Input**
654
+
655
+ | Field | Type | Required | Description |
656
+ |---|---|---|---|
657
+ | `path.idea_id` | `string` | yes | Mined idea id. |
658
+
659
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
660
+
661
+ Other envelope fields: `pagination` (PaginationMeta).
662
+
663
+ `StudioContentListPayload` fields:
664
+
665
+ | Field | Type | Required | Description |
666
+ |---|---|---|---|
667
+ | `items` | `Array<unknown>` | no | |
668
+
669
+ **Example**
670
+
671
+ ```ts
672
+ const result = await g8.api.content.getContentIdeaEvidence({ path: { idea_id: "id" } });
673
+ ```
674
+
675
+ ---
676
+
677
+ <a id="op-getcontentimportstatus"></a>
678
+
679
+ ### `g8.api.content.getContentImportStatus(input)`
680
+
681
+ **Get Content Import Status**
682
+
683
+ - HTTP: `GET /api/v1/content-workspace/import/status/{job_id}`
684
+ - operationId: `get_content_import_status_content_workspace_import_status__job_id__get` (also callable as `g8.api.call("get_content_import_status_content_workspace_import_status__job_id__get", input)`)
685
+ - Tier: `read`: reads data; safe to call and to retry
686
+ - API-key scope: `campaigns:read`
687
+
688
+ One import job's progress: found, scraped, imported, skipped, failed. FREE.
689
+
690
+ **Input**
691
+
692
+ | Field | Type | Required | Description |
693
+ |---|---|---|---|
694
+ | `path.job_id` | `string` | yes | Import job id (UUID). |
695
+
696
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
697
+
698
+ Other envelope fields: `pagination` (PaginationMeta).
699
+
700
+ **Example**
701
+
702
+ ```ts
703
+ const result = await g8.api.content.getContentImportStatus({ path: { job_id: "id" } });
704
+ ```
705
+
706
+ ---
707
+
708
+ <a id="op-getcontentpage"></a>
709
+
710
+ ### `g8.api.content.getContentPage(input)`
711
+
712
+ **Get Content Page**
713
+
714
+ - HTTP: `GET /api/v1/content/pages/{page_id}`
715
+ - operationId: `get_content_page_content_pages__page_id__get` (also callable as `g8.api.call("get_content_page_content_pages__page_id__get", input)`)
716
+ - Tier: `read`: reads data; safe to call and to retry
717
+ - API-key scope: `campaigns:read`
718
+
719
+ One page, including its stored raw HTML. FREE.
720
+
721
+ **Input**
722
+
723
+ | Field | Type | Required | Description |
724
+ |---|---|---|---|
725
+ | `path.page_id` | `string` | yes | Content page id. |
726
+
727
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
728
+
729
+ Other envelope fields: `pagination` (PaginationMeta).
730
+
731
+ **Example**
732
+
733
+ ```ts
734
+ const result = await g8.api.content.getContentPage({ path: { page_id: "id" } });
735
+ ```
736
+
737
+ ---
738
+
739
+ <a id="op-getcontentseosummary"></a>
740
+
741
+ ### `g8.api.content.getContentSeoSummary(input?)`
742
+
743
+ **Get Content Seo Summary**
744
+
745
+ - HTTP: `GET /api/v1/content-workspace/seo-summary`
746
+ - operationId: `get_content_seo_summary_content_workspace_seo_summary_get` (also callable as `g8.api.call("get_content_seo_summary_content_workspace_seo_summary_get", input)`)
747
+ - Tier: `read`: reads data; safe to call and to retry
748
+ - API-key scope: `campaigns:read`
749
+
750
+ Aggregate SEO health: issues by type and severity, average score, score bands. FREE.
751
+
752
+ **Input**
753
+
754
+ | Field | Type | Required | Description |
755
+ |---|---|---|---|
756
+ | `query.domain` | `string \| null` | no | One owned domain. Omit for all owned pages. |
757
+
758
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
759
+
760
+ Other envelope fields: `pagination` (PaginationMeta).
761
+
762
+ **Example**
763
+
764
+ ```ts
765
+ const result = await g8.api.content.getContentSeoSummary();
766
+ ```
767
+
768
+ ---
769
+
770
+ <a id="op-getcontentsignalminingstatus"></a>
771
+
772
+ ### `g8.api.content.getContentSignalMiningStatus(input?)`
773
+
774
+ **Get Content Signal Mining Status**
775
+
776
+ - HTTP: `GET /api/v1/content/calendar/mine-signals/status`
777
+ - operationId: `get_content_signal_mining_status_content_calendar_mine_signals_status_get` (also callable as `g8.api.call("get_content_signal_mining_status_content_calendar_mine_signals_status_get", input)`)
778
+ - Tier: `read`: reads data; safe to call and to retry
779
+ - API-key scope: `campaigns:read`
780
+
781
+ Progress of the org's signal-mining run. FREE - the poll target for `/mine-signals`.
782
+
783
+ **Input**: none.
784
+
785
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
786
+
787
+ Other envelope fields: `pagination` (PaginationMeta).
788
+
789
+ **Example**
790
+
791
+ ```ts
792
+ const result = await g8.api.content.getContentSignalMiningStatus();
793
+ ```
794
+
795
+ ---
796
+
797
+ <a id="op-getcontentworkspacepage"></a>
798
+
799
+ ### `g8.api.content.getContentWorkspacePage(input)`
800
+
801
+ **Get Content Workspace Page**
802
+
803
+ - HTTP: `GET /api/v1/content-workspace/pages/{page_id}`
804
+ - operationId: `get_content_workspace_page_content_workspace_pages__page_id__get` (also callable as `g8.api.call("get_content_workspace_page_content_workspace_pages__page_id__get", input)`)
805
+ - Tier: `read`: reads data; safe to call and to retry
806
+ - API-key scope: `campaigns:read`
807
+
808
+ One page with its SEO analysis and planning fields. FREE.
809
+
810
+ **Input**
811
+
812
+ | Field | Type | Required | Description |
813
+ |---|---|---|---|
814
+ | `path.page_id` | `string` | yes | Content page id (UUID). |
815
+
816
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
817
+
818
+ Other envelope fields: `pagination` (PaginationMeta).
819
+
820
+ **Example**
821
+
822
+ ```ts
823
+ const result = await g8.api.content.getContentWorkspacePage({ path: { page_id: "id" } });
824
+ ```
825
+
826
+ ---
827
+
828
+ <a id="op-getideacorpusstats"></a>
829
+
830
+ ### `g8.api.content.getIdeaCorpusStats(input?)`
831
+
832
+ **Get Idea Corpus Stats**
833
+
834
+ - HTTP: `GET /api/v1/content/calendar/ideas/corpus-stats`
835
+ - operationId: `get_idea_corpus_stats_content_calendar_ideas_corpus_stats_get` (also callable as `g8.api.call("get_idea_corpus_stats_content_calendar_ideas_corpus_stats_get", input)`)
836
+ - Tier: `read`: reads data; safe to call and to retry
837
+ - API-key scope: `campaigns:read`
838
+
839
+ How many conversations each mining lookback tier covers. FREE.
840
+
841
+ Call this BEFORE `/mine-signals`: the mining cost scales with the corpus,
842
+ and this is the only way to know how big 30, 60 or 90 days actually is for
843
+ this org before paying for it.
844
+
845
+ **Input**: none.
846
+
847
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
848
+
849
+ Other envelope fields: `pagination` (PaginationMeta).
850
+
851
+ **Example**
852
+
853
+ ```ts
854
+ const result = await g8.api.content.getIdeaCorpusStats();
855
+ ```
856
+
857
+ ---
858
+
859
+ <a id="op-importcontentpagesfromsitemap"></a>
860
+
861
+ ### `g8.api.content.importContentPagesFromSitemap(input)`
862
+
863
+ **Import Content Pages From Sitemap**
864
+
865
+ - HTTP: `POST /api/v1/content/pages/import-sitemap`
866
+ - operationId: `import_content_pages_from_sitemap_content_pages_import_sitemap_post` (also callable as `g8.api.call("import_content_pages_from_sitemap_content_pages_import_sitemap_post", input)`)
867
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
868
+ - API-key scope: `campaigns:write`
869
+
870
+ Bulk-add pages from a sitemap URL. FREE - no provider is called.
871
+
872
+ It fetches the sitemap server-side, so it must be publicly reachable. The
873
+ two filters are substring matches over each discovered URL; without them a
874
+ large sitemap inserts every page it lists.
875
+
876
+ **Input**
877
+
878
+ | Field | Type | Required | Description |
879
+ |---|---|---|---|
880
+ | `body` | `ImportSitemapRequest` | yes | Request body; fields below. |
881
+
882
+ Body fields (`ImportSitemapRequest`):
883
+
884
+ | Field | Type | Required | Description |
885
+ |---|---|---|---|
886
+ | `body.sitemap_url` | `string` | yes | |
887
+ | `body.url_must_contain` | `Array<string> \| null` | no | |
888
+ | `body.url_must_not_contain` | `Array<string> \| null` | no | |
889
+
890
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
891
+
892
+ Other envelope fields: `pagination` (PaginationMeta).
893
+
894
+ **Example**
895
+
896
+ ```ts
897
+ const result = await g8.api.content.importContentPagesFromSitemap({ body: { sitemap_url: "https://example.com" } });
898
+ ```
899
+
900
+ ---
901
+
902
+ <a id="op-listcontentapprovalshares"></a>
903
+
904
+ ### `g8.api.content.listContentApprovalShares(input?)`
905
+
906
+ **List Content Approval Shares**
907
+
908
+ - HTTP: `GET /api/v1/content/calendar/approvals`
909
+ - operationId: `list_content_approval_shares_content_calendar_approvals_get` (also callable as `g8.api.call("list_content_approval_shares_content_calendar_approvals_get", input)`)
910
+ - Tier: `read`: reads data; safe to call and to retry
911
+ - API-key scope: `campaigns:read`
912
+
913
+ The approval links shared for review, with each one's decision. FREE.
914
+
915
+ **Input**: none.
916
+
917
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
918
+
919
+ Other envelope fields: `pagination` (PaginationMeta).
920
+
921
+ `StudioContentListPayload` fields:
922
+
923
+ | Field | Type | Required | Description |
924
+ |---|---|---|---|
925
+ | `items` | `Array<unknown>` | no | |
926
+
927
+ **Example**
928
+
929
+ ```ts
930
+ const result = await g8.api.content.listContentApprovalShares();
931
+ ```
932
+
933
+ ---
934
+
935
+ <a id="op-listcontentgrids"></a>
936
+
937
+ ### `g8.api.content.listContentGrids(input?)`
938
+
939
+ **List Content Grids**
940
+
941
+ - HTTP: `GET /api/v1/content/grids`
942
+ - operationId: `list_content_grids_content_grids_get` (also callable as `g8.api.call("list_content_grids_content_grids_get", input)`)
943
+ - Tier: `read`: reads data; safe to call and to retry
944
+ - API-key scope: `campaigns:read`
945
+
946
+ The org's content grids. FREE.
947
+
948
+ **Input**
949
+
950
+ | Field | Type | Required | Description |
951
+ |---|---|---|---|
952
+ | `query.grid_type` | `string \| null` | no | Filter to one grid type. |
953
+
954
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
955
+
956
+ Other envelope fields: `pagination` (PaginationMeta).
957
+
958
+ `StudioContentListPayload` fields:
959
+
960
+ | Field | Type | Required | Description |
961
+ |---|---|---|---|
962
+ | `items` | `Array<unknown>` | no | |
963
+
964
+ **Example**
965
+
966
+ ```ts
967
+ const result = await g8.api.content.listContentGrids();
968
+ ```
969
+
970
+ ---
971
+
972
+ <a id="op-listcontentideas"></a>
973
+
974
+ ### `g8.api.content.listContentIdeas(input?)`
975
+
976
+ **List Content Ideas**
977
+
978
+ - HTTP: `GET /api/v1/content/calendar/ideas`
979
+ - operationId: `list_content_ideas_content_calendar_ideas_get` (also callable as `g8.api.call("list_content_ideas_content_calendar_ideas_get", input)`)
980
+ - Tier: `read`: reads data; safe to call and to retry
981
+ - API-key scope: `campaigns:read`
982
+
983
+ The content idea pool mined from the org's own conversations. FREE.
984
+
985
+ Each idea's evidence is at `GET /content/calendar/ideas/{idea_id}/evidence`;
986
+ `POST .../create-content` turns one into a draft.
987
+
988
+ **Input**
989
+
990
+ | Field | Type | Required | Description |
991
+ |---|---|---|---|
992
+ | `query.archived` | `boolean` | no | List archived ideas instead of the active pool. default `false` |
993
+
994
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
995
+
996
+ Other envelope fields: `pagination` (PaginationMeta).
997
+
998
+ `StudioContentListPayload` fields:
999
+
1000
+ | Field | Type | Required | Description |
1001
+ |---|---|---|---|
1002
+ | `items` | `Array<unknown>` | no | |
1003
+
1004
+ **Example**
1005
+
1006
+ ```ts
1007
+ const result = await g8.api.content.listContentIdeas();
1008
+ ```
1009
+
1010
+ ---
1011
+
1012
+ <a id="op-listcontentimportjobs"></a>
1013
+
1014
+ ### `g8.api.content.listContentImportJobs(input?)`
1015
+
1016
+ **List Content Import Jobs**
1017
+
1018
+ - HTTP: `GET /api/v1/content-workspace/import/jobs`
1019
+ - operationId: `list_content_import_jobs_content_workspace_import_jobs_get` (also callable as `g8.api.call("list_content_import_jobs_content_workspace_import_jobs_get", input)`)
1020
+ - Tier: `read`: reads data; safe to call and to retry
1021
+ - API-key scope: `campaigns:read`
1022
+
1023
+ The org's recent import jobs, newest first. FREE.
1024
+
1025
+ **Input**
1026
+
1027
+ | Field | Type | Required | Description |
1028
+ |---|---|---|---|
1029
+ | `query.status` | `string \| null` | no | Only jobs in this status. |
1030
+ | `query.limit` | `integer` | no | default `20` |
1031
+
1032
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1033
+
1034
+ Other envelope fields: `pagination` (PaginationMeta).
1035
+
1036
+ `StudioContentListPayload` fields:
1037
+
1038
+ | Field | Type | Required | Description |
1039
+ |---|---|---|---|
1040
+ | `items` | `Array<unknown>` | no | |
1041
+
1042
+ **Example**
1043
+
1044
+ ```ts
1045
+ const result = await g8.api.content.listContentImportJobs();
1046
+ ```
1047
+
1048
+ ---
1049
+
1050
+ <a id="op-listcontentpages"></a>
1051
+
1052
+ ### `g8.api.content.listContentPages(input?)`
1053
+
1054
+ **List Content Pages**
1055
+
1056
+ - HTTP: `GET /api/v1/content/pages`
1057
+ - operationId: `list_content_pages_content_pages_get` (also callable as `g8.api.call("list_content_pages_content_pages_get", input)`)
1058
+ - Tier: `read`: reads data; safe to call and to retry
1059
+ - API-key scope: `campaigns:read`
1060
+
1061
+ The content inventory. FREE.
1062
+
1063
+ Both the org's OWN pages and competitor pages it tracks - `is_owned` is
1064
+ the filter that separates them, and omitting it returns both.
1065
+
1066
+ **Input**
1067
+
1068
+ | Field | Type | Required | Description |
1069
+ |---|---|---|---|
1070
+ | `query.domain` | `string \| null` | no | Only pages on this domain. |
1071
+ | `query.is_owned` | `boolean \| null` | no | True for the org's own pages, false for tracked competitors'. |
1072
+ | `query.crawl_status` | `string \| null` | no | |
1073
+ | `query.source` | `string \| null` | no | |
1074
+ | `query.content_type` | `string \| null` | no | From `GET /content/types`. |
1075
+ | `query.content_status` | `string \| null` | no | |
1076
+ | `query.limit` | `integer` | no | default `50` |
1077
+ | `query.offset` | `integer` | no | default `0` |
1078
+
1079
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1080
+
1081
+ Other envelope fields: `pagination` (PaginationMeta).
1082
+
1083
+ `StudioContentListPayload` fields:
1084
+
1085
+ | Field | Type | Required | Description |
1086
+ |---|---|---|---|
1087
+ | `items` | `Array<unknown>` | no | |
1088
+
1089
+ **Example**
1090
+
1091
+ ```ts
1092
+ const result = await g8.api.content.listContentPages();
1093
+ ```
1094
+
1095
+ ---
1096
+
1097
+ <a id="op-listcontenttypes"></a>
1098
+
1099
+ ### `g8.api.content.listContentTypes(input?)`
1100
+
1101
+ **List Content Types**
1102
+
1103
+ - HTTP: `GET /api/v1/content/types`
1104
+ - operationId: `list_content_types_content_types_get` (also callable as `g8.api.call("list_content_types_content_types_get", input)`)
1105
+ - Tier: `read`: reads data; safe to call and to retry
1106
+ - API-key scope: `campaigns:read`
1107
+
1108
+ Every content type with its per-status counts. FREE.
1109
+
1110
+ The SOURCE of the `content_type` and `content_status` values the page
1111
+ routes filter and write on.
1112
+
1113
+ **Input**: none.
1114
+
1115
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1116
+
1117
+ Other envelope fields: `pagination` (PaginationMeta).
1118
+
1119
+ **Example**
1120
+
1121
+ ```ts
1122
+ const result = await g8.api.content.listContentTypes();
1123
+ ```
1124
+
1125
+ ---
1126
+
1127
+ <a id="op-listcontentworkspacepages"></a>
1128
+
1129
+ ### `g8.api.content.listContentWorkspacePages(input?)`
1130
+
1131
+ **List Content Workspace Pages**
1132
+
1133
+ - HTTP: `GET /api/v1/content-workspace/pages`
1134
+ - operationId: `list_content_workspace_pages_content_workspace_pages_get` (also callable as `g8.api.call("list_content_workspace_pages_content_workspace_pages_get", input)`)
1135
+ - Tier: `read`: reads data; safe to call and to retry
1136
+ - API-key scope: `campaigns:read`
1137
+
1138
+ The workspace's pages, filtered and paged. FREE.
1139
+
1140
+ **Input**
1141
+
1142
+ | Field | Type | Required | Description |
1143
+ |---|---|---|---|
1144
+ | `query.domain` | `string \| null` | no | |
1145
+ | `query.refresh_status` | `string \| null` | no | |
1146
+ | `query.intent` | `string \| null` | no | |
1147
+ | `query.page_type` | `string \| null` | no | |
1148
+ | `query.llm_cited` | `boolean \| null` | no | Only pages AI answer engines cite (or do not). |
1149
+ | `query.ai_overview_present` | `boolean \| null` | no | |
1150
+ | `query.import_job_id` | `string \| null` | no | Only pages one import brought in. |
1151
+ | `query.search` | `string \| null` | no | |
1152
+ | `query.page` | `integer` | no | default `1` |
1153
+ | `query.page_size` | `integer` | no | default `50` |
1154
+ | `query.sort_by` | `string` | no | Field to sort by. default `"priority_score"` |
1155
+ | `query.sort_order` | `string` | no | default `"desc"` |
1156
+
1157
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1158
+
1159
+ Other envelope fields: `pagination` (PaginationMeta).
1160
+
1161
+ `StudioContentListPayload` fields:
1162
+
1163
+ | Field | Type | Required | Description |
1164
+ |---|---|---|---|
1165
+ | `items` | `Array<unknown>` | no | |
1166
+
1167
+ **Example**
1168
+
1169
+ ```ts
1170
+ const result = await g8.api.content.listContentWorkspacePages();
1171
+ ```
1172
+
1173
+ ---
1174
+
1175
+ <a id="op-listwebsitetemplates"></a>
1176
+
1177
+ ### `g8.api.content.listWebsiteTemplates(input?)`
1178
+
1179
+ **List Website Templates**
1180
+
1181
+ - HTTP: `GET /api/v1/content/website-templates`
1182
+ - operationId: `list_website_templates_content_website_templates_get` (also callable as `g8.api.call("list_website_templates_content_website_templates_get", input)`)
1183
+ - Tier: `read`: reads data; safe to call and to retry
1184
+ - API-key scope: `campaigns:read`
1185
+
1186
+ Owned pages reusable as website templates. FREE.
1187
+
1188
+ A filtered view of the inventory, not a separate store: every row here is
1189
+ also a content page.
1190
+
1191
+ **Input**
1192
+
1193
+ | Field | Type | Required | Description |
1194
+ |---|---|---|---|
1195
+ | `query.limit` | `integer` | no | default `24` |
1196
+
1197
+ **Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1198
+
1199
+ Other envelope fields: `pagination` (PaginationMeta).
1200
+
1201
+ `StudioContentListPayload` fields:
1202
+
1203
+ | Field | Type | Required | Description |
1204
+ |---|---|---|---|
1205
+ | `items` | `Array<unknown>` | no | |
1206
+
1207
+ **Example**
1208
+
1209
+ ```ts
1210
+ const result = await g8.api.content.listWebsiteTemplates();
1211
+ ```
1212
+
1213
+ ---
1214
+
1215
+ <a id="op-minecontentsignals"></a>
1216
+
1217
+ ### `g8.api.content.mineContentSignals(input)`
1218
+
1219
+ **Mine Content Signals**
1220
+
1221
+ - HTTP: `POST /api/v1/content/calendar/mine-signals`
1222
+ - operationId: `mine_content_signals_content_calendar_mine_signals_post` (also callable as `g8.api.call("mine_content_signals_content_calendar_mine_signals_post", input)`)
1223
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1224
+ - API-key scope: `campaigns:run`
1225
+
1226
+ Mine meeting transcripts and inbox threads for content ideas. SPENDS CREDIT.
1227
+
1228
+ The cost scales with `lookback_days` and the corpus it selects - check
1229
+ `/ideas/corpus-stats` first, which is free.
1230
+
1231
+ Asynchronous: it returns once the work is dispatched. `include_archived`
1232
+ TRUE (the app's default) lets a previously dismissed theme resurface.
1233
+
1234
+ **Input**
1235
+
1236
+ | Field | Type | Required | Description |
1237
+ |---|---|---|---|
1238
+ | `body` | `MineSignalsRequest` | yes | Request body; fields below. |
1239
+
1240
+ Body fields (`MineSignalsRequest`):
1241
+
1242
+ | Field | Type | Required | Description |
1243
+ |---|---|---|---|
1244
+ | `body.focus` | `string \| null` | no | max length 300 |
1245
+ | `body.include_archived` | `boolean` | no | default `true` |
1246
+ | `body.lookback_days` | `integer` | no | default `60`, min 1, max 365 |
1247
+ | `body.max_ideas` | `integer` | no | default `5`, min 1, max 20 |
1248
+ | `body.sources` | `Array<"meetings" \| "emails">` | no | Which corpora to mine. Closed to the two the app accepts - it rejects anything else, and an unknown value would otherwise mine an empty corpus at full price. |
1249
+ | `body.target_format` | `"landing_page" \| "linkedin_post" \| "newsletter_section" \| "ad_creative" \| null` | no | |
1250
+
1251
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1252
+
1253
+ Other envelope fields: `pagination` (PaginationMeta).
1254
+
1255
+ **Example**
1256
+
1257
+ ```ts
1258
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1259
+ const result = await g8.api.content.mineContentSignals({ body: {} });
1260
+ ```
1261
+
1262
+ ---
1263
+
1264
+ <a id="op-patchcontentidea"></a>
1265
+
1266
+ ### `g8.api.content.patchContentIdea(input)`
1267
+
1268
+ **Patch Content Idea**
1269
+
1270
+ - HTTP: `PATCH /api/v1/content/calendar/ideas/{idea_id}`
1271
+ - operationId: `patch_content_idea_content_calendar_ideas__idea_id__patch` (also callable as `g8.api.call("patch_content_idea_content_calendar_ideas__idea_id__patch", input)`)
1272
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1273
+ - API-key scope: `campaigns:write`
1274
+
1275
+ Bookmark, rate or date a mined idea. FREE.
1276
+
1277
+ PARTIAL: an ABSENT field is untouched, a field sent as NULL is CLEARED.
1278
+ Those are different instructions and only the second one erases - which is
1279
+ why the proxy forwards `exclude_unset` rather than a full dump.
1280
+
1281
+ **Input**
1282
+
1283
+ | Field | Type | Required | Description |
1284
+ |---|---|---|---|
1285
+ | `path.idea_id` | `string` | yes | Mined idea id. |
1286
+ | `body` | `PatchIdeaRequest` | yes | Request body; fields below. |
1287
+
1288
+ Body fields (`PatchIdeaRequest`):
1289
+
1290
+ | Field | Type | Required | Description |
1291
+ |---|---|---|---|
1292
+ | `body.rating` | `integer \| null` | no | |
1293
+ | `body.scheduled_for` | `string \| null` | no | |
1294
+ | `body.status` | `"new" \| "saved" \| null` | no | |
1295
+
1296
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1297
+
1298
+ Other envelope fields: `pagination` (PaginationMeta).
1299
+
1300
+ **Example**
1301
+
1302
+ ```ts
1303
+ const result = await g8.api.content.patchContentIdea({ path: { idea_id: "id" }, body: {} });
1304
+ ```
1305
+
1306
+ ---
1307
+
1308
+ <a id="op-repurposecontenttoad"></a>
1309
+
1310
+ ### `g8.api.content.repurposeContentToAd(input)`
1311
+
1312
+ **Repurpose Content To Ad**
1313
+
1314
+ - HTTP: `POST /api/v1/content/calendar/repurpose/ad`
1315
+ - operationId: `repurpose_content_to_ad_content_calendar_repurpose_ad_post` (also callable as `g8.api.call("repurpose_content_to_ad_content_calendar_repurpose_ad_post", input)`)
1316
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1317
+ - API-key scope: `campaigns:run`
1318
+
1319
+ Derive an ad creative from an existing piece. SPENDS CREDIT.
1320
+
1321
+ `ads:create`, matching the app - it produces the same object
1322
+ `POST /ad-creatives` does, so it carries the same grant rather than riding
1323
+ along on a calendar permission.
1324
+
1325
+ **Input**
1326
+
1327
+ | Field | Type | Required | Description |
1328
+ |---|---|---|---|
1329
+ | `body` | `RepurposeAdRequest` | yes | Request body; fields below. |
1330
+
1331
+ Body fields (`RepurposeAdRequest`):
1332
+
1333
+ | Field | Type | Required | Description |
1334
+ |---|---|---|---|
1335
+ | `body.source_id` | `string` | yes | |
1336
+ | `body.source_type` | `string` | yes | |
1337
+ | `body.ad_format` | `string` | no | default `"single_image"` |
1338
+ | `body.platform` | `string` | no | default `"linkedin"` |
1339
+
1340
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1341
+
1342
+ Other envelope fields: `pagination` (PaginationMeta).
1343
+
1344
+ **Example**
1345
+
1346
+ ```ts
1347
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1348
+ const result = await g8.api.content.repurposeContentToAd({ body: { source_id: "id", source_type: "example" } });
1349
+ ```
1350
+
1351
+ ---
1352
+
1353
+ <a id="op-repurposecontenttolinkedinpost"></a>
1354
+
1355
+ ### `g8.api.content.repurposeContentToLinkedinPost(input)`
1356
+
1357
+ **Repurpose Content To Linkedin Post**
1358
+
1359
+ - HTTP: `POST /api/v1/content/calendar/repurpose/linkedin-post`
1360
+ - operationId: `repurpose_content_to_linkedin_post_content_calendar_repurpose_linkedin_post_post` (also callable as `g8.api.call("repurpose_content_to_linkedin_post_content_calendar_repurpose_linkedin_post_post", input)`)
1361
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1362
+ - API-key scope: `campaigns:run`
1363
+
1364
+ Derive a LinkedIn post DRAFT from an existing piece. SPENDS CREDIT.
1365
+
1366
+ A draft: nothing is posted. It lands in the `linkedin_post` lane and a
1367
+ review task is raised against it. Publishing is
1368
+ `POST /social/posts/{id}/publish`.
1369
+
1370
+ **Input**
1371
+
1372
+ | Field | Type | Required | Description |
1373
+ |---|---|---|---|
1374
+ | `body` | `RepurposeSourceRequest` | yes | Request body; fields below. |
1375
+
1376
+ Body fields (`RepurposeSourceRequest`):
1377
+
1378
+ | Field | Type | Required | Description |
1379
+ |---|---|---|---|
1380
+ | `body.source_id` | `string` | yes | |
1381
+ | `body.source_type` | `string` | yes | |
1382
+
1383
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1384
+
1385
+ Other envelope fields: `pagination` (PaginationMeta).
1386
+
1387
+ **Example**
1388
+
1389
+ ```ts
1390
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1391
+ const result = await g8.api.content.repurposeContentToLinkedinPost({ body: { source_id: "id", source_type: "example" } });
1392
+ ```
1393
+
1394
+ ---
1395
+
1396
+ <a id="op-retrycontentpublish"></a>
1397
+
1398
+ ### `g8.api.content.retryContentPublish(input)`
1399
+
1400
+ **Retry Content Publish**
1401
+
1402
+ - HTTP: `POST /api/v1/content/calendar/{content_type}/{content_id}/retry-publish`
1403
+ - operationId: `retry_content_publish_content_calendar__content_type___content_id__retry_publish_post` (also callable as `g8.api.call("retry_content_publish_content_calendar__content_type___content_id__retry_publish_post", input)`)
1404
+ - Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
1405
+ - API-key scope: `campaigns:run`
1406
+
1407
+ Re-arm a failed scheduled publish. IT WILL GO OUT ON THE NEXT SWEEP.
1408
+
1409
+ Moves the entry from `failed` back to `scheduled`, which means the same
1410
+ piece is published to real people the next time the sweep runs. Same
1411
+ launch permission and the same tier as arming it in the first place -
1412
+ "retry" is not a smaller act than "publish", it is the same one.
1413
+
1414
+ Spends nothing.
1415
+
1416
+ **Input**
1417
+
1418
+ | Field | Type | Required | Description |
1419
+ |---|---|---|---|
1420
+ | `path.content_type` | `"newsletter_issue" \| "landing_page" \| "seo_page" \| "linkedin_post" \| "ad_creative"` | yes | Which content lane the piece lives in. |
1421
+ | `path.content_id` | `string` | yes | Id of the piece within that lane. |
1422
+
1423
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1424
+
1425
+ Other envelope fields: `pagination` (PaginationMeta).
1426
+
1427
+ **Example**
1428
+
1429
+ ```ts
1430
+ // external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
1431
+ const result = await g8.api.content.retryContentPublish({ path: { content_type: "newsletter_issue", content_id: "id" } });
1432
+ ```
1433
+
1434
+ ---
1435
+
1436
+ <a id="op-schedulecontentpiece"></a>
1437
+
1438
+ ### `g8.api.content.scheduleContentPiece(input)`
1439
+
1440
+ **Schedule Content Piece**
1441
+
1442
+ - HTTP: `PATCH /api/v1/content/calendar/{content_type}/{content_id}/schedule`
1443
+ - operationId: `schedule_content_piece_content_calendar__content_type___content_id__schedule_patch` (also callable as `g8.api.call("schedule_content_piece_content_calendar__content_type___content_id__schedule_patch", input)`)
1444
+ - Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
1445
+ - API-key scope: `campaigns:run`
1446
+
1447
+ Plan a piece's date and owner - or ARM it to publish itself.
1448
+
1449
+ `arm: false` (the default) records a date for a human to act on and
1450
+ changes nothing outward-facing.
1451
+
1452
+ `arm: true` IS THE OUTWARD-FACING ONE: the publish sweep will send or
1453
+ deploy the piece at `planned_publish_at`, to real people, with no further
1454
+ confirmation. The app requires `campaigns:launch` for that branch
1455
+ specifically, and the principal this proxy hands it is resolved from the
1456
+ validated key so that check answers correctly rather than silently.
1457
+
1458
+ `linkedin_post` REFUSES a date here - LinkedIn schedules belong to
1459
+ `POST /social/posts/{id}/schedule`. Owner assignment on a LinkedIn post is
1460
+ still accepted.
1461
+
1462
+ Spends nothing.
1463
+
1464
+ **Input**
1465
+
1466
+ | Field | Type | Required | Description |
1467
+ |---|---|---|---|
1468
+ | `path.content_type` | `"newsletter_issue" \| "landing_page" \| "seo_page" \| "linkedin_post" \| "ad_creative"` | yes | Which content lane the piece lives in. |
1469
+ | `path.content_id` | `string` | yes | Id of the piece within that lane. |
1470
+ | `body` | `ScheduleRequest` | yes | Request body; fields below. |
1471
+
1472
+ Body fields (`ScheduleRequest`):
1473
+
1474
+ | Field | Type | Required | Description |
1475
+ |---|---|---|---|
1476
+ | `body.arm` | `boolean` | no | TRUE MEANS IT WILL PUBLISH ITSELF at planned_publish_at, with no further human step. False only records the date. default `false` |
1477
+ | `body.clear_planned` | `boolean` | no | default `false` |
1478
+ | `body.owner_id` | `string \| null` | no | |
1479
+ | `body.planned_publish_at` | `string (date-time) \| null` | no | |
1480
+ | `body.publish_settings` | `Record<string, unknown> \| null` | no | |
1481
+
1482
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1483
+
1484
+ Other envelope fields: `pagination` (PaginationMeta).
1485
+
1486
+ **Example**
1487
+
1488
+ ```ts
1489
+ // external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
1490
+ const result = await g8.api.content.scheduleContentPiece({
1491
+ path: { content_type: "newsletter_issue", content_id: "id" },
1492
+ body: {},
1493
+ });
1494
+ ```
1495
+
1496
+ ---
1497
+
1498
+ <a id="op-startcontentcrawlimport"></a>
1499
+
1500
+ ### `g8.api.content.startContentCrawlImport(input)`
1501
+
1502
+ **Start Content Crawl Import**
1503
+
1504
+ - HTTP: `POST /api/v1/content-workspace/import/crawl`
1505
+ - operationId: `start_content_crawl_import_content_workspace_import_crawl_post` (also callable as `g8.api.call("start_content_crawl_import_content_workspace_import_crawl_post", input)`)
1506
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1507
+ - API-key scope: `campaigns:run`
1508
+
1509
+ Deep-crawl the org's own website into the workspace. SPENDS PROVIDER CREDIT.
1510
+
1511
+ Billed per page crawled; `max_pages` is the ceiling on the spend. Only the
1512
+ org's registered website can be crawled. Returns the import job - poll
1513
+ `GET /content-workspace/import/status/{job_id}`.
1514
+
1515
+ **Input**
1516
+
1517
+ | Field | Type | Required | Description |
1518
+ |---|---|---|---|
1519
+ | `body` | `ContentWorkspaceCrawlRequest` | yes | Request body; fields below. |
1520
+
1521
+ Body fields (`ContentWorkspaceCrawlRequest`):
1522
+
1523
+ | Field | Type | Required | Description |
1524
+ |---|---|---|---|
1525
+ | `body.start_url` | `string` | yes | Must be on the org's registered website. |
1526
+ | `body.exclude_paths` | `Array<string> \| null` | no | e.g. ['/author', '/tag']. |
1527
+ | `body.include_paths` | `Array<string> \| null` | no | e.g. ['/blog', '/resources']. |
1528
+ | `body.max_pages` | `integer` | no | The ceiling on pages crawled - and on the spend. default `500`, min 1, max 5000 |
1529
+
1530
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1531
+
1532
+ Other envelope fields: `pagination` (PaginationMeta).
1533
+
1534
+ **Example**
1535
+
1536
+ ```ts
1537
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1538
+ const result = await g8.api.content.startContentCrawlImport({ body: { start_url: "https://example.com" } });
1539
+ ```
1540
+
1541
+ ---
1542
+
1543
+ <a id="op-startcontentsitemapimport"></a>
1544
+
1545
+ ### `g8.api.content.startContentSitemapImport(input)`
1546
+
1547
+ **Start Content Sitemap Import**
1548
+
1549
+ - HTTP: `POST /api/v1/content-workspace/import/sitemap`
1550
+ - operationId: `start_content_sitemap_import_content_workspace_import_sitemap_post` (also callable as `g8.api.call("start_content_sitemap_import_content_workspace_import_sitemap_post", input)`)
1551
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1552
+ - API-key scope: `campaigns:write`
1553
+
1554
+ Import the pages an XML sitemap lists. FREE. Returns the import job to poll.
1555
+
1556
+ **Input**
1557
+
1558
+ | Field | Type | Required | Description |
1559
+ |---|---|---|---|
1560
+ | `body` | `ContentWorkspaceSitemapImportRequest` | yes | Request body; fields below. |
1561
+
1562
+ Body fields (`ContentWorkspaceSitemapImportRequest`):
1563
+
1564
+ | Field | Type | Required | Description |
1565
+ |---|---|---|---|
1566
+ | `body.sitemap_url` | `string` | yes | |
1567
+ | `body.exclude_patterns` | `Array<string> \| null` | no | Glob patterns to exclude. |
1568
+ | `body.include_patterns` | `Array<string> \| null` | no | Glob patterns to include. |
1569
+ | `body.max_pages` | `integer` | no | default `500`, min 1, max 5000 |
1570
+
1571
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1572
+
1573
+ Other envelope fields: `pagination` (PaginationMeta).
1574
+
1575
+ **Example**
1576
+
1577
+ ```ts
1578
+ const result = await g8.api.content.startContentSitemapImport({ body: { sitemap_url: "https://example.com" } });
1579
+ ```
1580
+
1581
+ ---
1582
+
1583
+ <a id="op-updatecontentpage"></a>
1584
+
1585
+ ### `g8.api.content.updateContentPage(input)`
1586
+
1587
+ **Update Content Page**
1588
+
1589
+ - HTTP: `PATCH /api/v1/content/pages/{page_id}`
1590
+ - operationId: `update_content_page_content_pages__page_id__patch` (also callable as `g8.api.call("update_content_page_content_pages__page_id__patch", input)`)
1591
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1592
+ - API-key scope: `campaigns:write`
1593
+
1594
+ Edit a page's metadata or body. FREE.
1595
+
1596
+ **Input**
1597
+
1598
+ | Field | Type | Required | Description |
1599
+ |---|---|---|---|
1600
+ | `path.page_id` | `string` | yes | Content page id. |
1601
+ | `body` | `UpdatePageRequest` | yes | Request body; fields below. |
1602
+
1603
+ Body fields (`UpdatePageRequest`):
1604
+
1605
+ | Field | Type | Required | Description |
1606
+ |---|---|---|---|
1607
+ | `body.body_content` | `string \| null` | no | |
1608
+ | `body.content_status` | `string \| null` | no | |
1609
+ | `body.content_type` | `string \| null` | no | |
1610
+ | `body.primary_keyword` | `string \| null` | no | |
1611
+ | `body.title` | `string \| null` | no | |
1612
+
1613
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1614
+
1615
+ Other envelope fields: `pagination` (PaginationMeta).
1616
+
1617
+ **Example**
1618
+
1619
+ ```ts
1620
+ const result = await g8.api.content.updateContentPage({ path: { page_id: "id" }, body: {} });
1621
+ ```
1622
+
1623
+ ---
1624
+
1625
+ <a id="op-updatecontentworkspacepage"></a>
1626
+
1627
+ ### `g8.api.content.updateContentWorkspacePage(input)`
1628
+
1629
+ **Update Content Workspace Page**
1630
+
1631
+ - HTTP: `PATCH /api/v1/content-workspace/pages/{page_id}`
1632
+ - operationId: `update_content_workspace_page_content_workspace_pages__page_id__patch` (also callable as `g8.api.call("update_content_workspace_page_content_workspace_pages__page_id__patch", input)`)
1633
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1634
+ - API-key scope: `campaigns:write`
1635
+
1636
+ Update a page's refresh-planning fields. FREE. Only the fields you send change.
1637
+
1638
+ **Input**
1639
+
1640
+ | Field | Type | Required | Description |
1641
+ |---|---|---|---|
1642
+ | `path.page_id` | `string` | yes | Content page id (UUID). |
1643
+ | `body` | `ContentWorkspacePageUpdateRequest` | yes | Request body; fields below. |
1644
+
1645
+ Body fields (`ContentWorkspacePageUpdateRequest`):
1646
+
1647
+ | Field | Type | Required | Description |
1648
+ |---|---|---|---|
1649
+ | `body.intent` | `string \| null` | no | |
1650
+ | `body.key_issues` | `string \| null` | no | |
1651
+ | `body.owner_id` | `string \| null` | no | |
1652
+ | `body.page_type` | `string \| null` | no | |
1653
+ | `body.planned_changes` | `string \| null` | no | |
1654
+ | `body.primary_keyword` | `string \| null` | no | |
1655
+ | `body.primary_topic` | `string \| null` | no | |
1656
+ | `body.refresh_scope` | `string \| null` | no | |
1657
+ | `body.refresh_status` | `string \| null` | no | |
1658
+
1659
+ **Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1660
+
1661
+ Other envelope fields: `pagination` (PaginationMeta).
1662
+
1663
+ **Example**
1664
+
1665
+ ```ts
1666
+ const result = await g8.api.content.updateContentWorkspacePage({ path: { page_id: "id" }, body: {} });
1667
+ ```