@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,2860 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.agents`: Agents
4
+
5
+ 65 operations (33 read, 22 write, 3 destructive, 7 billable).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.agents.*` 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: [agents.d.ts](agents.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`answerAgentDiscovery`](#op-answeragentdiscovery) | `POST /api/v1/agent/onboarding/discovery/answer` | write | `workflows:write` | Answer Agent Discovery |
26
+ | [`cancelAgentWorkItem`](#op-cancelagentworkitem) | `POST /api/v1/agent/work-items/{work_item_id}/cancel` | destructive | `workflows:delete` | Cancel Agent Work Item |
27
+ | [`captureAgentEntryPoint`](#op-captureagententrypoint) | `POST /api/v1/agent/onboarding/entry-point` | write | `workflows:write` | Capture Agent Entry Point |
28
+ | [`captureAgentSignupAttribution`](#op-captureagentsignupattribution) | `POST /api/v1/agent/onboarding/attribution` | write | `workflows:write` | Capture Agent Signup Attribution |
29
+ | [`confirmAgentSessionCard`](#op-confirmagentsessioncard) | `POST /api/v1/agent/sessions/{session_id}/cards/{card_id}/confirm` | write | `workflows:write` | Confirm Agent Session Card |
30
+ | [`createAgentSession`](#op-createagentsession) | `POST /api/v1/agent/sessions` | write | `workflows:write` | Create Agent Session |
31
+ | [`createAgentVoiceDraft`](#op-createagentvoicedraft) | `POST /api/v1/agent/sessions/voice/draft` | write | `workflows:write` | Create Agent Voice Draft |
32
+ | [`createAgentWorkItem`](#op-createagentworkitem) | `POST /api/v1/agent/work-items` | billable | `workflows:run` | Create Agent Work Item |
33
+ | [`decideAgentOperatorApproval`](#op-decideagentoperatorapproval) | `POST /api/v1/agent/operators/{operator}/approvals/{task_id}/decide` | billable | `workflows:run` | Decide Agent Operator Approval |
34
+ | [`deleteAgentSession`](#op-deleteagentsession) | `DELETE /api/v1/agent/sessions/{session_id}` | destructive | `workflows:delete` | Delete Agent Session |
35
+ | [`endAgentSessionVoice`](#op-endagentsessionvoice) | `DELETE /api/v1/agent/sessions/{session_id}/voice/{voice_id}` | destructive | `workflows:delete` | End Agent Session Voice |
36
+ | [`getAgentDiscovery`](#op-getagentdiscovery) | `GET /api/v1/agent/onboarding/discovery` | read | `workflows:read` | Get Agent Discovery |
37
+ | [`getAgentDiscoveryCampaignBrief`](#op-getagentdiscoverycampaignbrief) | `GET /api/v1/agent/onboarding/discovery/campaign-brief` | read | `workflows:read` | Get Agent Discovery Campaign Brief |
38
+ | [`getAgentDiscoveryReport`](#op-getagentdiscoveryreport) | `GET /api/v1/agent/onboarding/discovery/report` | read | `workflows:read` | Get Agent Discovery Report |
39
+ | [`getAgentMemory`](#op-getagentmemory) | `GET /api/v1/agent/memory` | read | `workflows:read` | Get Agent Memory |
40
+ | [`getAgentOperatingModel`](#op-getagentoperatingmodel) | `GET /api/v1/agent/operators/operating-model` | read | `workflows:read` | Get Agent Operating Model |
41
+ | [`getAgentOperatorCatalog`](#op-getagentoperatorcatalog) | `GET /api/v1/agent/operators/{operator}/catalog` | read | `workflows:read` | Get Agent Operator Catalog |
42
+ | [`getAgentOperatorFeedbackSummary`](#op-getagentoperatorfeedbacksummary) | `GET /api/v1/agent/operators/{operator}/feedback/summary` | read | `workflows:read` | Get Agent Operator Feedback Summary |
43
+ | [`getAgentOperatorForApprovalTask`](#op-getagentoperatorforapprovaltask) | `GET /api/v1/agent/operators/approvals/{task_id}/operator` | read | `workflows:read` | Get Agent Operator For Approval Task |
44
+ | [`getAgentOperatorHealth`](#op-getagentoperatorhealth) | `GET /api/v1/agent/operators/{operator}/health` | read | `workflows:read` | Get Agent Operator Health |
45
+ | [`getAgentOperatorRecipient`](#op-getagentoperatorrecipient) | `GET /api/v1/agent/operators/{operator}/recipient` | read | `workflows:read` | Get Agent Operator Recipient |
46
+ | [`getAgentOperatorScorecard`](#op-getagentoperatorscorecard) | `GET /api/v1/agent/operators/{operator}/scorecard` | read | `workflows:read` | Get Agent Operator Scorecard |
47
+ | [`getAgentOperatorStatus`](#op-getagentoperatorstatus) | `GET /api/v1/agent/operators/{operator}/status` | read | `workflows:read` | Get Agent Operator Status |
48
+ | [`getAgentOperatorsSummary`](#op-getagentoperatorssummary) | `GET /api/v1/agent/operators/summary` | read | `workflows:read` | Get Agent Operators Summary |
49
+ | [`getAgentOversight`](#op-getagentoversight) | `GET /api/v1/agent/oversight` | read | `workflows:read` | Get Agent Oversight |
50
+ | [`getAgentProactiveOpener`](#op-getagentproactiveopener) | `GET /api/v1/agent/proactive-opener` | read | `workflows:read` | Get Agent Proactive Opener |
51
+ | [`getAgentPushbackEvidence`](#op-getagentpushbackevidence) | `GET /api/v1/agent/evidence/pushback` | read | `workflows:read` | Get Agent Pushback Evidence |
52
+ | [`getAgentSession`](#op-getagentsession) | `GET /api/v1/agent/sessions/{session_id}` | read | `workflows:read` | Get Agent Session |
53
+ | [`getAgentSessionState`](#op-getagentsessionstate) | `GET /api/v1/agent/sessions/{session_id}/state` | read | `workflows:read` | Get Agent Session State |
54
+ | [`getAgentSessionVoiceCapability`](#op-getagentsessionvoicecapability) | `GET /api/v1/agent/sessions/{session_id}/voice` | read | `workflows:read` | Get Agent Session Voice Capability |
55
+ | [`getAgentVoiceCapability`](#op-getagentvoicecapability) | `GET /api/v1/agent/sessions/voice/capability` | read | `workflows:read` | Get Agent Voice Capability |
56
+ | [`listAgentOperatorActions`](#op-listagentoperatoractions) | `GET /api/v1/agent/operators/{operator}/actions` | read | `workflows:read` | List Agent Operator Actions |
57
+ | [`listAgentOperatorActivity`](#op-listagentoperatoractivity) | `GET /api/v1/agent/operators/{operator}/activity` | read | `workflows:read` | List Agent Operator Activity |
58
+ | [`listAgentOperatorActivityRecords`](#op-listagentoperatoractivityrecords) | `GET /api/v1/agent/operators/{operator}/activity/{task_id}/records` | read | `workflows:read` | List Agent Operator Activity Records |
59
+ | [`listAgentOperatorApprovalSources`](#op-listagentoperatorapprovalsources) | `GET /api/v1/agent/operators/approvals/sources` | read | `workflows:read` | List Agent Operator Approval Sources |
60
+ | [`listAgentOperatorCollections`](#op-listagentoperatorcollections) | `GET /api/v1/agent/operators/{operator}/collections` | read | `workflows:read` | List Agent Operator Collections |
61
+ | [`listAgentOperatorFindings`](#op-listagentoperatorfindings) | `GET /api/v1/agent/operators/{operator}/findings` | read | `workflows:read` | List Agent Operator Findings |
62
+ | [`listAgentOperatorSkills`](#op-listagentoperatorskills) | `GET /api/v1/agent/operators/{operator}/skills` | read | `workflows:read` | List Agent Operator Skills |
63
+ | [`listAgentOperators`](#op-listagentoperators) | `GET /api/v1/agent/operators` | read | `workflows:read` | List Agent Operators |
64
+ | [`listAgentSessions`](#op-listagentsessions) | `GET /api/v1/agent/sessions` | read | `workflows:read` | List Agent Sessions |
65
+ | [`listAgentSpecialists`](#op-listagentspecialists) | `GET /api/v1/agent/specialists` | read | `workflows:read` | List Agent Specialists |
66
+ | [`listAgentWorkItems`](#op-listagentworkitems) | `GET /api/v1/agent/work-items` | read | `workflows:read` | List Agent Work Items |
67
+ | [`loadCopilotIntentContext`](#op-loadcopilotintentcontext) | `POST /api/v1/copilot/context/load` | write | `workflows:write` | Load Copilot Intent Context |
68
+ | [`markAgentSessionRead`](#op-markagentsessionread) | `PUT /api/v1/agent/sessions/{session_id}/read` | write | `workflows:write` | Mark Agent Session Read |
69
+ | [`openAgentDiscovery`](#op-openagentdiscovery) | `POST /api/v1/agent/onboarding/discovery/open` | write | `workflows:write` | Open Agent Discovery |
70
+ | [`pinAgentSession`](#op-pinagentsession) | `POST /api/v1/agent/sessions/{session_id}/pin` | write | `workflows:write` | Pin Agent Session |
71
+ | [`postAgentChat`](#op-postagentchat) | `POST /api/v1/agent/chat` | billable | `workflows:run` | Post Agent Chat |
72
+ | [`postAgentOnboardingCatchup`](#op-postagentonboardingcatchup) | `POST /api/v1/agent/onboarding/catchup` | write | `workflows:write` | Post Agent Onboarding Catchup |
73
+ | [`postAgentSessionMessage`](#op-postagentsessionmessage) | `POST /api/v1/agent/sessions/{session_id}/messages` | write | `workflows:write` | Post Agent Session Message |
74
+ | [`projectAgentDiscovery`](#op-projectagentdiscovery) | `POST /api/v1/agent/onboarding/discovery/project` | write | `workflows:write` | Project Agent Discovery |
75
+ | [`putAgentOperatingModel`](#op-putagentoperatingmodel) | `PUT /api/v1/agent/operators/operating-model` | write | `workflows:write` | Put Agent Operating Model |
76
+ | [`quoteAgentSessionVoice`](#op-quoteagentsessionvoice) | `POST /api/v1/agent/sessions/{session_id}/voice/quote` | read | `workflows:read` | Quote Agent Session Voice |
77
+ | [`ratifyAgentDiscovery`](#op-ratifyagentdiscovery) | `POST /api/v1/agent/onboarding/discovery/ratify` | write | `workflows:write` | Ratify Agent Discovery |
78
+ | [`renameAgentSession`](#op-renameagentsession) | `POST /api/v1/agent/sessions/{session_id}/rename` | write | `workflows:write` | Rename Agent Session |
79
+ | [`requestAgentApprovalChanges`](#op-requestagentapprovalchanges) | `POST /api/v1/agent/approvals/{approval_id}/request-changes` | write | `workflows:write` | Request Agent Approval Changes |
80
+ | [`searchAgentMentions`](#op-searchagentmentions) | `POST /api/v1/agent/mention-search` | read | `workflows:read` | Search Agent Mentions |
81
+ | [`setAgentOperatorEnabled`](#op-setagentoperatorenabled) | `PUT /api/v1/agent/operators/{operator}/enabled` | billable | `workflows:run` | Set Agent Operator Enabled |
82
+ | [`setAgentOperatorRecipient`](#op-setagentoperatorrecipient) | `PUT /api/v1/agent/operators/{operator}/recipient` | write | `workflows:write` | Set Agent Operator Recipient |
83
+ | [`setAgentOperatorTrustDial`](#op-setagentoperatortrustdial) | `PUT /api/v1/agent/operators/{operator}/skills/{skill_key}` | billable | `workflows:run` | Set Agent Operator Trust Dial |
84
+ | [`setupAgentDiscoverySignals`](#op-setupagentdiscoverysignals) | `POST /api/v1/agent/onboarding/discovery/signals` | write | `workflows:write` | Setup Agent Discovery Signals |
85
+ | [`startAgentSessionVoice`](#op-startagentsessionvoice) | `POST /api/v1/agent/sessions/{session_id}/voice` | billable | `workflows:run` | Start Agent Session Voice |
86
+ | [`steerAgentWorkItem`](#op-steeragentworkitem) | `POST /api/v1/agent/work-items/{work_item_id}/steer` | write | `workflows:write` | Steer Agent Work Item |
87
+ | [`submitAgentDomainResponse`](#op-submitagentdomainresponse) | `POST /api/v1/agent/onboarding/domain-response` | write | `workflows:write` | Submit Agent Domain Response |
88
+ | [`takeAgentDiscoveryTurn`](#op-takeagentdiscoveryturn) | `POST /api/v1/agent/onboarding/discovery/turn` | billable | `workflows:run` | Take Agent Discovery Turn |
89
+ | [`updateAgentSession`](#op-updateagentsession) | `PATCH /api/v1/agent/sessions/{session_id}` | write | `workflows:write` | Update Agent Session |
90
+
91
+ ---
92
+
93
+ <a id="op-answeragentdiscovery"></a>
94
+
95
+ ### `g8.api.agents.answerAgentDiscovery(input)`
96
+
97
+ **Answer Agent Discovery**
98
+
99
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/answer`
100
+ - operationId: `answer_agent_discovery_agent_onboarding_discovery_answer_post` (also callable as `g8.api.call("answer_agent_discovery_agent_onboarding_discovery_answer_post", input)`)
101
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
102
+ - API-key scope: `workflows:write`
103
+
104
+ Record ONE graded answer.
105
+
106
+ `grade` is not decoration. A `red` grade stores NO VALUE and burns a rung of
107
+ the probe ladder - the agent asks again a different way rather than keeping
108
+ a guess. Storing an unusable answer as data is how a confident, wrong ICP
109
+ gets built.
110
+
111
+ `field_key` must be a real framework field; anything else is refused by the
112
+ handler by name rather than being written as a stray key.
113
+
114
+ **Input**
115
+
116
+ | Field | Type | Required | Description |
117
+ |---|---|---|---|
118
+ | `body` | `DiscoveryAnswerRequest` | yes | Request body; fields below. |
119
+
120
+ Body fields (`DiscoveryAnswerRequest`):
121
+
122
+ | Field | Type | Required | Description |
123
+ |---|---|---|---|
124
+ | `body.field_key` | `string` | yes | Which discovery field this answers. |
125
+ | `body.grade` | `string` | yes | Confidence in the answer: `green` (certain), `amber` (a working assumption) or `red` (a guess). Amber and red answers come back in `coverage.amber_fields` so they can be revisited. |
126
+ | `body.move_number` | `integer \| null` | no | Interview move this answers. |
127
+ | `body.session_id` | `string \| null` | no | Canvas session to report into. |
128
+ | `body.source` | `string` | no | Who supplied it. Defaults to `user`. default `"user"` |
129
+ | `body.value` | `unknown` | no | The answer. Shape depends on the field. |
130
+
131
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
132
+
133
+ Other envelope fields: `pagination` (PaginationMeta).
134
+
135
+ **Example**
136
+
137
+ ```ts
138
+ const result = await g8.api.agents.answerAgentDiscovery({ body: { field_key: "example", grade: "example" } });
139
+ ```
140
+
141
+ ---
142
+
143
+ <a id="op-cancelagentworkitem"></a>
144
+
145
+ ### `g8.api.agents.cancelAgentWorkItem(input)`
146
+
147
+ **Cancel Agent Work Item**
148
+
149
+ - HTTP: `POST /api/v1/agent/work-items/{work_item_id}/cancel`
150
+ - operationId: `cancel_agent_work_item_agent_work_items__work_item_id__cancel_post` (also callable as `g8.api.call("cancel_agent_work_item_agent_work_items__work_item_id__cancel_post", input)`)
151
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
152
+ - API-key scope: `workflows:delete`
153
+
154
+ Stop a work item.
155
+
156
+ Stops the LOOP. Anything the agent already did - a sequence launched, a
157
+ record written - stays done; cancelling is not an undo.
158
+
159
+ **Input**
160
+
161
+ | Field | Type | Required | Description |
162
+ |---|---|---|---|
163
+ | `path.work_item_id` | `string` | yes | Work item id (UUID). |
164
+
165
+ **Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
166
+
167
+ Other envelope fields: `pagination` (PaginationMeta).
168
+
169
+ **Example**
170
+
171
+ ```ts
172
+ // destructive: deletes or archives data; confirm with a human before calling.
173
+ const result = await g8.api.agents.cancelAgentWorkItem({ path: { work_item_id: "id" } });
174
+ ```
175
+
176
+ ---
177
+
178
+ <a id="op-captureagententrypoint"></a>
179
+
180
+ ### `g8.api.agents.captureAgentEntryPoint(input)`
181
+
182
+ **Capture Agent Entry Point**
183
+
184
+ - HTTP: `POST /api/v1/agent/onboarding/entry-point`
185
+ - operationId: `capture_agent_entry_point_agent_onboarding_entry_point_post` (also callable as `g8.api.call("capture_agent_entry_point_agent_onboarding_entry_point_post", input)`)
186
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
187
+ - API-key scope: `workflows:write`
188
+
189
+ Record which product the customer signed up for. FIRST WRITER WINS.
190
+
191
+ The entry point maps 1:1 to a plan template, so it chooses what the agent
192
+ proposes doing first. It is a one-shot ATTRIBUTION, not a settable
193
+ preference: if the org already has one, this call changes nothing and
194
+ reports the existing value.
195
+
196
+ Read `captured` rather than the status code - a 200 with `captured: false`
197
+ means someone else got there first, which is a normal outcome and not an
198
+ error.
199
+
200
+ **Input**
201
+
202
+ | Field | Type | Required | Description |
203
+ |---|---|---|---|
204
+ | `body` | `EntryPointCaptureRequest` | yes | Request body; fields below. |
205
+
206
+ Body fields (`EntryPointCaptureRequest`):
207
+
208
+ | Field | Type | Required | Description |
209
+ |---|---|---|---|
210
+ | `body.entry_point` | `"dialer" \| "sequencer" \| "marketplace" \| "dev" \| "calendar" \| "email_inbox" \| "full"` | yes | The signup entry point. Maps 1:1 to a plan template, so this chooses what the agent will propose doing first. FIRST WRITER WINS: if the org already has one captured, this call reports the existing value and changes nothing. |
211
+
212
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
213
+
214
+ Other envelope fields: `pagination` (PaginationMeta).
215
+
216
+ **Example**
217
+
218
+ ```ts
219
+ const result = await g8.api.agents.captureAgentEntryPoint({ body: { entry_point: "dialer" } });
220
+ ```
221
+
222
+ ---
223
+
224
+ <a id="op-captureagentsignupattribution"></a>
225
+
226
+ ### `g8.api.agents.captureAgentSignupAttribution(input)`
227
+
228
+ **Capture Agent Signup Attribution**
229
+
230
+ - HTTP: `POST /api/v1/agent/onboarding/attribution`
231
+ - operationId: `capture_agent_signup_attribution_agent_onboarding_attribution_post` (also callable as `g8.api.call("capture_agent_signup_attribution_agent_onboarding_attribution_post", input)`)
232
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
233
+ - API-key scope: `workflows:write`
234
+
235
+ Record first-touch attribution - UTM tags, ad click ids, landing page.
236
+
237
+ FIRST WRITER WINS on every key, so this is safe to call once per session
238
+ and safe to retry. Nothing already captured is overwritten.
239
+
240
+ Every field is optional, which means an empty body is legal and does
241
+ nothing. The response reports each destination separately
242
+ (`organization_persisted`, `contact_persisted`, ...) because attribution
243
+ lands in more than one place and a partial write is worth knowing about -
244
+ `complete` is the single field that says all of them took.
245
+
246
+ **Input**
247
+
248
+ | Field | Type | Required | Description |
249
+ |---|---|---|---|
250
+ | `body` | `SignupAttributionRequest` | yes | Request body; fields below. |
251
+
252
+ Body fields (`SignupAttributionRequest`):
253
+
254
+ | Field | Type | Required | Description |
255
+ |---|---|---|---|
256
+ | `body.entry_point` | `string \| null` | no | Signup entry-point slug. max length 50 |
257
+ | `body.fbclid` | `string \| null` | no | max length 255 |
258
+ | `body.gbraid` | `string \| null` | no | max length 255 |
259
+ | `body.gclid` | `string \| null` | no | max length 255 |
260
+ | `body.landing_at` | `string (date-time) \| null` | no | |
261
+ | `body.landing_page_url` | `string \| null` | no | max length 2048 |
262
+ | `body.signup_referrer` | `string \| null` | no | max length 2048 |
263
+ | `body.utm_campaign` | `string \| null` | no | max length 255 |
264
+ | `body.utm_content` | `string \| null` | no | max length 255 |
265
+ | `body.utm_id` | `string \| null` | no | max length 255 |
266
+ | `body.utm_medium` | `string \| null` | no | max length 255 |
267
+ | `body.utm_source` | `string \| null` | no | max length 255 |
268
+ | `body.utm_term` | `string \| null` | no | max length 255 |
269
+ | `body.wbraid` | `string \| null` | no | max length 255 |
270
+
271
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
272
+
273
+ Other envelope fields: `pagination` (PaginationMeta).
274
+
275
+ **Example**
276
+
277
+ ```ts
278
+ const result = await g8.api.agents.captureAgentSignupAttribution({ body: {} });
279
+ ```
280
+
281
+ ---
282
+
283
+ <a id="op-confirmagentsessioncard"></a>
284
+
285
+ ### `g8.api.agents.confirmAgentSessionCard(input)`
286
+
287
+ **Confirm Agent Session Card**
288
+
289
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/cards/{card_id}/confirm`
290
+ - operationId: `confirm_agent_session_card_agent_sessions__session_id__cards__card_id__confirm_post` (also callable as `g8.api.call("confirm_agent_session_card_agent_sessions__session_id__cards__card_id__confirm_post", input)`)
291
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
292
+ - API-key scope: `workflows:write`
293
+
294
+ Answer a confirm card the agent posted into a session.
295
+
296
+ Onboarding runs stop on these ("is this your company?", "are these your
297
+ competitors?") and resume when the answer lands, usually within ten
298
+ seconds. Idempotent for the same `state`.
299
+
300
+ **Input**
301
+
302
+ | Field | Type | Required | Description |
303
+ |---|---|---|---|
304
+ | `path.session_id` | `string` | yes | Session id (UUID). |
305
+ | `path.card_id` | `string` | yes | The card's id in the session. |
306
+ | `body` | `AgentCardConfirmationRequest` | yes | Request body; fields below. |
307
+
308
+ Body fields (`AgentCardConfirmationRequest`):
309
+
310
+ | Field | Type | Required | Description |
311
+ |---|---|---|---|
312
+ | `body.state` | `"approved" \| "edited" \| "rejected"` | yes | `approved` accepts the card as proposed, `edited` accepts it with your `edits`, `rejected` sends it back. Re-sending the same state is a no-op; a different state overwrites. |
313
+ | `body.edits` | `Record<string, unknown> \| null` | no | Per-field overrides for an `edited` card. The shape is the card's own and varies by card kind. |
314
+ | `body.note` | `string \| null` | no | Why, in your words. max length 2000 |
315
+
316
+ **Returns** `ApiResponse_AgentConversationPayload_`: the envelope `{ data: AgentConversationPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
317
+
318
+ Other envelope fields: `pagination` (PaginationMeta).
319
+
320
+ **Example**
321
+
322
+ ```ts
323
+ const result = await g8.api.agents.confirmAgentSessionCard({
324
+ path: { session_id: "id", card_id: "id" },
325
+ body: { state: "approved" },
326
+ });
327
+ ```
328
+
329
+ ---
330
+
331
+ <a id="op-createagentsession"></a>
332
+
333
+ ### `g8.api.agents.createAgentSession(input)`
334
+
335
+ **Create Agent Session**
336
+
337
+ - HTTP: `POST /api/v1/agent/sessions`
338
+ - operationId: `create_agent_session_agent_sessions_post` (also callable as `g8.api.call("create_agent_session_agent_sessions_post", input)`)
339
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
340
+ - API-key scope: `workflows:write`
341
+
342
+ Open a session, optionally seeded with messages.
343
+
344
+ **Input**
345
+
346
+ | Field | Type | Required | Description |
347
+ |---|---|---|---|
348
+ | `body` | `AgentSessionCreateRequest` | yes | Request body; fields below. |
349
+
350
+ Body fields (`AgentSessionCreateRequest`):
351
+
352
+ | Field | Type | Required | Description |
353
+ |---|---|---|---|
354
+ | `body.messages` | `Array<Record<string, unknown>> \| null` | no | Optional seed messages to open the session with. |
355
+ | `body.mode` | `string` | no | Session mode. default `"general"` |
356
+ | `body.title` | `string \| null` | no | Optional title; the app derives one when omitted. |
357
+
358
+ **Returns** `ApiResponse_AgentSession_`: the envelope `{ data: AgentSession, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
359
+
360
+ Other envelope fields: `pagination` (PaginationMeta).
361
+
362
+ `AgentSession` fields:
363
+
364
+ | Field | Type | Required | Description |
365
+ |---|---|---|---|
366
+ | `created_at` | `string (date-time) \| null` | no | |
367
+ | `id` | `string \| null` | no | |
368
+ | `is_pinned` | `boolean \| null` | no | |
369
+ | `mode` | `string \| null` | no | Session mode, e.g. `general`. |
370
+ | `title` | `string \| null` | no | |
371
+ | `updated_at` | `string (date-time) \| null` | no | |
372
+
373
+ **Example**
374
+
375
+ ```ts
376
+ const result = await g8.api.agents.createAgentSession({ body: {} });
377
+ ```
378
+
379
+ ---
380
+
381
+ <a id="op-createagentvoicedraft"></a>
382
+
383
+ ### `g8.api.agents.createAgentVoiceDraft(input)`
384
+
385
+ **Create Agent Voice Draft**
386
+
387
+ - HTTP: `POST /api/v1/agent/sessions/voice/draft`
388
+ - operationId: `create_agent_voice_draft_agent_sessions_voice_draft_post` (also callable as `g8.api.call("create_agent_voice_draft_agent_sessions_voice_draft_post", input)`)
389
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
390
+ - API-key scope: `workflows:write`
391
+
392
+ Create an EMPTY session to speak into.
393
+
394
+ It creates only the conversation - never a synthetic opening turn from the
395
+ agent. That is deliberate in the app and worth preserving: a fabricated
396
+ first message would appear in the transcript as something the agent said
397
+ when it had not yet heard anything.
398
+
399
+ `session_id` is caller-generated, so a client can open its socket and
400
+ create the row without a round trip between the two. Sending the same id
401
+ twice does not create a second session.
402
+
403
+ **Input**
404
+
405
+ | Field | Type | Required | Description |
406
+ |---|---|---|---|
407
+ | `body` | `VoiceDraftRequest` | yes | Request body; fields below. |
408
+
409
+ Body fields (`VoiceDraftRequest`):
410
+
411
+ | Field | Type | Required | Description |
412
+ |---|---|---|---|
413
+ | `body.session_id` | `string (uuid)` | yes | The id the new session will have - CALLER-GENERATED, not server-assigned. That is what lets a client open the socket and create the row without a round trip between them. Reusing an id does not create a second session. |
414
+
415
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
416
+
417
+ Other envelope fields: `pagination` (PaginationMeta).
418
+
419
+ **Example**
420
+
421
+ ```ts
422
+ const result = await g8.api.agents.createAgentVoiceDraft({ body: { session_id: "00000000-0000-0000-0000-000000000000" } });
423
+ ```
424
+
425
+ ---
426
+
427
+ <a id="op-createagentworkitem"></a>
428
+
429
+ ### `g8.api.agents.createAgentWorkItem(input)`
430
+
431
+ **Create Agent Work Item**
432
+
433
+ - HTTP: `POST /api/v1/agent/work-items`
434
+ - operationId: `create_agent_work_item_agent_work_items_post` (also callable as `g8.api.call("create_agent_work_item_agent_work_items_post", input)`)
435
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
436
+ - API-key scope: `workflows:run`
437
+
438
+ Start a unit of autonomous work. THE AGENT BEGINS PLANNING IMMEDIATELY.
439
+
440
+ `agent_id` selects the planner template. A known id gets its own template;
441
+ anything else falls back to `full`, which is why it is an open string
442
+ rather than an enum - an enum would reject the ad-hoc case the planner
443
+ explicitly supports.
444
+
445
+ `visibility` defaults to `private`: work started through a key is not
446
+ visible org-wide unless asked for.
447
+
448
+ `user_email` defaults to the identity the key was minted under, so the item
449
+ belongs to a real person rather than to nobody.
450
+
451
+ **Input**
452
+
453
+ | Field | Type | Required | Description |
454
+ |---|---|---|---|
455
+ | `body` | `AgentWorkItemCreateRequest` | yes | Request body; fields below. |
456
+
457
+ Body fields (`AgentWorkItemCreateRequest`):
458
+
459
+ | Field | Type | Required | Description |
460
+ |---|---|---|---|
461
+ | `body.agent_id` | `string` | yes | Which agent owns it. A known id the planner has a template for - `onboarding`, `dialer_setup`, `sequencer_setup`, `campaign_run`, `voice_setup`, `marketplace`, `dev_setup` - or a free-form value, for which the planner falls back to its `full` template. Left as an open string for that reason: an enum here would reject the ad-hoc case the planner explicitly supports. |
462
+ | `body.goal` | `string` | yes | What the agent should achieve. min length 1 |
463
+ | `body.title` | `string` | yes | min length 1, max length 500 |
464
+ | `body.entry_point` | `string \| null` | no | Per-session override. Unset, the planner reads the org's own signup entry point as the long-term truth - so omitting this is usually right. |
465
+ | `body.page` | `string \| null` | no | max length 500 |
466
+ | `body.platform` | `"whatsapp" \| "slack" \| "roam" \| "imessage" \| null` | no | |
467
+ | `body.seed_message` | `string \| null` | no | First user message, so the session opens on the real request. |
468
+ | `body.session_title` | `string \| null` | no | Sidebar title. Defaults to `title`. |
469
+ | `body.skill_mode` | `string \| null` | no | `web_search`, `deep_thinking` or `research`. Biases the planner prompt and model tier. Unknown values are IGNORED by the planner rather than rejected, which is why this is not an enum. |
470
+ | `body.source` | `"canvas" \| "bridge" \| null` | no | |
471
+ | `body.subject_account_id` | `string \| null` | no | Bind the session to a company. |
472
+ | `body.subject_campaign_id` | `string \| null` | no | Bind the session to a campaign. |
473
+ | `body.user_email` | `string \| null` | no | Whose work item this is. Defaults to the identity the key was minted under. |
474
+ | `body.visibility` | `"shared" \| "private"` | no | `private` (default) or `shared` org-wide. The default is the safe one: work started through an API key is not visible to the whole org unless asked for. default `"private"` |
475
+
476
+ **Returns** `ApiResponse_AgentWorkItem_`: the envelope `{ data: AgentWorkItem, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
477
+
478
+ Other envelope fields: `pagination` (PaginationMeta).
479
+
480
+ `AgentWorkItem` fields:
481
+
482
+ | Field | Type | Required | Description |
483
+ |---|---|---|---|
484
+ | `agent_id` | `string \| null` | no | |
485
+ | `created_at` | `string (date-time) \| null` | no | |
486
+ | `goal` | `string \| null` | no | |
487
+ | `id` | `string \| null` | no | |
488
+ | `session_id` | `string \| null` | no | |
489
+ | `status` | `string \| null` | no | |
490
+ | `title` | `string \| null` | no | |
491
+ | `updated_at` | `string (date-time) \| null` | no | |
492
+ | `visibility` | `string \| null` | no | |
493
+ | `work_item_id` | `string \| null` | no | |
494
+
495
+ **Example**
496
+
497
+ ```ts
498
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
499
+ const result = await g8.api.agents.createAgentWorkItem({ body: { agent_id: "id", goal: "example", title: "Example" } });
500
+ ```
501
+
502
+ ---
503
+
504
+ <a id="op-decideagentoperatorapproval"></a>
505
+
506
+ ### `g8.api.agents.decideAgentOperatorApproval(input)`
507
+
508
+ **Decide Agent Operator Approval**
509
+
510
+ - HTTP: `POST /api/v1/agent/operators/{operator}/approvals/{task_id}/decide`
511
+ - operationId: `decide_agent_operator_approval_agent_operators__operator__approvals__task_id__decide_post` (also callable as `g8.api.call("decide_agent_operator_approval_agent_operators__operator__approvals__task_id__decide_post", input)`)
512
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
513
+ - API-key scope: `workflows:run`
514
+
515
+ Approve or reject a fix this operator proposed.
516
+
517
+ `approved` RUNS THE FIX: the operator executes its proposed remediation
518
+ against your data, then records the result. `rejected` records the
519
+ decision and runs nothing. Needs OPERATOR_MANAGE, the same governance gate
520
+ as the trust dials, because this authorises execution.
521
+
522
+ A task that is not an open approval for this operator is a 404.
523
+
524
+ **Input**
525
+
526
+ | Field | Type | Required | Description |
527
+ |---|---|---|---|
528
+ | `path.operator` | `string` | yes | |
529
+ | `path.task_id` | `string` | yes | The approval task id. |
530
+ | `body` | `OperatorApprovalDecisionRequest` | yes | Request body; fields below. |
531
+
532
+ Body fields (`OperatorApprovalDecisionRequest`):
533
+
534
+ | Field | Type | Required | Description |
535
+ |---|---|---|---|
536
+ | `body.resolution` | `"approved" \| "rejected"` | yes | `approved` EXECUTES the finding's proposed fix against your data; `rejected` records the decision and executes nothing. |
537
+ | `body.params` | `Record<string, string> \| null` | no | Values a fix needs that the operator could not decide for you, e.g. `{"target_user": "<user id>"}`. Omit for a fully-specified fix. A value the fix refuses is a 400 naming the field, and the task stays open. |
538
+
539
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
540
+
541
+ Other envelope fields: `pagination` (PaginationMeta).
542
+
543
+ **Example**
544
+
545
+ ```ts
546
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
547
+ const result = await g8.api.agents.decideAgentOperatorApproval({
548
+ path: { operator: "example", task_id: "id" },
549
+ body: { resolution: "approved" },
550
+ });
551
+ ```
552
+
553
+ ---
554
+
555
+ <a id="op-deleteagentsession"></a>
556
+
557
+ ### `g8.api.agents.deleteAgentSession(input)`
558
+
559
+ **Delete Agent Session**
560
+
561
+ - HTTP: `DELETE /api/v1/agent/sessions/{session_id}`
562
+ - operationId: `delete_agent_session_agent_sessions__session_id__delete` (also callable as `g8.api.call("delete_agent_session_agent_sessions__session_id__delete", input)`)
563
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
564
+ - API-key scope: `workflows:delete`
565
+
566
+ Delete a session. Owner only - the internal handler enforces that.
567
+
568
+ **Input**
569
+
570
+ | Field | Type | Required | Description |
571
+ |---|---|---|---|
572
+ | `path.session_id` | `string` | yes | Session id. |
573
+
574
+ **Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
575
+
576
+ Other envelope fields: `pagination` (PaginationMeta).
577
+
578
+ **Example**
579
+
580
+ ```ts
581
+ // destructive: deletes or archives data; confirm with a human before calling.
582
+ const result = await g8.api.agents.deleteAgentSession({ path: { session_id: "id" } });
583
+ ```
584
+
585
+ ---
586
+
587
+ <a id="op-endagentsessionvoice"></a>
588
+
589
+ ### `g8.api.agents.endAgentSessionVoice(input)`
590
+
591
+ **End Agent Session Voice**
592
+
593
+ - HTTP: `DELETE /api/v1/agent/sessions/{session_id}/voice/{voice_id}`
594
+ - operationId: `end_agent_session_voice_agent_sessions__session_id__voice__voice_id__delete` (also callable as `g8.api.call("end_agent_session_voice_agent_sessions__session_id__voice__voice_id__delete", input)`)
595
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
596
+ - API-key scope: `workflows:delete`
597
+
598
+ Stop a live voice session, and stop the meter.
599
+
600
+ This is the one that costs money NOT to call. Ending is the only thing that
601
+ stops the charge short of the ceiling, so treat it as part of the start
602
+ call rather than as cleanup.
603
+
604
+ The CONVERSATION survives - this ends the audio session, not the chat. The
605
+ transcript stays readable through `GET /agent/sessions/{session_id}/state`.
606
+
607
+ **Input**
608
+
609
+ | Field | Type | Required | Description |
610
+ |---|---|---|---|
611
+ | `path.session_id` | `string` | yes | Session id (UUID). |
612
+ | `path.voice_id` | `string` | yes | Voice session id (UUID) from the start call. |
613
+
614
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
615
+
616
+ Other envelope fields: `pagination` (PaginationMeta).
617
+
618
+ **Example**
619
+
620
+ ```ts
621
+ // destructive: deletes or archives data; confirm with a human before calling.
622
+ const result = await g8.api.agents.endAgentSessionVoice({ path: { session_id: "id", voice_id: "id" } });
623
+ ```
624
+
625
+ ---
626
+
627
+ <a id="op-getagentdiscovery"></a>
628
+
629
+ ### `g8.api.agents.getAgentDiscovery(input?)`
630
+
631
+ **Get Agent Discovery**
632
+
633
+ - HTTP: `GET /api/v1/agent/onboarding/discovery`
634
+ - operationId: `get_agent_discovery_agent_onboarding_discovery_get` (also callable as `g8.api.call("get_agent_discovery_agent_onboarding_discovery_get", input)`)
635
+ - Tier: `read`: reads data; safe to call and to retry
636
+ - API-key scope: `workflows:read`
637
+
638
+ The whole discovery record, plus an honest coverage report.
639
+
640
+ EVERY field comes back, answered or not - an unanswered one carries
641
+ `status: "open"` rather than being absent, so a caller renders a stable
642
+ list instead of one that grows as the interview proceeds.
643
+
644
+ `coverage` is the part worth reading: `open_musts` names what still blocks
645
+ a launch, `amber_fields` names the working assumptions, and `can_launch` is
646
+ the single boolean. It is not a percentage, on purpose - a framework with
647
+ silent gaps is worse than no framework, because the gaps become confident
648
+ copy three weeks later.
649
+
650
+ **Input**: none.
651
+
652
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
653
+
654
+ Other envelope fields: `pagination` (PaginationMeta).
655
+
656
+ **Example**
657
+
658
+ ```ts
659
+ const result = await g8.api.agents.getAgentDiscovery();
660
+ ```
661
+
662
+ ---
663
+
664
+ <a id="op-getagentdiscoverycampaignbrief"></a>
665
+
666
+ ### `g8.api.agents.getAgentDiscoveryCampaignBrief(input?)`
667
+
668
+ **Get Agent Discovery Campaign Brief**
669
+
670
+ - HTTP: `GET /api/v1/agent/onboarding/discovery/campaign-brief`
671
+ - operationId: `get_agent_discovery_campaign_brief_agent_onboarding_discovery_campaign_brief_get` (also callable as `g8.api.call("get_agent_discovery_campaign_brief_agent_onboarding_discovery_campaign_brief_get", input)`)
672
+ - Tier: `read`: reads data; safe to call and to retry
673
+ - API-key scope: `workflows:read`
674
+
675
+ The campaign brief the record would produce. A PREVIEW - it writes
676
+ nothing.
677
+
678
+ Deterministic and LLM-free: running it again after two more answers gives
679
+ the same document plus two facts, not a differently-worded one. That is
680
+ what makes it safe to poll while the interview is still going.
681
+
682
+ It never fills a gap to look finished. `open_musts` and `assumptions` come
683
+ back alongside the copy, because a brief that reads as complete while four
684
+ must-answer questions are open is how a silent gap becomes a confident
685
+ wrong campaign.
686
+
687
+ **Input**: none.
688
+
689
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
690
+
691
+ Other envelope fields: `pagination` (PaginationMeta).
692
+
693
+ **Example**
694
+
695
+ ```ts
696
+ const result = await g8.api.agents.getAgentDiscoveryCampaignBrief();
697
+ ```
698
+
699
+ ---
700
+
701
+ <a id="op-getagentdiscoveryreport"></a>
702
+
703
+ ### `g8.api.agents.getAgentDiscoveryReport(input?)`
704
+
705
+ **Get Agent Discovery Report**
706
+
707
+ - HTTP: `GET /api/v1/agent/onboarding/discovery/report`
708
+ - operationId: `get_agent_discovery_report_agent_onboarding_discovery_report_get` (also callable as `g8.api.call("get_agent_discovery_report_agent_onboarding_discovery_report_get", input)`)
709
+ - Tier: `read`: reads data; safe to call and to retry
710
+ - API-key scope: `workflows:read`
711
+
712
+ The closing report: what is filled, which MUSTs are still open, what was
713
+ inferred rather than answered.
714
+
715
+ Deliberately not a score. The inferred fields are flagged rather than
716
+ counted, because the useful question at the end of an interview is "what
717
+ did we make up", not "how far did we get".
718
+
719
+ **Input**: none.
720
+
721
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
722
+
723
+ Other envelope fields: `pagination` (PaginationMeta).
724
+
725
+ **Example**
726
+
727
+ ```ts
728
+ const result = await g8.api.agents.getAgentDiscoveryReport();
729
+ ```
730
+
731
+ ---
732
+
733
+ <a id="op-getagentmemory"></a>
734
+
735
+ ### `g8.api.agents.getAgentMemory(input?)`
736
+
737
+ **Get Agent Memory**
738
+
739
+ - HTTP: `GET /api/v1/agent/memory`
740
+ - operationId: `get_agent_memory_agent_memory_get` (also callable as `g8.api.call("get_agent_memory_agent_memory_get", input)`)
741
+ - Tier: `read`: reads data; safe to call and to retry
742
+ - API-key scope: `workflows:read`
743
+
744
+ What the agent has learned and carries between sessions.
745
+
746
+ Returned open-shaped: memory is planner state that changes as the platform
747
+ does, and on an oversight surface a dropped field reads as an agent knowing
748
+ less than it does.
749
+
750
+ **Input**: none.
751
+
752
+ **Returns** `ApiResponse_AgentPayload_`: the envelope `{ data: AgentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
753
+
754
+ Other envelope fields: `pagination` (PaginationMeta).
755
+
756
+ **Example**
757
+
758
+ ```ts
759
+ const result = await g8.api.agents.getAgentMemory();
760
+ ```
761
+
762
+ ---
763
+
764
+ <a id="op-getagentoperatingmodel"></a>
765
+
766
+ ### `g8.api.agents.getAgentOperatingModel(input?)`
767
+
768
+ **Get Agent Operating Model**
769
+
770
+ - HTTP: `GET /api/v1/agent/operators/operating-model`
771
+ - operationId: `get_agent_operating_model_agent_operators_operating_model_get` (also callable as `g8.api.call("get_agent_operating_model_agent_operators_operating_model_get", input)`)
772
+ - Tier: `read`: reads data; safe to call and to retry
773
+ - API-key scope: `workflows:read`
774
+
775
+ The organisation's operating model: which motions it runs, so operators
776
+ know what "normal" looks like here.
777
+
778
+ Read this before writing it. The write is a whole-document replace.
779
+
780
+ **Input**: none.
781
+
782
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
783
+
784
+ Other envelope fields: `pagination` (PaginationMeta).
785
+
786
+ **Example**
787
+
788
+ ```ts
789
+ const result = await g8.api.agents.getAgentOperatingModel();
790
+ ```
791
+
792
+ ---
793
+
794
+ <a id="op-getagentoperatorcatalog"></a>
795
+
796
+ ### `g8.api.agents.getAgentOperatorCatalog(input)`
797
+
798
+ **Get Agent Operator Catalog**
799
+
800
+ - HTTP: `GET /api/v1/agent/operators/{operator}/catalog`
801
+ - operationId: `get_agent_operator_catalog_agent_operators__operator__catalog_get` (also callable as `g8.api.call("get_agent_operator_catalog_agent_operators__operator__catalog_get", input)`)
802
+ - Tier: `read`: reads data; safe to call and to retry
803
+ - API-key scope: `workflows:read`
804
+
805
+ Everything this operator is CAPABLE of, whether or not it is enabled.
806
+
807
+ **Input**
808
+
809
+ | Field | Type | Required | Description |
810
+ |---|---|---|---|
811
+ | `path.operator` | `string` | yes | |
812
+
813
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
814
+
815
+ Other envelope fields: `pagination` (PaginationMeta).
816
+
817
+ **Example**
818
+
819
+ ```ts
820
+ const result = await g8.api.agents.getAgentOperatorCatalog({ path: { operator: "example" } });
821
+ ```
822
+
823
+ ---
824
+
825
+ <a id="op-getagentoperatorfeedbacksummary"></a>
826
+
827
+ ### `g8.api.agents.getAgentOperatorFeedbackSummary(input)`
828
+
829
+ **Get Agent Operator Feedback Summary**
830
+
831
+ - HTTP: `GET /api/v1/agent/operators/{operator}/feedback/summary`
832
+ - operationId: `get_agent_operator_feedback_summary_agent_operators__operator__feedback_summary_get` (also callable as `g8.api.call("get_agent_operator_feedback_summary_agent_operators__operator__feedback_summary_get", input)`)
833
+ - Tier: `read`: reads data; safe to call and to retry
834
+ - API-key scope: `workflows:read`
835
+
836
+ What people have said about this operator, in aggregate.
837
+
838
+ **Input**
839
+
840
+ | Field | Type | Required | Description |
841
+ |---|---|---|---|
842
+ | `path.operator` | `string` | yes | |
843
+
844
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
845
+
846
+ Other envelope fields: `pagination` (PaginationMeta).
847
+
848
+ **Example**
849
+
850
+ ```ts
851
+ const result = await g8.api.agents.getAgentOperatorFeedbackSummary({ path: { operator: "example" } });
852
+ ```
853
+
854
+ ---
855
+
856
+ <a id="op-getagentoperatorforapprovaltask"></a>
857
+
858
+ ### `g8.api.agents.getAgentOperatorForApprovalTask(input)`
859
+
860
+ **Get Agent Operator For Approval Task**
861
+
862
+ - HTTP: `GET /api/v1/agent/operators/approvals/{task_id}/operator`
863
+ - operationId: `get_agent_operator_for_approval_task_agent_operators_approvals__task_id__operator_get` (also callable as `g8.api.call("get_agent_operator_for_approval_task_agent_operators_approvals__task_id__operator_get", input)`)
864
+ - Tier: `read`: reads data; safe to call and to retry
865
+ - API-key scope: `workflows:read`
866
+
867
+ Which operator raised this approval task.
868
+
869
+ The bridge between an approval sitting in someone's queue and the operator
870
+ whose dial produced it - so a caller can look at the right scorecard before
871
+ deciding, and can leave feedback against the right operator afterwards.
872
+
873
+ **Input**
874
+
875
+ | Field | Type | Required | Description |
876
+ |---|---|---|---|
877
+ | `path.task_id` | `string` | yes | Operator approval task id. |
878
+
879
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
880
+
881
+ Other envelope fields: `pagination` (PaginationMeta).
882
+
883
+ **Example**
884
+
885
+ ```ts
886
+ const result = await g8.api.agents.getAgentOperatorForApprovalTask({ path: { task_id: "id" } });
887
+ ```
888
+
889
+ ---
890
+
891
+ <a id="op-getagentoperatorhealth"></a>
892
+
893
+ ### `g8.api.agents.getAgentOperatorHealth(input)`
894
+
895
+ **Get Agent Operator Health**
896
+
897
+ - HTTP: `GET /api/v1/agent/operators/{operator}/health`
898
+ - operationId: `get_agent_operator_health_agent_operators__operator__health_get` (also callable as `g8.api.call("get_agent_operator_health_agent_operators__operator__health_get", input)`)
899
+ - Tier: `read`: reads data; safe to call and to retry
900
+ - API-key scope: `workflows:read`
901
+
902
+ This operator's snapshot of the organisation it watches.
903
+
904
+ Open-shaped: each operator reports the checks IT runs, and the set grows
905
+ with the product. A pinned mirror would silently drop a check, and on a
906
+ health surface a missing check reads as a passing one.
907
+
908
+ **Input**
909
+
910
+ | Field | Type | Required | Description |
911
+ |---|---|---|---|
912
+ | `path.operator` | `string` | yes | |
913
+
914
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
915
+
916
+ Other envelope fields: `pagination` (PaginationMeta).
917
+
918
+ **Example**
919
+
920
+ ```ts
921
+ const result = await g8.api.agents.getAgentOperatorHealth({ path: { operator: "example" } });
922
+ ```
923
+
924
+ ---
925
+
926
+ <a id="op-getagentoperatorrecipient"></a>
927
+
928
+ ### `g8.api.agents.getAgentOperatorRecipient(input)`
929
+
930
+ **Get Agent Operator Recipient**
931
+
932
+ - HTTP: `GET /api/v1/agent/operators/{operator}/recipient`
933
+ - operationId: `get_agent_operator_recipient_agent_operators__operator__recipient_get` (also callable as `g8.api.call("get_agent_operator_recipient_agent_operators__operator__recipient_get", input)`)
934
+ - Tier: `read`: reads data; safe to call and to retry
935
+ - API-key scope: `workflows:read`
936
+
937
+ Who currently receives this operator's alerts and owns its approvals.
938
+
939
+ **Input**
940
+
941
+ | Field | Type | Required | Description |
942
+ |---|---|---|---|
943
+ | `path.operator` | `string` | yes | |
944
+
945
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
946
+
947
+ Other envelope fields: `pagination` (PaginationMeta).
948
+
949
+ **Example**
950
+
951
+ ```ts
952
+ const result = await g8.api.agents.getAgentOperatorRecipient({ path: { operator: "example" } });
953
+ ```
954
+
955
+ ---
956
+
957
+ <a id="op-getagentoperatorscorecard"></a>
958
+
959
+ ### `g8.api.agents.getAgentOperatorScorecard(input)`
960
+
961
+ **Get Agent Operator Scorecard**
962
+
963
+ - HTTP: `GET /api/v1/agent/operators/{operator}/scorecard`
964
+ - operationId: `get_agent_operator_scorecard_agent_operators__operator__scorecard_get` (also callable as `g8.api.call("get_agent_operator_scorecard_agent_operators__operator__scorecard_get", input)`)
965
+ - Tier: `read`: reads data; safe to call and to retry
966
+ - API-key scope: `workflows:read`
967
+
968
+ Has this operator been right, per skill.
969
+
970
+ The number to read before raising a dial. Raising autonomy on a skill with
971
+ a bad scorecard is how unattended work becomes unattended damage.
972
+
973
+ **Input**
974
+
975
+ | Field | Type | Required | Description |
976
+ |---|---|---|---|
977
+ | `path.operator` | `string` | yes | |
978
+
979
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
980
+
981
+ Other envelope fields: `pagination` (PaginationMeta).
982
+
983
+ **Example**
984
+
985
+ ```ts
986
+ const result = await g8.api.agents.getAgentOperatorScorecard({ path: { operator: "example" } });
987
+ ```
988
+
989
+ ---
990
+
991
+ <a id="op-getagentoperatorstatus"></a>
992
+
993
+ ### `g8.api.agents.getAgentOperatorStatus(input)`
994
+
995
+ **Get Agent Operator Status**
996
+
997
+ - HTTP: `GET /api/v1/agent/operators/{operator}/status`
998
+ - operationId: `get_agent_operator_status_agent_operators__operator__status_get` (also callable as `g8.api.call("get_agent_operator_status_agent_operators__operator__status_get", input)`)
999
+ - Tier: `read`: reads data; safe to call and to retry
1000
+ - API-key scope: `workflows:read`
1001
+
1002
+ Is this operator on, and has it ever run.
1003
+
1004
+ **Input**
1005
+
1006
+ | Field | Type | Required | Description |
1007
+ |---|---|---|---|
1008
+ | `path.operator` | `string` | yes | |
1009
+
1010
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1011
+
1012
+ Other envelope fields: `pagination` (PaginationMeta).
1013
+
1014
+ **Example**
1015
+
1016
+ ```ts
1017
+ const result = await g8.api.agents.getAgentOperatorStatus({ path: { operator: "example" } });
1018
+ ```
1019
+
1020
+ ---
1021
+
1022
+ <a id="op-getagentoperatorssummary"></a>
1023
+
1024
+ ### `g8.api.agents.getAgentOperatorsSummary(input?)`
1025
+
1026
+ **Get Agent Operators Summary**
1027
+
1028
+ - HTTP: `GET /api/v1/agent/operators/summary`
1029
+ - operationId: `get_agent_operators_summary_agent_operators_summary_get` (also callable as `g8.api.call("get_agent_operators_summary_agent_operators_summary_get", input)`)
1030
+ - Tier: `read`: reads data; safe to call and to retry
1031
+ - API-key scope: `workflows:read`
1032
+
1033
+ One digest across the whole bench.
1034
+
1035
+ Finding counts here are DISTINCT, not the sum of the per-operator numbers
1036
+ from `GET /agent/operators`. Shared findings legitimately appear in several
1037
+ operators' caches, and adding the cards up counts them more than once - the
1038
+ app's own banner did exactly that before this was split out.
1039
+
1040
+ **Input**: none.
1041
+
1042
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1043
+
1044
+ Other envelope fields: `pagination` (PaginationMeta).
1045
+
1046
+ **Example**
1047
+
1048
+ ```ts
1049
+ const result = await g8.api.agents.getAgentOperatorsSummary();
1050
+ ```
1051
+
1052
+ ---
1053
+
1054
+ <a id="op-getagentoversight"></a>
1055
+
1056
+ ### `g8.api.agents.getAgentOversight(input?)`
1057
+
1058
+ **Get Agent Oversight**
1059
+
1060
+ - HTTP: `GET /api/v1/agent/oversight`
1061
+ - operationId: `get_agent_oversight_agent_oversight_get` (also callable as `g8.api.call("get_agent_oversight_agent_oversight_get", input)`)
1062
+ - Tier: `read`: reads data; safe to call and to retry
1063
+ - API-key scope: `workflows:read`
1064
+
1065
+ What your agents need from a person, and what they did without asking.
1066
+
1067
+ Three groups in one read: `approvals` (work stopped on a decision - each
1068
+ row carries what `POST /agent/approvals/{approval_id}/decide` needs),
1069
+ `blockers` (work stopped for another reason, with why) and
1070
+ `autonomous_fixes` (changes made on your behalf).
1071
+
1072
+ AN EMPTY GROUP SAYS WHY. Read `states`: `ready` means the read worked and
1073
+ there is nothing, `unavailable` means the read failed, `not_recorded`
1074
+ means nothing is ever recorded there for this org (no skill is dialled to
1075
+ act on its own). Every group is capped at `limit` and says so in `bounds`.
1076
+
1077
+ **Input**
1078
+
1079
+ | Field | Type | Required | Description |
1080
+ |---|---|---|---|
1081
+ | `query.limit` | `integer` | no | Max rows PER GROUP. default `50` |
1082
+ | `query.fix_window_hours` | `integer` | no | How far back autonomous fixes are read. default `24` |
1083
+
1084
+ **Returns** `ApiResponse_AgentConversationPayload_`: the envelope `{ data: AgentConversationPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1085
+
1086
+ Other envelope fields: `pagination` (PaginationMeta).
1087
+
1088
+ **Example**
1089
+
1090
+ ```ts
1091
+ const result = await g8.api.agents.getAgentOversight();
1092
+ ```
1093
+
1094
+ ---
1095
+
1096
+ <a id="op-getagentproactiveopener"></a>
1097
+
1098
+ ### `g8.api.agents.getAgentProactiveOpener(input?)`
1099
+
1100
+ **Get Agent Proactive Opener**
1101
+
1102
+ - HTTP: `GET /api/v1/agent/proactive-opener`
1103
+ - operationId: `get_agent_proactive_opener_agent_proactive_opener_get` (also callable as `g8.api.call("get_agent_proactive_opener_agent_proactive_opener_get", input)`)
1104
+ - Tier: `read`: reads data; safe to call and to retry
1105
+ - API-key scope: `workflows:read`
1106
+
1107
+ What the agent would open a conversation with, unprompted.
1108
+
1109
+ A read - it computes a suggestion and starts nothing.
1110
+
1111
+ **Input**: none.
1112
+
1113
+ **Returns** `ApiResponse_AgentPayload_`: the envelope `{ data: AgentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1114
+
1115
+ Other envelope fields: `pagination` (PaginationMeta).
1116
+
1117
+ **Example**
1118
+
1119
+ ```ts
1120
+ const result = await g8.api.agents.getAgentProactiveOpener();
1121
+ ```
1122
+
1123
+ ---
1124
+
1125
+ <a id="op-getagentpushbackevidence"></a>
1126
+
1127
+ ### `g8.api.agents.getAgentPushbackEvidence(input?)`
1128
+
1129
+ **Get Agent Pushback Evidence**
1130
+
1131
+ - HTTP: `GET /api/v1/agent/evidence/pushback`
1132
+ - operationId: `get_agent_pushback_evidence_agent_evidence_pushback_get` (also callable as `g8.api.call("get_agent_pushback_evidence_agent_evidence_pushback_get", input)`)
1133
+ - Tier: `read`: reads data; safe to call and to retry
1134
+ - API-key scope: `workflows:read`
1135
+
1136
+ Where the agent was overruled, and on what.
1137
+
1138
+ The oversight signal worth acting on: it shows which of the agent's
1139
+ suggestions humans rejected, which is how a customer tunes it rather than
1140
+ turning it off.
1141
+
1142
+ **Input**
1143
+
1144
+ | Field | Type | Required | Description |
1145
+ |---|---|---|---|
1146
+ | `query.window_days` | `integer` | no | Lookback window in days. default `30` |
1147
+
1148
+ **Returns** `ApiResponse_AgentPayload_`: the envelope `{ data: AgentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1149
+
1150
+ Other envelope fields: `pagination` (PaginationMeta).
1151
+
1152
+ **Example**
1153
+
1154
+ ```ts
1155
+ const result = await g8.api.agents.getAgentPushbackEvidence();
1156
+ ```
1157
+
1158
+ ---
1159
+
1160
+ <a id="op-getagentsession"></a>
1161
+
1162
+ ### `g8.api.agents.getAgentSession(input)`
1163
+
1164
+ **Get Agent Session**
1165
+
1166
+ - HTTP: `GET /api/v1/agent/sessions/{session_id}`
1167
+ - operationId: `get_agent_session_agent_sessions__session_id__get` (also callable as `g8.api.call("get_agent_session_agent_sessions__session_id__get", input)`)
1168
+ - Tier: `read`: reads data; safe to call and to retry
1169
+ - API-key scope: `workflows:read`
1170
+
1171
+ Read one session, including its messages.
1172
+
1173
+ **Input**
1174
+
1175
+ | Field | Type | Required | Description |
1176
+ |---|---|---|---|
1177
+ | `path.session_id` | `string` | yes | Session id. |
1178
+
1179
+ **Returns** `ApiResponse_AgentSession_`: the envelope `{ data: AgentSession, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1180
+
1181
+ Other envelope fields: `pagination` (PaginationMeta).
1182
+
1183
+ `AgentSession` fields:
1184
+
1185
+ | Field | Type | Required | Description |
1186
+ |---|---|---|---|
1187
+ | `created_at` | `string (date-time) \| null` | no | |
1188
+ | `id` | `string \| null` | no | |
1189
+ | `is_pinned` | `boolean \| null` | no | |
1190
+ | `mode` | `string \| null` | no | Session mode, e.g. `general`. |
1191
+ | `title` | `string \| null` | no | |
1192
+ | `updated_at` | `string (date-time) \| null` | no | |
1193
+
1194
+ **Example**
1195
+
1196
+ ```ts
1197
+ const result = await g8.api.agents.getAgentSession({ path: { session_id: "id" } });
1198
+ ```
1199
+
1200
+ ---
1201
+
1202
+ <a id="op-getagentsessionstate"></a>
1203
+
1204
+ ### `g8.api.agents.getAgentSessionState(input)`
1205
+
1206
+ **Get Agent Session State**
1207
+
1208
+ - HTTP: `GET /api/v1/agent/sessions/{session_id}/state`
1209
+ - operationId: `get_agent_session_state_agent_sessions__session_id__state_get` (also callable as `g8.api.call("get_agent_session_state_agent_sessions__session_id__state_get", input)`)
1210
+ - Tier: `read`: reads data; safe to call and to retry
1211
+ - API-key scope: `workflows:read`
1212
+
1213
+ Everything needed to render one session from cold.
1214
+
1215
+ THREE sources in one answer, and the difference between them matters:
1216
+ `messages` are the chat bubbles, `steps` are what the agent actually did
1217
+ (tool calls, reasoning summaries) and `work_item_status` is whether it is
1218
+ still going. A session driven by a work item has richer `steps` than
1219
+ `messages`, and a plain chat has only `messages` - so a client that renders
1220
+ only one of them will show an empty conversation for half the sessions.
1221
+
1222
+ 404s on a session the caller cannot see, rather than 403 - existence is not
1223
+ leaked by distinguishing the two.
1224
+
1225
+ **Input**
1226
+
1227
+ | Field | Type | Required | Description |
1228
+ |---|---|---|---|
1229
+ | `path.session_id` | `string` | yes | Session id (UUID). |
1230
+
1231
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1232
+
1233
+ Other envelope fields: `pagination` (PaginationMeta).
1234
+
1235
+ **Example**
1236
+
1237
+ ```ts
1238
+ const result = await g8.api.agents.getAgentSessionState({ path: { session_id: "id" } });
1239
+ ```
1240
+
1241
+ ---
1242
+
1243
+ <a id="op-getagentsessionvoicecapability"></a>
1244
+
1245
+ ### `g8.api.agents.getAgentSessionVoiceCapability(input)`
1246
+
1247
+ **Get Agent Session Voice Capability**
1248
+
1249
+ - HTTP: `GET /api/v1/agent/sessions/{session_id}/voice`
1250
+ - operationId: `get_agent_session_voice_capability_agent_sessions__session_id__voice_get` (also callable as `g8.api.call("get_agent_session_voice_capability_agent_sessions__session_id__voice_get", input)`)
1251
+ - Tier: `read`: reads data; safe to call and to retry
1252
+ - API-key scope: `workflows:read`
1253
+
1254
+ Can voice be used on THIS session.
1255
+
1256
+ Differs from the workspace answer by also checking the caller owns the
1257
+ session, so it is the one to ask before showing a microphone on a specific
1258
+ conversation.
1259
+
1260
+ **Input**
1261
+
1262
+ | Field | Type | Required | Description |
1263
+ |---|---|---|---|
1264
+ | `path.session_id` | `string` | yes | Session id (UUID). |
1265
+
1266
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1267
+
1268
+ Other envelope fields: `pagination` (PaginationMeta).
1269
+
1270
+ **Example**
1271
+
1272
+ ```ts
1273
+ const result = await g8.api.agents.getAgentSessionVoiceCapability({ path: { session_id: "id" } });
1274
+ ```
1275
+
1276
+ ---
1277
+
1278
+ <a id="op-getagentvoicecapability"></a>
1279
+
1280
+ ### `g8.api.agents.getAgentVoiceCapability(input?)`
1281
+
1282
+ **Get Agent Voice Capability**
1283
+
1284
+ - HTTP: `GET /api/v1/agent/sessions/voice/capability`
1285
+ - operationId: `get_agent_voice_capability_agent_sessions_voice_capability_get` (also callable as `g8.api.call("get_agent_voice_capability_agent_sessions_voice_capability_get", input)`)
1286
+ - Tier: `read`: reads data; safe to call and to retry
1287
+ - API-key scope: `workflows:read`
1288
+
1289
+ Can this workspace use voice at all, and what does it cost.
1290
+
1291
+ The org-wide answer, with indicative pricing - ask this before building a
1292
+ voice affordance into a UI. The per-session twin
1293
+ (`GET /agent/sessions/{session_id}/voice`) answers the same question for one
1294
+ conversation and additionally checks the caller owns it.
1295
+
1296
+ `available: false` comes with a `reason`, so a client can say WHY rather
1297
+ than hiding the control.
1298
+
1299
+ **Input**: none.
1300
+
1301
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1302
+
1303
+ Other envelope fields: `pagination` (PaginationMeta).
1304
+
1305
+ **Example**
1306
+
1307
+ ```ts
1308
+ const result = await g8.api.agents.getAgentVoiceCapability();
1309
+ ```
1310
+
1311
+ ---
1312
+
1313
+ <a id="op-listagentoperatoractions"></a>
1314
+
1315
+ ### `g8.api.agents.listAgentOperatorActions(input)`
1316
+
1317
+ **List Agent Operator Actions**
1318
+
1319
+ - HTTP: `GET /api/v1/agent/operators/{operator}/actions`
1320
+ - operationId: `list_agent_operator_actions_agent_operators__operator__actions_get` (also callable as `g8.api.call("list_agent_operator_actions_agent_operators__operator__actions_get", input)`)
1321
+ - Tier: `read`: reads data; safe to call and to retry
1322
+ - API-key scope: `workflows:read`
1323
+
1324
+ The action descriptors behind this operator's skills.
1325
+
1326
+ Static and org-independent - the same answer for every organisation. It is
1327
+ the definition of what each action does and how reversible it is, which is
1328
+ what the trust-dial ceiling is computed from.
1329
+
1330
+ **Input**
1331
+
1332
+ | Field | Type | Required | Description |
1333
+ |---|---|---|---|
1334
+ | `path.operator` | `string` | yes | |
1335
+
1336
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1337
+
1338
+ Other envelope fields: `pagination` (PaginationMeta).
1339
+
1340
+ `OperatorListPayload` fields:
1341
+
1342
+ | Field | Type | Required | Description |
1343
+ |---|---|---|---|
1344
+ | `items` | `Array<unknown>` | no | |
1345
+
1346
+ **Example**
1347
+
1348
+ ```ts
1349
+ const result = await g8.api.agents.listAgentOperatorActions({ path: { operator: "example" } });
1350
+ ```
1351
+
1352
+ ---
1353
+
1354
+ <a id="op-listagentoperatoractivity"></a>
1355
+
1356
+ ### `g8.api.agents.listAgentOperatorActivity(input)`
1357
+
1358
+ **List Agent Operator Activity**
1359
+
1360
+ - HTTP: `GET /api/v1/agent/operators/{operator}/activity`
1361
+ - operationId: `list_agent_operator_activity_agent_operators__operator__activity_get` (also callable as `g8.api.call("list_agent_operator_activity_agent_operators__operator__activity_get", input)`)
1362
+ - Tier: `read`: reads data; safe to call and to retry
1363
+ - API-key scope: `workflows:read`
1364
+
1365
+ What this operator actually DID - decided approvals and remediations.
1366
+
1367
+ Findings are what it saw; this is what it changed. The audit trail for
1368
+ unattended work, and the only place that distinguishes the two.
1369
+
1370
+ **Input**
1371
+
1372
+ | Field | Type | Required | Description |
1373
+ |---|---|---|---|
1374
+ | `path.operator` | `string` | yes | |
1375
+ | `query.limit` | `integer` | no | How many history rows to return. The app's own default is 50 and it declares no ceiling; a bound is added here because an unbounded limit on a public contract is a denial-of-service parameter. default `50` |
1376
+
1377
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1378
+
1379
+ Other envelope fields: `pagination` (PaginationMeta).
1380
+
1381
+ `OperatorListPayload` fields:
1382
+
1383
+ | Field | Type | Required | Description |
1384
+ |---|---|---|---|
1385
+ | `items` | `Array<unknown>` | no | |
1386
+
1387
+ **Example**
1388
+
1389
+ ```ts
1390
+ const result = await g8.api.agents.listAgentOperatorActivity({ path: { operator: "example" } });
1391
+ ```
1392
+
1393
+ ---
1394
+
1395
+ <a id="op-listagentoperatoractivityrecords"></a>
1396
+
1397
+ ### `g8.api.agents.listAgentOperatorActivityRecords(input)`
1398
+
1399
+ **List Agent Operator Activity Records**
1400
+
1401
+ - HTTP: `GET /api/v1/agent/operators/{operator}/activity/{task_id}/records`
1402
+ - operationId: `list_agent_operator_activity_records_agent_operators__operator__activity__task_id__records_get` (also callable as `g8.api.call("list_agent_operator_activity_records_agent_operators__operator__activity__task_id__records_get", input)`)
1403
+ - Tier: `read`: reads data; safe to call and to retry
1404
+ - API-key scope: `workflows:read`
1405
+
1406
+ Which records one activity entry touched.
1407
+
1408
+ The row-level detail behind a single thing the operator did: what it
1409
+ changed, not just that it changed something.
1410
+
1411
+ **Input**
1412
+
1413
+ | Field | Type | Required | Description |
1414
+ |---|---|---|---|
1415
+ | `path.operator` | `string` | yes | |
1416
+ | `path.task_id` | `string` | yes | Task id from the activity list. |
1417
+
1418
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1419
+
1420
+ Other envelope fields: `pagination` (PaginationMeta).
1421
+
1422
+ `OperatorListPayload` fields:
1423
+
1424
+ | Field | Type | Required | Description |
1425
+ |---|---|---|---|
1426
+ | `items` | `Array<unknown>` | no | |
1427
+
1428
+ **Example**
1429
+
1430
+ ```ts
1431
+ const result = await g8.api.agents.listAgentOperatorActivityRecords({ path: { operator: "example", task_id: "id" } });
1432
+ ```
1433
+
1434
+ ---
1435
+
1436
+ <a id="op-listagentoperatorapprovalsources"></a>
1437
+
1438
+ ### `g8.api.agents.listAgentOperatorApprovalSources(input?)`
1439
+
1440
+ **List Agent Operator Approval Sources**
1441
+
1442
+ - HTTP: `GET /api/v1/agent/operators/approvals/sources`
1443
+ - operationId: `list_agent_operator_approval_sources_agent_operators_approvals_sources_get` (also callable as `g8.api.call("list_agent_operator_approval_sources_agent_operators_approvals_sources_get", input)`)
1444
+ - Tier: `read`: reads data; safe to call and to retry
1445
+ - API-key scope: `workflows:read`
1446
+
1447
+ Where operator approval tasks come from.
1448
+
1449
+ The vocabulary behind `GET /agent/operators/{operator}/findings` - what
1450
+ kinds of thing raise an approval in the first place.
1451
+
1452
+ **Input**: none.
1453
+
1454
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1455
+
1456
+ Other envelope fields: `pagination` (PaginationMeta).
1457
+
1458
+ `OperatorListPayload` fields:
1459
+
1460
+ | Field | Type | Required | Description |
1461
+ |---|---|---|---|
1462
+ | `items` | `Array<unknown>` | no | |
1463
+
1464
+ **Example**
1465
+
1466
+ ```ts
1467
+ const result = await g8.api.agents.listAgentOperatorApprovalSources();
1468
+ ```
1469
+
1470
+ ---
1471
+
1472
+ <a id="op-listagentoperatorcollections"></a>
1473
+
1474
+ ### `g8.api.agents.listAgentOperatorCollections(input)`
1475
+
1476
+ **List Agent Operator Collections**
1477
+
1478
+ - HTTP: `GET /api/v1/agent/operators/{operator}/collections`
1479
+ - operationId: `list_agent_operator_collections_agent_operators__operator__collections_get` (also callable as `g8.api.call("list_agent_operator_collections_agent_operators__operator__collections_get", input)`)
1480
+ - Tier: `read`: reads data; safe to call and to retry
1481
+ - API-key scope: `workflows:read`
1482
+
1483
+ The knowledge collections this operator reasons from.
1484
+
1485
+ Slug, name and a one-line summary only. The BODIES are never returned -
1486
+ they are graph8-managed and locked, and the app does not expose them
1487
+ either. This is not a gap in the proxy.
1488
+
1489
+ **Input**
1490
+
1491
+ | Field | Type | Required | Description |
1492
+ |---|---|---|---|
1493
+ | `path.operator` | `string` | yes | |
1494
+
1495
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1496
+
1497
+ Other envelope fields: `pagination` (PaginationMeta).
1498
+
1499
+ `OperatorListPayload` fields:
1500
+
1501
+ | Field | Type | Required | Description |
1502
+ |---|---|---|---|
1503
+ | `items` | `Array<unknown>` | no | |
1504
+
1505
+ **Example**
1506
+
1507
+ ```ts
1508
+ const result = await g8.api.agents.listAgentOperatorCollections({ path: { operator: "example" } });
1509
+ ```
1510
+
1511
+ ---
1512
+
1513
+ <a id="op-listagentoperatorfindings"></a>
1514
+
1515
+ ### `g8.api.agents.listAgentOperatorFindings(input)`
1516
+
1517
+ **List Agent Operator Findings**
1518
+
1519
+ - HTTP: `GET /api/v1/agent/operators/{operator}/findings`
1520
+ - operationId: `list_agent_operator_findings_agent_operators__operator__findings_get` (also callable as `g8.api.call("list_agent_operator_findings_agent_operators__operator__findings_get", input)`)
1521
+ - Tier: `read`: reads data; safe to call and to retry
1522
+ - API-key scope: `workflows:read`
1523
+
1524
+ What this operator has found and classified, right now.
1525
+
1526
+ The output of unattended work. Findings are what a `DETECT` dial produces;
1527
+ a `PROPOSE` dial turns some of them into approval tasks a person decides.
1528
+
1529
+ **Input**
1530
+
1531
+ | Field | Type | Required | Description |
1532
+ |---|---|---|---|
1533
+ | `path.operator` | `string` | yes | |
1534
+
1535
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1536
+
1537
+ Other envelope fields: `pagination` (PaginationMeta).
1538
+
1539
+ `OperatorListPayload` fields:
1540
+
1541
+ | Field | Type | Required | Description |
1542
+ |---|---|---|---|
1543
+ | `items` | `Array<unknown>` | no | |
1544
+
1545
+ **Example**
1546
+
1547
+ ```ts
1548
+ const result = await g8.api.agents.listAgentOperatorFindings({ path: { operator: "example" } });
1549
+ ```
1550
+
1551
+ ---
1552
+
1553
+ <a id="op-listagentoperatorskills"></a>
1554
+
1555
+ ### `g8.api.agents.listAgentOperatorSkills(input)`
1556
+
1557
+ **List Agent Operator Skills**
1558
+
1559
+ - HTTP: `GET /api/v1/agent/operators/{operator}/skills`
1560
+ - operationId: `list_agent_operator_skills_agent_operators__operator__skills_get` (also callable as `g8.api.call("list_agent_operator_skills_agent_operators__operator__skills_get", input)`)
1561
+ - Tier: `read`: reads data; safe to call and to retry
1562
+ - API-key scope: `workflows:read`
1563
+
1564
+ Each skill this operator has, and how far it may currently go.
1565
+
1566
+ The source of the `skill_key` values the trust-dial write accepts, and the
1567
+ place to read back what a dial actually RESOLVED to after the risk cap was
1568
+ applied.
1569
+
1570
+ **Input**
1571
+
1572
+ | Field | Type | Required | Description |
1573
+ |---|---|---|---|
1574
+ | `path.operator` | `string` | yes | |
1575
+
1576
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1577
+
1578
+ Other envelope fields: `pagination` (PaginationMeta).
1579
+
1580
+ `OperatorListPayload` fields:
1581
+
1582
+ | Field | Type | Required | Description |
1583
+ |---|---|---|---|
1584
+ | `items` | `Array<unknown>` | no | |
1585
+
1586
+ **Example**
1587
+
1588
+ ```ts
1589
+ const result = await g8.api.agents.listAgentOperatorSkills({ path: { operator: "example" } });
1590
+ ```
1591
+
1592
+ ---
1593
+
1594
+ <a id="op-listagentoperators"></a>
1595
+
1596
+ ### `g8.api.agents.listAgentOperators(input?)`
1597
+
1598
+ **List Agent Operators**
1599
+
1600
+ - HTTP: `GET /api/v1/agent/operators`
1601
+ - operationId: `list_agent_operators_agent_operators_get` (also callable as `g8.api.call("list_agent_operators_agent_operators_get", input)`)
1602
+ - Tier: `read`: reads data; safe to call and to retry
1603
+ - API-key scope: `workflows:read`
1604
+
1605
+ Every operator on the bench, with whether it is switched on for you.
1606
+
1607
+ The starting point for this surface: it carries each operator's catalog
1608
+ metadata and its live status - enabled, whether it has ever run, and how
1609
+ many findings it is holding.
1610
+
1611
+ **Input**: none.
1612
+
1613
+ **Returns** `ApiResponse_OperatorListPayload_`: the envelope `{ data: OperatorListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1614
+
1615
+ Other envelope fields: `pagination` (PaginationMeta).
1616
+
1617
+ `OperatorListPayload` fields:
1618
+
1619
+ | Field | Type | Required | Description |
1620
+ |---|---|---|---|
1621
+ | `items` | `Array<unknown>` | no | |
1622
+
1623
+ **Example**
1624
+
1625
+ ```ts
1626
+ const result = await g8.api.agents.listAgentOperators();
1627
+ ```
1628
+
1629
+ ---
1630
+
1631
+ <a id="op-listagentsessions"></a>
1632
+
1633
+ ### `g8.api.agents.listAgentSessions(input?)`
1634
+
1635
+ **List Agent Sessions**
1636
+
1637
+ - HTTP: `GET /api/v1/agent/sessions`
1638
+ - operationId: `list_agent_sessions_agent_sessions_get` (also callable as `g8.api.call("list_agent_sessions_agent_sessions_get", input)`)
1639
+ - Tier: `read`: reads data; safe to call and to retry
1640
+ - API-key scope: `workflows:read`
1641
+
1642
+ Sessions owned by, or shared with, the principal behind this key.
1643
+
1644
+ **Input**
1645
+
1646
+ | Field | Type | Required | Description |
1647
+ |---|---|---|---|
1648
+ | `query.mode` | `string \| null` | no | Filter to one session mode. |
1649
+ | `query.limit` | `integer` | no | Page size (max 200). default `50` |
1650
+ | `query.offset` | `integer` | no | Rows to skip. default `0` |
1651
+
1652
+ **Returns** `ApiResponse_AgentSessionListResponse_`: the envelope `{ data: AgentSessionListResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1653
+
1654
+ Other envelope fields: `pagination` (PaginationMeta).
1655
+
1656
+ `AgentSessionListResponse` fields:
1657
+
1658
+ | Field | Type | Required | Description |
1659
+ |---|---|---|---|
1660
+ | `sessions` | `Array<AgentSession>` | no | |
1661
+ | `total` | `integer` | no | default `0` |
1662
+
1663
+ **Example**
1664
+
1665
+ ```ts
1666
+ const result = await g8.api.agents.listAgentSessions();
1667
+ ```
1668
+
1669
+ ---
1670
+
1671
+ <a id="op-listagentspecialists"></a>
1672
+
1673
+ ### `g8.api.agents.listAgentSpecialists(input?)`
1674
+
1675
+ **List Agent Specialists**
1676
+
1677
+ - HTTP: `GET /api/v1/agent/specialists`
1678
+ - operationId: `list_agent_specialists_agent_specialists_get` (also callable as `g8.api.call("list_agent_specialists_agent_specialists_get", input)`)
1679
+ - Tier: `read`: reads data; safe to call and to retry
1680
+ - API-key scope: `workflows:read`
1681
+
1682
+ The sub-agents available to be delegated to.
1683
+
1684
+ The bench: who each specialist is, what it is for, and whether it backs the
1685
+ Chief of Staff. Static and the same for every organisation - it is the
1686
+ catalogue of what the platform can delegate to, not what YOUR org has
1687
+ configured.
1688
+
1689
+ Read it to learn the `agent_id` values `POST /agent/work-items` accepts as
1690
+ its planner template. An unknown id there falls back to the general planner
1691
+ rather than failing, which is why that field is an open string - this is the
1692
+ list that stops a caller relying on that fallback by accident.
1693
+
1694
+ **Input**: none.
1695
+
1696
+ **Returns** `ApiResponse_AgentBenchListPayload_`: the envelope `{ data: AgentBenchListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1697
+
1698
+ Other envelope fields: `pagination` (PaginationMeta).
1699
+
1700
+ `AgentBenchListPayload` fields:
1701
+
1702
+ | Field | Type | Required | Description |
1703
+ |---|---|---|---|
1704
+ | `items` | `Array<unknown>` | no | |
1705
+
1706
+ **Example**
1707
+
1708
+ ```ts
1709
+ const result = await g8.api.agents.listAgentSpecialists();
1710
+ ```
1711
+
1712
+ ---
1713
+
1714
+ <a id="op-listagentworkitems"></a>
1715
+
1716
+ ### `g8.api.agents.listAgentWorkItems(input?)`
1717
+
1718
+ **List Agent Work Items**
1719
+
1720
+ - HTTP: `GET /api/v1/agent/work-items`
1721
+ - operationId: `list_agent_work_items_agent_work_items_get` (also callable as `g8.api.call("list_agent_work_items_agent_work_items_get", input)`)
1722
+ - Tier: `read`: reads data; safe to call and to retry
1723
+ - API-key scope: `workflows:read`
1724
+
1725
+ Work items the caller can see.
1726
+
1727
+ **Input**
1728
+
1729
+ | Field | Type | Required | Description |
1730
+ |---|---|---|---|
1731
+ | `query.statuses` | `Array<string> \| null` | no | Status filter, REPEATABLE: `?statuses=running&statuses=queued`. Repeated rather than comma-joined, matching the app - a comma in a status would otherwise split it. |
1732
+ | `query.agent_id` | `string \| null` | no | Filter to one agent. |
1733
+ | `query.include_shared` | `boolean` | no | Include org-wide shared items as well as the caller's own. True by default, matching the app - set false to see only your own. default `true` |
1734
+ | `query.limit` | `integer` | no | default `100` |
1735
+ | `query.offset` | `integer` | no | default `0` |
1736
+
1737
+ **Returns** `ApiResponse_AgentWorkItemList_`: the envelope `{ data: AgentWorkItemList, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1738
+
1739
+ Other envelope fields: `pagination` (PaginationMeta).
1740
+
1741
+ `AgentWorkItemList` fields:
1742
+
1743
+ | Field | Type | Required | Description |
1744
+ |---|---|---|---|
1745
+ | `total` | `integer` | no | default `0` |
1746
+ | `work_items` | `Array<AgentWorkItem>` | no | |
1747
+
1748
+ **Example**
1749
+
1750
+ ```ts
1751
+ const result = await g8.api.agents.listAgentWorkItems();
1752
+ ```
1753
+
1754
+ ---
1755
+
1756
+ <a id="op-loadcopilotintentcontext"></a>
1757
+
1758
+ ### `g8.api.agents.loadCopilotIntentContext(input)`
1759
+
1760
+ **Load Copilot Intent Context**
1761
+
1762
+ - HTTP: `POST /api/v1/copilot/context/load`
1763
+ - operationId: `load_copilot_intent_context_copilot_context_load_post` (also callable as `g8.api.call("load_copilot_intent_context_copilot_context_load_post", input)`)
1764
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1765
+ - API-key scope: `workflows:write`
1766
+
1767
+ Open a Copilot session already briefed on one buyer-intent keyword.
1768
+
1769
+ Returns `session_id`. The session is seeded with the keyword's detail (and
1770
+ the company or contact, if given), so the first question can be about it
1771
+ without restating it. No model runs here.
1772
+
1773
+ **Input**
1774
+
1775
+ | Field | Type | Required | Description |
1776
+ |---|---|---|---|
1777
+ | `body` | `CopilotContextLoadRequest` | yes | Request body; fields below. |
1778
+
1779
+ Body fields (`CopilotContextLoadRequest`):
1780
+
1781
+ | Field | Type | Required | Description |
1782
+ |---|---|---|---|
1783
+ | `body.keyword_id` | `string (uuid)` | yes | The buyer-intent keyword to open a conversation about. |
1784
+ | `body.company_id` | `integer \| null` | no | Narrow the context to one company. |
1785
+ | `body.contact_id` | `integer \| null` | no | Narrow the context to one contact. |
1786
+
1787
+ **Returns** `ApiResponse_AgentConversationPayload_`: the envelope `{ data: AgentConversationPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1788
+
1789
+ Other envelope fields: `pagination` (PaginationMeta).
1790
+
1791
+ **Example**
1792
+
1793
+ ```ts
1794
+ const result = await g8.api.agents.loadCopilotIntentContext({ body: { keyword_id: "00000000-0000-0000-0000-000000000000" } });
1795
+ ```
1796
+
1797
+ ---
1798
+
1799
+ <a id="op-markagentsessionread"></a>
1800
+
1801
+ ### `g8.api.agents.markAgentSessionRead(input)`
1802
+
1803
+ **Mark Agent Session Read**
1804
+
1805
+ - HTTP: `PUT /api/v1/agent/sessions/{session_id}/read`
1806
+ - operationId: `mark_agent_session_read_agent_sessions__session_id__read_put` (also callable as `g8.api.call("mark_agent_session_read_agent_sessions__session_id__read_put", input)`)
1807
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1808
+ - API-key scope: `workflows:write`
1809
+
1810
+ Mark messages read up to a COUNT, not a flag.
1811
+
1812
+ A count higher than the session actually holds is refused with 409 rather
1813
+ than accepted. That looks strict until you consider what accepting it does:
1814
+ a stale client claiming to have read eleven messages when there are nine
1815
+ would mark the next two read before anyone saw them, and the customer would
1816
+ never be told the agent had replied.
1817
+
1818
+ The app answers 204 with no body; this returns the usual envelope so a
1819
+ generated SDK has one response shape across the surface.
1820
+
1821
+ **Input**
1822
+
1823
+ | Field | Type | Required | Description |
1824
+ |---|---|---|---|
1825
+ | `path.session_id` | `string` | yes | Session id (UUID). |
1826
+ | `body` | `SessionReadRequest` | yes | Request body; fields below. |
1827
+
1828
+ Body fields (`SessionReadRequest`):
1829
+
1830
+ | Field | Type | Required | Description |
1831
+ |---|---|---|---|
1832
+ | `body.message_count` | `integer` | yes | How many messages the caller has actually seen. NOT a flag: the server refuses a count higher than the session holds with a 409, because a client claiming to have read messages that do not exist yet is a stale client, and silently accepting it would mark a later real message read before anyone saw it. min 0 |
1833
+
1834
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1835
+
1836
+ Other envelope fields: `pagination` (PaginationMeta).
1837
+
1838
+ **Example**
1839
+
1840
+ ```ts
1841
+ const result = await g8.api.agents.markAgentSessionRead({ path: { session_id: "id" }, body: { message_count: 0 } });
1842
+ ```
1843
+
1844
+ ---
1845
+
1846
+ <a id="op-openagentdiscovery"></a>
1847
+
1848
+ ### `g8.api.agents.openAgentDiscovery(input?)`
1849
+
1850
+ **Open Agent Discovery**
1851
+
1852
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/open`
1853
+ - operationId: `open_agent_discovery_agent_onboarding_discovery_open_post` (also callable as `g8.api.call("open_agent_discovery_agent_onboarding_discovery_open_post", input)`)
1854
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1855
+ - API-key scope: `workflows:write`
1856
+
1857
+ Start the interview: show what the agent already worked out, and ask
1858
+ where it is wrong.
1859
+
1860
+ Takes no body. Degrades gracefully when nothing is readable yet - a
1861
+ brand-new org's site scrape lands minutes after signup, and the app decided
1862
+ a routing question is a better opener than a spinner.
1863
+
1864
+ A VIEW never enrols an org into a kickoff: proposals are only STAGED for an
1865
+ org that already has an onboarding room, which is what stops one visit
1866
+ giving an established org a permanent door onto an empty conversation.
1867
+
1868
+ **Input**: none.
1869
+
1870
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1871
+
1872
+ Other envelope fields: `pagination` (PaginationMeta).
1873
+
1874
+ **Example**
1875
+
1876
+ ```ts
1877
+ const result = await g8.api.agents.openAgentDiscovery();
1878
+ ```
1879
+
1880
+ ---
1881
+
1882
+ <a id="op-pinagentsession"></a>
1883
+
1884
+ ### `g8.api.agents.pinAgentSession(input)`
1885
+
1886
+ **Pin Agent Session**
1887
+
1888
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/pin`
1889
+ - operationId: `pin_agent_session_agent_sessions__session_id__pin_post` (also callable as `g8.api.call("pin_agent_session_agent_sessions__session_id__pin_post", input)`)
1890
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1891
+ - API-key scope: `workflows:write`
1892
+
1893
+ Pin or unpin a session. Owner only.
1894
+
1895
+ **Input**
1896
+
1897
+ | Field | Type | Required | Description |
1898
+ |---|---|---|---|
1899
+ | `path.session_id` | `string` | yes | Session id. |
1900
+ | `body` | `AgentSessionPinRequest` | yes | Request body; fields below. |
1901
+
1902
+ Body fields (`AgentSessionPinRequest`):
1903
+
1904
+ | Field | Type | Required | Description |
1905
+ |---|---|---|---|
1906
+ | `body.is_pinned` | `boolean` | yes | True to pin, false to unpin. |
1907
+
1908
+ **Returns** `ApiResponse_AgentSession_`: the envelope `{ data: AgentSession, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1909
+
1910
+ Other envelope fields: `pagination` (PaginationMeta).
1911
+
1912
+ `AgentSession` fields:
1913
+
1914
+ | Field | Type | Required | Description |
1915
+ |---|---|---|---|
1916
+ | `created_at` | `string (date-time) \| null` | no | |
1917
+ | `id` | `string \| null` | no | |
1918
+ | `is_pinned` | `boolean \| null` | no | |
1919
+ | `mode` | `string \| null` | no | Session mode, e.g. `general`. |
1920
+ | `title` | `string \| null` | no | |
1921
+ | `updated_at` | `string (date-time) \| null` | no | |
1922
+
1923
+ **Example**
1924
+
1925
+ ```ts
1926
+ const result = await g8.api.agents.pinAgentSession({ path: { session_id: "id" }, body: { is_pinned: true } });
1927
+ ```
1928
+
1929
+ ---
1930
+
1931
+ <a id="op-postagentchat"></a>
1932
+
1933
+ ### `g8.api.agents.postAgentChat(input)`
1934
+
1935
+ **Post Agent Chat**
1936
+
1937
+ - HTTP: `POST /api/v1/agent/chat`
1938
+ - operationId: `post_agent_chat_agent_chat_post` (also callable as `g8.api.call("post_agent_chat_agent_chat_post", input)`)
1939
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
1940
+ - API-key scope: `workflows:run`
1941
+
1942
+ Say something to the agent and get its answer.
1943
+
1944
+ `kind` in the answer says which way the turn went: `chat` is a reply in
1945
+ `message`; `work_item` means the agent read the message as a job and
1946
+ STARTED it - `work_item_id` is the work item, and whether its workflow
1947
+ actually launched is in `workflow_started`.
1948
+
1949
+ Each turn runs a model and is charged. Omit `session_id` to start a new
1950
+ session.
1951
+
1952
+ **Input**
1953
+
1954
+ | Field | Type | Required | Description |
1955
+ |---|---|---|---|
1956
+ | `body` | `AgentChatRequest` | yes | Request body; fields below. |
1957
+
1958
+ Body fields (`AgentChatRequest`):
1959
+
1960
+ | Field | Type | Required | Description |
1961
+ |---|---|---|---|
1962
+ | `body.attachment_ids` | `Array<string>` | no | Uploaded file ids to attach, each at most once. max items 20 |
1963
+ | `body.client_turn_id` | `string (uuid) \| null` | no | Your own id for this turn, so a retry is recognised as the same turn rather than said twice. Needs an existing `session_id`. |
1964
+ | `body.mentions` | `Array<Record<string, unknown>> \| null` | no | @-mentions from `POST /agent/mention-search`, passed through as returned (`id`, `category`, `display_name`, ...). |
1965
+ | `body.message` | `string` | no | What you say to the agent. Required unless you attach a file. default `""`, max length 10000 |
1966
+ | `body.mode` | `string \| null` | no | Bias the agent: `web_search`, `deep_thinking` or `research`. Left open, as the app leaves it: an unknown mode is ignored rather than refused. |
1967
+ | `body.page` | `string \| null` | no | Where the user is in your product, so 'this' and 'here' resolve. |
1968
+ | `body.session_id` | `string (uuid) \| null` | no | Continue this session. Omit to start a new one; the answer carries its `session_id`. |
1969
+ | `body.subject_account_id` | `string \| null` | no | Bind a NEW session to this account. Ignored for an existing one. |
1970
+ | `body.subject_campaign_id` | `string \| null` | no | Bind a NEW session to this campaign. Ignored for an existing one. |
1971
+
1972
+ **Returns** `ApiResponse_AgentConversationPayload_`: the envelope `{ data: AgentConversationPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1973
+
1974
+ Other envelope fields: `pagination` (PaginationMeta).
1975
+
1976
+ **Example**
1977
+
1978
+ ```ts
1979
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
1980
+ const result = await g8.api.agents.postAgentChat({ body: {} });
1981
+ ```
1982
+
1983
+ ---
1984
+
1985
+ <a id="op-postagentonboardingcatchup"></a>
1986
+
1987
+ ### `g8.api.agents.postAgentOnboardingCatchup(input)`
1988
+
1989
+ **Post Agent Onboarding Catchup**
1990
+
1991
+ - HTTP: `POST /api/v1/agent/onboarding/catchup`
1992
+ - operationId: `post_agent_onboarding_catchup_agent_onboarding_catchup_post` (also callable as `g8.api.call("post_agent_onboarding_catchup_agent_onboarding_catchup_post", input)`)
1993
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
1994
+ - API-key scope: `workflows:write`
1995
+
1996
+ Post ONE batched summary of what finished while the customer was away.
1997
+
1998
+ IDEMPOTENT by watermark: a marker on the previous catch-up message is the
1999
+ high-water mark, so a repeat call posts nothing and comes back
2000
+ `posted: false`. Below the app's minimum card count it is also a no-op - a
2001
+ single completed card does not need a summary.
2002
+
2003
+ **Input**
2004
+
2005
+ | Field | Type | Required | Description |
2006
+ |---|---|---|---|
2007
+ | `body` | `OnboardingCatchupRequest` | yes | Request body; fields below. |
2008
+
2009
+ Body fields (`OnboardingCatchupRequest`):
2010
+
2011
+ | Field | Type | Required | Description |
2012
+ |---|---|---|---|
2013
+ | `body.session_id` | `string` | yes | The proactive-setup canvas session id. |
2014
+
2015
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2016
+
2017
+ Other envelope fields: `pagination` (PaginationMeta).
2018
+
2019
+ **Example**
2020
+
2021
+ ```ts
2022
+ const result = await g8.api.agents.postAgentOnboardingCatchup({ body: { session_id: "id" } });
2023
+ ```
2024
+
2025
+ ---
2026
+
2027
+ <a id="op-postagentsessionmessage"></a>
2028
+
2029
+ ### `g8.api.agents.postAgentSessionMessage(input)`
2030
+
2031
+ **Post Agent Session Message**
2032
+
2033
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/messages`
2034
+ - operationId: `post_agent_session_message_agent_sessions__session_id__messages_post` (also callable as `g8.api.call("post_agent_session_message_agent_sessions__session_id__messages_post", input)`)
2035
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2036
+ - API-key scope: `workflows:write`
2037
+
2038
+ Append a message to an agent session WITHOUT asking for a reply.
2039
+
2040
+ No model runs and nothing is charged: the message is stored in the
2041
+ session's log and shown to anyone watching it. Use `POST /agent/chat` to
2042
+ get an answer. A session you cannot see is a 404.
2043
+
2044
+ **Input**
2045
+
2046
+ | Field | Type | Required | Description |
2047
+ |---|---|---|---|
2048
+ | `path.session_id` | `string` | yes | Session id (UUID). |
2049
+ | `body` | `AgentSessionMessageRequest` | yes | Request body; fields below. |
2050
+
2051
+ Body fields (`AgentSessionMessageRequest`):
2052
+
2053
+ | Field | Type | Required | Description |
2054
+ |---|---|---|---|
2055
+ | `body.content` | `string` | yes | The message text. min length 1, max length 10000 |
2056
+
2057
+ **Returns** `ApiResponse_AgentConversationPayload_`: the envelope `{ data: AgentConversationPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2058
+
2059
+ Other envelope fields: `pagination` (PaginationMeta).
2060
+
2061
+ **Example**
2062
+
2063
+ ```ts
2064
+ const result = await g8.api.agents.postAgentSessionMessage({ path: { session_id: "id" }, body: { content: "example" } });
2065
+ ```
2066
+
2067
+ ---
2068
+
2069
+ <a id="op-projectagentdiscovery"></a>
2070
+
2071
+ ### `g8.api.agents.projectAgentDiscovery(input?)`
2072
+
2073
+ **Project Agent Discovery**
2074
+
2075
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/project`
2076
+ - operationId: `project_agent_discovery_agent_onboarding_discovery_project_post` (also callable as `g8.api.call("project_agent_discovery_agent_onboarding_discovery_project_post", input)`)
2077
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2078
+ - API-key scope: `workflows:write`
2079
+
2080
+ Turn the interview into real objects: an ICP, a persona, AND A CAMPAIGN.
2081
+
2082
+ Takes no body. The campaign is the part that surprises people, so it is
2083
+ said plainly: this CREATES a campaign and provisions its Work channel. It
2084
+ does not SEND anything - the campaign sits there for a human to launch -
2085
+ which is why this is a `write` and not an `external` operation.
2086
+
2087
+ IDEMPOTENT: the projection is idempotent by object name, and the build is
2088
+ claim-fenced, so calling twice updates the same ICP and returns the same
2089
+ campaign rather than minting a second one.
2090
+
2091
+ PARTIAL SUCCESS IS A REAL OUTCOME. A refused build does not fail the
2092
+ projection, because the ICP and persona are committed by the time the build
2093
+ runs and reporting the whole call as failed would send someone to re-run a
2094
+ projection that worked. Read `campaign.ok` in the body; a blocked build
2095
+ names what is still open rather than counting it.
2096
+
2097
+ **Input**: none.
2098
+
2099
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2100
+
2101
+ Other envelope fields: `pagination` (PaginationMeta).
2102
+
2103
+ **Example**
2104
+
2105
+ ```ts
2106
+ const result = await g8.api.agents.projectAgentDiscovery();
2107
+ ```
2108
+
2109
+ ---
2110
+
2111
+ <a id="op-putagentoperatingmodel"></a>
2112
+
2113
+ ### `g8.api.agents.putAgentOperatingModel(input)`
2114
+
2115
+ **Put Agent Operating Model**
2116
+
2117
+ - HTTP: `PUT /api/v1/agent/operators/operating-model`
2118
+ - operationId: `put_agent_operating_model_agent_operators_operating_model_put` (also callable as `g8.api.call("put_agent_operating_model_agent_operators_operating_model_put", input)`)
2119
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2120
+ - API-key scope: `workflows:write`
2121
+
2122
+ Replace the organisation's operating-model override. PUT SEMANTICS.
2123
+
2124
+ The whole document is replaced: a key absent from `override` is REMOVED,
2125
+ not left alone, and an empty object resets the org to graph8's defaults.
2126
+ That is the app's behaviour and this does not soften it - a partial-update
2127
+ spelling here would make the same body mean two different things on two
2128
+ surfaces.
2129
+
2130
+ This is a policy document, not a switch, which is why it is tiered `write`
2131
+ while `/enabled` is not: it describes the org, and an operator has to be
2132
+ turned on separately before anything reads it unattended.
2133
+
2134
+ **Input**
2135
+
2136
+ | Field | Type | Required | Description |
2137
+ |---|---|---|---|
2138
+ | `body` | `OperatingModelRequest` | yes | Request body; fields below. |
2139
+
2140
+ Body fields (`OperatingModelRequest`):
2141
+
2142
+ | Field | Type | Required | Description |
2143
+ |---|---|---|---|
2144
+ | `body.override` | `Record<string, unknown>` | yes | The organisation's operating-model override, REPLACED WHOLE. This is a PUT: keys absent from the body are removed, not left alone. Read `GET /agent/operators/operating-model` first and send it back modified. |
2145
+
2146
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2147
+
2148
+ Other envelope fields: `pagination` (PaginationMeta).
2149
+
2150
+ **Example**
2151
+
2152
+ ```ts
2153
+ const result = await g8.api.agents.putAgentOperatingModel({ body: { override: {} } });
2154
+ ```
2155
+
2156
+ ---
2157
+
2158
+ <a id="op-quoteagentsessionvoice"></a>
2159
+
2160
+ ### `g8.api.agents.quoteAgentSessionVoice(input)`
2161
+
2162
+ **Quote Agent Session Voice**
2163
+
2164
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/voice/quote`
2165
+ - operationId: `quote_agent_session_voice_agent_sessions__session_id__voice_quote_post` (also callable as `g8.api.call("quote_agent_session_voice_agent_sessions__session_id__voice_quote_post", input)`)
2166
+ - Tier: `read`: reads data; safe to call and to retry
2167
+ - API-key scope: `workflows:read`
2168
+
2169
+ What a voice session WOULD cost. Charges nothing.
2170
+
2171
+ A POST only because the ceilings are a body. It returns a credit figure and
2172
+ a `rate_version`, and that version is the point: hand it straight to
2173
+ `POST /agent/sessions/{session_id}/voice`, which refuses a stale one rather
2174
+ than starting at today's price against yesterday's quote.
2175
+
2176
+ Tiered as a READ for that reason. It is the only way to learn the price
2177
+ before committing to it, so a read-only key must be able to call it.
2178
+
2179
+ **Input**
2180
+
2181
+ | Field | Type | Required | Description |
2182
+ |---|---|---|---|
2183
+ | `path.session_id` | `string` | yes | Session id (UUID). |
2184
+ | `body` | `VoiceQuoteRequest` | yes | Request body; fields below. |
2185
+
2186
+ Body fields (`VoiceQuoteRequest`):
2187
+
2188
+ | Field | Type | Required | Description |
2189
+ |---|---|---|---|
2190
+ | `body.voice_id` | `string (uuid)` | yes | Which voice to price. |
2191
+ | `body.max_input_seconds` | `integer` | no | Ceiling on spoken input to price for. default `600`, min 1, max 1200 |
2192
+ | `body.max_output_characters` | `integer` | no | Ceiling on synthesised output to price for. default `5000`, min 0, max 60000 |
2193
+
2194
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2195
+
2196
+ Other envelope fields: `pagination` (PaginationMeta).
2197
+
2198
+ **Example**
2199
+
2200
+ ```ts
2201
+ const result = await g8.api.agents.quoteAgentSessionVoice({
2202
+ path: { session_id: "id" },
2203
+ body: { voice_id: "00000000-0000-0000-0000-000000000000" },
2204
+ });
2205
+ ```
2206
+
2207
+ ---
2208
+
2209
+ <a id="op-ratifyagentdiscovery"></a>
2210
+
2211
+ ### `g8.api.agents.ratifyAgentDiscovery(input)`
2212
+
2213
+ **Ratify Agent Discovery**
2214
+
2215
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/ratify`
2216
+ - operationId: `ratify_agent_discovery_agent_onboarding_discovery_ratify_post` (also callable as `g8.api.call("ratify_agent_discovery_agent_onboarding_discovery_ratify_post", input)`)
2217
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2218
+ - API-key scope: `workflows:write`
2219
+
2220
+ Correct what the agent inferred. The customer's word wins over the scrape.
2221
+
2222
+ `edits` overrides a value; `confirmed` accepts one as read. Both default to
2223
+ empty, so ratifying nothing is a legal no-op rather than a 422 - which is
2224
+ what makes the call safe to retry.
2225
+
2226
+ The response echoes PROGRESS, not the field list: `fields` comes back empty
2227
+ by design because the caller already holds it from `GET /discovery`.
2228
+
2229
+ **Input**
2230
+
2231
+ | Field | Type | Required | Description |
2232
+ |---|---|---|---|
2233
+ | `body` | `DiscoveryRatifyRequest` | yes | Request body; fields below. |
2234
+
2235
+ Body fields (`DiscoveryRatifyRequest`):
2236
+
2237
+ | Field | Type | Required | Description |
2238
+ |---|---|---|---|
2239
+ | `body.confirmed` | `Array<string>` | no | Field keys the customer accepts as the agent inferred them. |
2240
+ | `body.edits` | `Record<string, unknown>` | no | Field key -> corrected value, for answers the agent got wrong. |
2241
+ | `body.session_id` | `string \| null` | no | Canvas session to report the ratification into. |
2242
+
2243
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2244
+
2245
+ Other envelope fields: `pagination` (PaginationMeta).
2246
+
2247
+ **Example**
2248
+
2249
+ ```ts
2250
+ const result = await g8.api.agents.ratifyAgentDiscovery({ body: {} });
2251
+ ```
2252
+
2253
+ ---
2254
+
2255
+ <a id="op-renameagentsession"></a>
2256
+
2257
+ ### `g8.api.agents.renameAgentSession(input)`
2258
+
2259
+ **Rename Agent Session**
2260
+
2261
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/rename`
2262
+ - operationId: `rename_agent_session_agent_sessions__session_id__rename_post` (also callable as `g8.api.call("rename_agent_session_agent_sessions__session_id__rename_post", input)`)
2263
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2264
+ - API-key scope: `workflows:write`
2265
+
2266
+ Rename a session. Owner only.
2267
+
2268
+ **Input**
2269
+
2270
+ | Field | Type | Required | Description |
2271
+ |---|---|---|---|
2272
+ | `path.session_id` | `string` | yes | Session id. |
2273
+ | `body` | `AgentSessionRenameRequest` | yes | Request body; fields below. |
2274
+
2275
+ Body fields (`AgentSessionRenameRequest`):
2276
+
2277
+ | Field | Type | Required | Description |
2278
+ |---|---|---|---|
2279
+ | `body.title` | `string` | yes | New title. min length 1 |
2280
+
2281
+ **Returns** `ApiResponse_AgentSession_`: the envelope `{ data: AgentSession, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2282
+
2283
+ Other envelope fields: `pagination` (PaginationMeta).
2284
+
2285
+ `AgentSession` fields:
2286
+
2287
+ | Field | Type | Required | Description |
2288
+ |---|---|---|---|
2289
+ | `created_at` | `string (date-time) \| null` | no | |
2290
+ | `id` | `string \| null` | no | |
2291
+ | `is_pinned` | `boolean \| null` | no | |
2292
+ | `mode` | `string \| null` | no | Session mode, e.g. `general`. |
2293
+ | `title` | `string \| null` | no | |
2294
+ | `updated_at` | `string (date-time) \| null` | no | |
2295
+
2296
+ **Example**
2297
+
2298
+ ```ts
2299
+ const result = await g8.api.agents.renameAgentSession({ path: { session_id: "id" }, body: { title: "Example" } });
2300
+ ```
2301
+
2302
+ ---
2303
+
2304
+ <a id="op-requestagentapprovalchanges"></a>
2305
+
2306
+ ### `g8.api.agents.requestAgentApprovalChanges(input)`
2307
+
2308
+ **Request Agent Approval Changes**
2309
+
2310
+ - HTTP: `POST /api/v1/agent/approvals/{approval_id}/request-changes`
2311
+ - operationId: `request_agent_approval_changes_agent_approvals__approval_id__request_changes_post` (also callable as `g8.api.call("request_agent_approval_changes_agent_approvals__approval_id__request_changes_post", input)`)
2312
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2313
+ - API-key scope: `workflows:write`
2314
+
2315
+ Send the agent back to replan, with a reason. THIS REJECTS THE PROPOSAL.
2316
+
2317
+ Not a "hold" and not a comment: the current proposal is rejected
2318
+ ATOMICALLY, and the feedback is stored alongside so the next plan is
2319
+ informed rather than identical. If you want the plan to proceed, use
2320
+ `POST /agent/approvals/{approval_id}/decide`.
2321
+
2322
+ It FAILS CLOSED on both halves. A deployment that does not have this route
2323
+ 404s rather than doing something approximate, and a worker that does not
2324
+ understand the stored feedback still reads the row as a rejection. There is
2325
+ no version of "older software saw this as approval".
2326
+
2327
+ Once decided, an approval cannot be decided again - the winner is settled
2328
+ server-side, so a second call gets 409 rather than overwriting.
2329
+
2330
+ **Input**
2331
+
2332
+ | Field | Type | Required | Description |
2333
+ |---|---|---|---|
2334
+ | `path.approval_id` | `string` | yes | Approval id (UUID). |
2335
+ | `body` | `ApprovalChangeRequest` | yes | Request body; fields below. |
2336
+
2337
+ Body fields (`ApprovalChangeRequest`):
2338
+
2339
+ | Field | Type | Required | Description |
2340
+ |---|---|---|---|
2341
+ | `body.feedback` | `string` | yes | Why the proposal is wrong, and what to do instead. REQUIRED and not decoration: it is stored on the rejection and is what the next plan is built from, so an empty-handed rejection produces the same plan again. |
2342
+
2343
+ **Returns** `ApiResponse_AgentBenchPayload_`: the envelope `{ data: AgentBenchPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2344
+
2345
+ Other envelope fields: `pagination` (PaginationMeta).
2346
+
2347
+ **Example**
2348
+
2349
+ ```ts
2350
+ const result = await g8.api.agents.requestAgentApprovalChanges({ path: { approval_id: "id" }, body: { feedback: "example" } });
2351
+ ```
2352
+
2353
+ ---
2354
+
2355
+ <a id="op-searchagentmentions"></a>
2356
+
2357
+ ### `g8.api.agents.searchAgentMentions(input)`
2358
+
2359
+ **Search Agent Mentions**
2360
+
2361
+ - HTTP: `POST /api/v1/agent/mention-search`
2362
+ - operationId: `search_agent_mentions_agent_mention_search_post` (also callable as `g8.api.call("search_agent_mentions_agent_mention_search_post", input)`)
2363
+ - Tier: `read`: reads data; safe to call and to retry
2364
+ - API-key scope: `workflows:read`
2365
+
2366
+ Resolve an @-mention: what can be referred to in a message to the agent.
2367
+
2368
+ Searches people, campaigns, accounts and documents in one call and returns
2369
+ them with a `category`, so a composer can render one picker instead of four.
2370
+ A read - it finds things, it changes nothing, and it starts no agent.
2371
+
2372
+ A POST only because the filter set is a body. `query` defaults to empty,
2373
+ which returns the default suggestions rather than nothing, matching the app.
2374
+
2375
+ The app publishes the SAME search at `/v1/copilot/mention-search` from a
2376
+ second router that lazily imports this one's helpers. One is enough on a
2377
+ versioned contract, and this is the one under `/agent`, beside the sessions
2378
+ the mentions are typed into.
2379
+
2380
+ **Input**
2381
+
2382
+ | Field | Type | Required | Description |
2383
+ |---|---|---|---|
2384
+ | `body` | `MentionSearchRequest` | yes | Request body; fields below. |
2385
+
2386
+ Body fields (`MentionSearchRequest`):
2387
+
2388
+ | Field | Type | Required | Description |
2389
+ |---|---|---|---|
2390
+ | `body.campaign_id` | `string \| null` | no | Bias results toward one campaign's people and documents. |
2391
+ | `body.mode` | `string \| null` | no | Which mention vocabulary to search. Left open rather than closed to a Literal: the app treats an unrecognised mode as 'no filter' instead of an error, so closing it here would turn a working call into a 422. |
2392
+ | `body.query` | `string` | no | Substring to match. Empty - the default - returns the default suggestions rather than nothing, matching the app's own composer. default `""` |
2393
+
2394
+ **Returns** `ApiResponse_AgentBenchListPayload_`: the envelope `{ data: AgentBenchListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2395
+
2396
+ Other envelope fields: `pagination` (PaginationMeta).
2397
+
2398
+ `AgentBenchListPayload` fields:
2399
+
2400
+ | Field | Type | Required | Description |
2401
+ |---|---|---|---|
2402
+ | `items` | `Array<unknown>` | no | |
2403
+
2404
+ **Example**
2405
+
2406
+ ```ts
2407
+ const result = await g8.api.agents.searchAgentMentions({ body: {} });
2408
+ ```
2409
+
2410
+ ---
2411
+
2412
+ <a id="op-setagentoperatorenabled"></a>
2413
+
2414
+ ### `g8.api.agents.setAgentOperatorEnabled(input)`
2415
+
2416
+ **Set Agent Operator Enabled**
2417
+
2418
+ - HTTP: `PUT /api/v1/agent/operators/{operator}/enabled`
2419
+ - operationId: `set_agent_operator_enabled_agent_operators__operator__enabled_put` (also callable as `g8.api.call("set_agent_operator_enabled_agent_operators__operator__enabled_put", input)`)
2420
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
2421
+ - API-key scope: `workflows:run`
2422
+
2423
+ Switch this operator on or off for the organisation.
2424
+
2425
+ TURNING IT ON STARTS UNATTENDED WORK. The operator's monitors begin running
2426
+ on their own schedule, without anyone asking, and they keep running until
2427
+ this is set back to false. That is why this needs the `run` grant rather
2428
+ than plain write: "let something act in my org when I am not watching" is
2429
+ not the same permission as "edit a record".
2430
+
2431
+ What it is allowed to DO once it is on is a separate control - see
2432
+ `PUT /agent/operators/{operator}/skills/{skill_key}`. Enabling an operator
2433
+ whose skills are all `OFF` starts nothing.
2434
+
2435
+ `enabled` is explicit rather than a toggle, so a retried request is
2436
+ idempotent instead of switching it back off.
2437
+
2438
+ **Input**
2439
+
2440
+ | Field | Type | Required | Description |
2441
+ |---|---|---|---|
2442
+ | `path.operator` | `string` | yes | |
2443
+ | `body` | `OperatorEnabledRequest` | yes | Request body; fields below. |
2444
+
2445
+ Body fields (`OperatorEnabledRequest`):
2446
+
2447
+ | Field | Type | Required | Description |
2448
+ |---|---|---|---|
2449
+ | `body.enabled` | `boolean` | yes | Whether this operator runs for the organisation. TURNING IT ON STARTS UNATTENDED WORK: the operator's monitors run on their own schedule from then on, without a person asking. Explicit rather than a toggle, so a retried request is idempotent instead of flipping the state back. |
2450
+
2451
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2452
+
2453
+ Other envelope fields: `pagination` (PaginationMeta).
2454
+
2455
+ **Example**
2456
+
2457
+ ```ts
2458
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
2459
+ const result = await g8.api.agents.setAgentOperatorEnabled({ path: { operator: "example" }, body: { enabled: true } });
2460
+ ```
2461
+
2462
+ ---
2463
+
2464
+ <a id="op-setagentoperatorrecipient"></a>
2465
+
2466
+ ### `g8.api.agents.setAgentOperatorRecipient(input)`
2467
+
2468
+ **Set Agent Operator Recipient**
2469
+
2470
+ - HTTP: `PUT /api/v1/agent/operators/{operator}/recipient`
2471
+ - operationId: `set_agent_operator_recipient_agent_operators__operator__recipient_put` (also callable as `g8.api.call("set_agent_operator_recipient_agent_operators__operator__recipient_put", input)`)
2472
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2473
+ - API-key scope: `workflows:write`
2474
+
2475
+ Name the person who owns this operator's approvals.
2476
+
2477
+ REPLACES the current recipient - there is one per operator, not a list.
2478
+ Worth setting before enabling anything at `PROPOSE`, because an approval
2479
+ task with no owner is an operator that has stopped.
2480
+
2481
+ **Input**
2482
+
2483
+ | Field | Type | Required | Description |
2484
+ |---|---|---|---|
2485
+ | `path.operator` | `string` | yes | |
2486
+ | `body` | `OperatorRecipientRequest` | yes | Request body; fields below. |
2487
+
2488
+ Body fields (`OperatorRecipientRequest`):
2489
+
2490
+ | Field | Type | Required | Description |
2491
+ |---|---|---|---|
2492
+ | `body.user_id` | `string` | yes | The person who receives this operator's alerts and owns its approval tasks. One recipient per operator: setting it REPLACES whoever was there. |
2493
+
2494
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2495
+
2496
+ Other envelope fields: `pagination` (PaginationMeta).
2497
+
2498
+ **Example**
2499
+
2500
+ ```ts
2501
+ const result = await g8.api.agents.setAgentOperatorRecipient({ path: { operator: "example" }, body: { user_id: "id" } });
2502
+ ```
2503
+
2504
+ ---
2505
+
2506
+ <a id="op-setagentoperatortrustdial"></a>
2507
+
2508
+ ### `g8.api.agents.setAgentOperatorTrustDial(input)`
2509
+
2510
+ **Set Agent Operator Trust Dial**
2511
+
2512
+ - HTTP: `PUT /api/v1/agent/operators/{operator}/skills/{skill_key}`
2513
+ - operationId: `set_agent_operator_trust_dial_agent_operators__operator__skills__skill_key__put` (also callable as `g8.api.call("set_agent_operator_trust_dial_agent_operators__operator__skills__skill_key__put", input)`)
2514
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
2515
+ - API-key scope: `workflows:run`
2516
+
2517
+ Set how far ONE skill may go on its own. THIS GOVERNS UNATTENDED ACTION.
2518
+
2519
+ The trust dial is the control that decides whether a finding stays a
2520
+ finding, becomes an approval a person decides, or is simply DONE. Raising
2521
+ it is the single most consequential write on this surface, which is why it
2522
+ takes the `run` grant rather than plain write.
2523
+
2524
+ THE DIAL IS A CEILING REQUEST, NOT A SETTING. The effective autonomy is the
2525
+ minimum of this value, the skill's graph8-managed risk cap and the platform
2526
+ ceiling, so a skill capped at `PROPOSE` stays at `PROPOSE` no matter what
2527
+ is sent. Read the response rather than assuming the write took literally.
2528
+
2529
+ Read `GET /agent/operators/{operator}/scorecard` first. A dial raised on a
2530
+ skill that has been wrong is how unattended work becomes unattended damage.
2531
+
2532
+ **Input**
2533
+
2534
+ | Field | Type | Required | Description |
2535
+ |---|---|---|---|
2536
+ | `path.operator` | `string` | yes | |
2537
+ | `path.skill_key` | `string` | yes | Skill key from `GET /agent/operators/{operator}/skills`. |
2538
+ | `body` | `OperatorTrustDialRequest` | yes | Request body; fields below. |
2539
+
2540
+ Body fields (`OperatorTrustDialRequest`):
2541
+
2542
+ | Field | Type | Required | Description |
2543
+ |---|---|---|---|
2544
+ | `body.autonomy` | `"OFF" \| "DETECT" \| "PROPOSE" \| "AUTO"` | yes | How far this skill may go on its own. `OFF` - do not run it. `DETECT` - look, and record what it finds. `PROPOSE` - look, and raise an approval task a person decides. `AUTO` - act and log, with no human in the loop. THIS IS A REQUEST, NOT A GUARANTEE: the effective level is the MINIMUM of this dial, the skill's own graph8-managed risk cap and the platform ceiling, so a skill capped at `PROPOSE` s… |
2545
+
2546
+ **Returns** `ApiResponse_OperatorPayload_`: the envelope `{ data: OperatorPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2547
+
2548
+ Other envelope fields: `pagination` (PaginationMeta).
2549
+
2550
+ **Example**
2551
+
2552
+ ```ts
2553
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
2554
+ const result = await g8.api.agents.setAgentOperatorTrustDial({
2555
+ path: { operator: "example", skill_key: "example" },
2556
+ body: { autonomy: "OFF" },
2557
+ });
2558
+ ```
2559
+
2560
+ ---
2561
+
2562
+ <a id="op-setupagentdiscoverysignals"></a>
2563
+
2564
+ ### `g8.api.agents.setupAgentDiscoverySignals(input?)`
2565
+
2566
+ **Setup Agent Discovery Signals**
2567
+
2568
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/signals`
2569
+ - operationId: `setup_agent_discovery_signals_agent_onboarding_discovery_signals_post` (also callable as `g8.api.call("setup_agent_discovery_signals_agent_onboarding_discovery_signals_post", input)`)
2570
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2571
+ - API-key scope: `workflows:write`
2572
+
2573
+ Create the global custom column behind each observable trigger.
2574
+
2575
+ Takes no body. A signal is defined ONCE for the account and every list
2576
+ patches the same column - that is what makes cross-campaign analysis
2577
+ possible at all, and why the column is global rather than list-scoped.
2578
+
2579
+ Triggers nothing can observe come back as `research` rather than being
2580
+ quietly created: they are real and useful, but they belong in the copy
2581
+ rather than in the targeting. Promising to watch something nothing watches
2582
+ is a program that never fires and a failure nobody can see.
2583
+
2584
+ **Input**: none.
2585
+
2586
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2587
+
2588
+ Other envelope fields: `pagination` (PaginationMeta).
2589
+
2590
+ **Example**
2591
+
2592
+ ```ts
2593
+ const result = await g8.api.agents.setupAgentDiscoverySignals();
2594
+ ```
2595
+
2596
+ ---
2597
+
2598
+ <a id="op-startagentsessionvoice"></a>
2599
+
2600
+ ### `g8.api.agents.startAgentSessionVoice(input)`
2601
+
2602
+ **Start Agent Session Voice**
2603
+
2604
+ - HTTP: `POST /api/v1/agent/sessions/{session_id}/voice`
2605
+ - operationId: `start_agent_session_voice_agent_sessions__session_id__voice_post` (also callable as `g8.api.call("start_agent_session_voice_agent_sessions__session_id__voice_post", input)`)
2606
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
2607
+ - API-key scope: `workflows:run`
2608
+
2609
+ Start speaking with the agent. THIS SPENDS CREDITS AS IT RUNS.
2610
+
2611
+ A live metered session: it begins charging when it connects and keeps
2612
+ charging until it is ended or hits `max_credits`. Quote it first.
2613
+
2614
+ `max_credits` is a HARD CEILING and is required - there is no default,
2615
+ because choosing one would mean this contract picking a spending limit on
2616
+ the customer's behalf. `rate_version` must be the one the quote returned.
2617
+
2618
+ End it with `DELETE /agent/sessions/{session_id}/voice/{voice_id}`. A
2619
+ session left open keeps costing money.
2620
+
2621
+ **Input**
2622
+
2623
+ | Field | Type | Required | Description |
2624
+ |---|---|---|---|
2625
+ | `path.session_id` | `string` | yes | Session id (UUID). |
2626
+ | `body` | `VoiceSessionRequest` | yes | Request body; fields below. |
2627
+
2628
+ Body fields (`VoiceSessionRequest`):
2629
+
2630
+ | Field | Type | Required | Description |
2631
+ |---|---|---|---|
2632
+ | `body.max_credits` | `integer` | yes | HARD CEILING on what this session may spend. Required, with no default: an uncapped voice session is an open-ended charge, and a contract that defaults it would be choosing a spending limit on the customer's behalf. min 1, max 9223372036854776000 |
2633
+ | `body.rate_version` | `string` | yes | The rate version the quote was issued against, from `POST /agent/sessions/{session_id}/voice/quote`. The server refuses a stale one rather than charging today's price for yesterday's quote. min length 1, max length 128 |
2634
+ | `body.voice_id` | `string (uuid)` | yes | Which voice to speak with. |
2635
+
2636
+ **Returns** `ApiResponse_AgentSessionStatePayload_`: the envelope `{ data: AgentSessionStatePayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2637
+
2638
+ Other envelope fields: `pagination` (PaginationMeta).
2639
+
2640
+ **Example**
2641
+
2642
+ ```ts
2643
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
2644
+ const result = await g8.api.agents.startAgentSessionVoice({
2645
+ path: { session_id: "id" },
2646
+ body: {
2647
+ max_credits: 1,
2648
+ rate_version: "example",
2649
+ voice_id: "00000000-0000-0000-0000-000000000000",
2650
+ },
2651
+ });
2652
+ ```
2653
+
2654
+ ---
2655
+
2656
+ <a id="op-steeragentworkitem"></a>
2657
+
2658
+ ### `g8.api.agents.steerAgentWorkItem(input)`
2659
+
2660
+ **Steer Agent Work Item**
2661
+
2662
+ - HTTP: `POST /api/v1/agent/work-items/{work_item_id}/steer`
2663
+ - operationId: `steer_agent_work_item_agent_work_items__work_item_id__steer_post` (also callable as `g8.api.call("steer_agent_work_item_agent_work_items__work_item_id__steer_post", input)`)
2664
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2665
+ - API-key scope: `workflows:write`
2666
+
2667
+ Redirect a RUNNING work item at its next safe step boundary.
2668
+
2669
+ Not mid-step - that is what makes steering safe at all. The instruction is
2670
+ picked up when the agent reaches a boundary, so a steer sent during a long
2671
+ tool call lands afterwards rather than corrupting it.
2672
+
2673
+ SAFE TO RETRY: `client_turn_id` is a caller-generated idempotency key, and
2674
+ the same id twice comes back `status: "duplicate"` rather than queueing a
2675
+ second instruction into a running agent. Check that field before assuming
2676
+ a retry did something.
2677
+
2678
+ **Input**
2679
+
2680
+ | Field | Type | Required | Description |
2681
+ |---|---|---|---|
2682
+ | `path.work_item_id` | `string` | yes | Work item id (UUID). |
2683
+ | `body` | `AgentWorkItemSteerRequest` | yes | Request body; fields below. |
2684
+
2685
+ Body fields (`AgentWorkItemSteerRequest`):
2686
+
2687
+ | Field | Type | Required | Description |
2688
+ |---|---|---|---|
2689
+ | `body.client_turn_id` | `string (uuid)` | yes | Caller-generated idempotency key. REQUIRED, and the reason steering is safe to retry: the same id twice comes back `duplicate` rather than queueing a second instruction into a running agent. |
2690
+ | `body.instruction` | `string` | yes | What to do differently. Applied at the next safe step boundary, not mid-step. min length 1, max length 2000 |
2691
+
2692
+ **Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2693
+
2694
+ Other envelope fields: `pagination` (PaginationMeta).
2695
+
2696
+ **Example**
2697
+
2698
+ ```ts
2699
+ const result = await g8.api.agents.steerAgentWorkItem({
2700
+ path: { work_item_id: "id" },
2701
+ body: {
2702
+ client_turn_id: "00000000-0000-0000-0000-000000000000",
2703
+ instruction: "example",
2704
+ },
2705
+ });
2706
+ ```
2707
+
2708
+ ---
2709
+
2710
+ <a id="op-submitagentdomainresponse"></a>
2711
+
2712
+ ### `g8.api.agents.submitAgentDomainResponse(input)`
2713
+
2714
+ **Submit Agent Domain Response**
2715
+
2716
+ - HTTP: `POST /api/v1/agent/onboarding/domain-response`
2717
+ - operationId: `submit_agent_domain_response_agent_onboarding_domain_response_post` (also callable as `g8.api.call("submit_agent_domain_response_agent_onboarding_domain_response_post", input)`)
2718
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2719
+ - API-key scope: `workflows:write`
2720
+
2721
+ Answer the agent's "is this your company domain?" card.
2722
+
2723
+ `domain` is REQUIRED when `confirmed` is false and ignored when it is true.
2724
+ The app enforces that with a 422 of its own, and this mirrors the model
2725
+ rather than the check, so a missing domain is refused by the handler with
2726
+ its own message rather than by a copy here that could drift.
2727
+
2728
+ A corrected domain is persisted immediately, so a late edit is not orphaned
2729
+ once the polling activity has already exited.
2730
+
2731
+ **Input**
2732
+
2733
+ | Field | Type | Required | Description |
2734
+ |---|---|---|---|
2735
+ | `body` | `DomainConfirmationRequest` | yes | Request body; fields below. |
2736
+
2737
+ Body fields (`DomainConfirmationRequest`):
2738
+
2739
+ | Field | Type | Required | Description |
2740
+ |---|---|---|---|
2741
+ | `body.card_id` | `string` | yes | The `domain_confirmation` card id. |
2742
+ | `body.confirmed` | `boolean` | yes | True = the pre-filled domain is correct as it stands. |
2743
+ | `body.session_id` | `string` | yes | The proactive-setup canvas session id. |
2744
+ | `body.domain` | `string \| null` | no | The corrected company domain. REQUIRED when `confirmed` is false; ignored when it is true. |
2745
+
2746
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2747
+
2748
+ Other envelope fields: `pagination` (PaginationMeta).
2749
+
2750
+ **Example**
2751
+
2752
+ ```ts
2753
+ const result = await g8.api.agents.submitAgentDomainResponse({ body: { card_id: "id", confirmed: true, session_id: "id" } });
2754
+ ```
2755
+
2756
+ ---
2757
+
2758
+ <a id="op-takeagentdiscoveryturn"></a>
2759
+
2760
+ ### `g8.api.agents.takeAgentDiscoveryTurn(input)`
2761
+
2762
+ **Take Agent Discovery Turn**
2763
+
2764
+ - HTTP: `POST /api/v1/agent/onboarding/discovery/turn`
2765
+ - operationId: `take_agent_discovery_turn_agent_onboarding_discovery_turn_post` (also callable as `g8.api.call("take_agent_discovery_turn_agent_onboarding_discovery_turn_post", input)`)
2766
+ - Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
2767
+ - API-key scope: `workflows:run`
2768
+
2769
+ One conversational turn of the kickoff. THIS ONE COSTS MONEY.
2770
+
2771
+ The only route on this surface that makes an LLM call, which is why it is
2772
+ tiered `billable` and why the app rate-limits it at 20 requests a minute
2773
+ per organisation - far above a human conversation, far below anything that
2774
+ shows up on a bill. Over that, the app answers 429 with `Retry-After`.
2775
+
2776
+ The model replies AND states what it learned in one forced tool call, so a
2777
+ message that answers four questions records four fields. Everything it
2778
+ claims is validated before it is written: a key outside the framework is
2779
+ dropped, and a `green` with no supporting quote is DOWNGRADED to `amber`
2780
+ rather than trusted.
2781
+
2782
+ The turn writes only to the discovery record. It provisions nothing, calls
2783
+ no tools, and sends nothing.
2784
+
2785
+ There is no `history` parameter and that is deliberate - see the module
2786
+ docstring.
2787
+
2788
+ **Input**
2789
+
2790
+ | Field | Type | Required | Description |
2791
+ |---|---|---|---|
2792
+ | `body` | `DiscoveryTurnRequest` | yes | Request body; fields below. |
2793
+
2794
+ Body fields (`DiscoveryTurnRequest`):
2795
+
2796
+ | Field | Type | Required | Description |
2797
+ |---|---|---|---|
2798
+ | `body.message` | `string` | yes | min length 1, max length 8000 |
2799
+ | `body.session_id` | `string \| null` | no | Canvas session to report into. |
2800
+
2801
+ **Returns** `ApiResponse_OnboardingPayload_`: the envelope `{ data: OnboardingPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2802
+
2803
+ Other envelope fields: `pagination` (PaginationMeta).
2804
+
2805
+ **Example**
2806
+
2807
+ ```ts
2808
+ // billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
2809
+ const result = await g8.api.agents.takeAgentDiscoveryTurn({ body: { message: "example" } });
2810
+ ```
2811
+
2812
+ ---
2813
+
2814
+ <a id="op-updateagentsession"></a>
2815
+
2816
+ ### `g8.api.agents.updateAgentSession(input)`
2817
+
2818
+ **Update Agent Session**
2819
+
2820
+ - HTTP: `PATCH /api/v1/agent/sessions/{session_id}`
2821
+ - operationId: `update_agent_session_agent_sessions__session_id__patch` (also callable as `g8.api.call("update_agent_session_agent_sessions__session_id__patch", input)`)
2822
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
2823
+ - API-key scope: `workflows:write`
2824
+
2825
+ Append messages or change the title. Omitted fields are untouched.
2826
+
2827
+ **Input**
2828
+
2829
+ | Field | Type | Required | Description |
2830
+ |---|---|---|---|
2831
+ | `path.session_id` | `string` | yes | Session id. |
2832
+ | `body` | `AgentSessionUpdateRequest` | yes | Request body; fields below. |
2833
+
2834
+ Body fields (`AgentSessionUpdateRequest`):
2835
+
2836
+ | Field | Type | Required | Description |
2837
+ |---|---|---|---|
2838
+ | `body.messages` | `Array<Record<string, unknown>> \| null` | no | |
2839
+ | `body.title` | `string \| null` | no | |
2840
+
2841
+ **Returns** `ApiResponse_AgentSession_`: the envelope `{ data: AgentSession, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2842
+
2843
+ Other envelope fields: `pagination` (PaginationMeta).
2844
+
2845
+ `AgentSession` fields:
2846
+
2847
+ | Field | Type | Required | Description |
2848
+ |---|---|---|---|
2849
+ | `created_at` | `string (date-time) \| null` | no | |
2850
+ | `id` | `string \| null` | no | |
2851
+ | `is_pinned` | `boolean \| null` | no | |
2852
+ | `mode` | `string \| null` | no | Session mode, e.g. `general`. |
2853
+ | `title` | `string \| null` | no | |
2854
+ | `updated_at` | `string (date-time) \| null` | no | |
2855
+
2856
+ **Example**
2857
+
2858
+ ```ts
2859
+ const result = await g8.api.agents.updateAgentSession({ path: { session_id: "id" }, body: {} });
2860
+ ```