@graph8/sdk 0.251.0 → 0.260.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.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +104 -7
- package/dist/index.d.ts +104 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +102 -7
- package/dist/react.d.ts +102 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1696 -0
- package/docs/api/deals.md +2432 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,1236 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.campaigns`: Campaigns
|
|
4
|
+
|
|
5
|
+
29 operations (13 read, 5 write, 3 destructive, 8 billable).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.campaigns.*` 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: [campaigns.d.ts](campaigns.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`acceptAudiencePipelineFilters`](#op-acceptaudiencepipelinefilters) | `POST /api/v1/campaigns/{campaign_id}/audience-pipeline/accept-filters` | billable | `campaigns:run` | Accept Audience Pipeline Filters |
|
|
26
|
+
| [`archiveCampaignIdea`](#op-archivecampaignidea) | `POST /api/v1/campaigns/ideas/{idea_id}/archive` | write | `campaigns:write` | Archive Campaign Idea |
|
|
27
|
+
| [`createManualCampaignIdea`](#op-createmanualcampaignidea) | `POST /api/v1/campaigns/ideas/manual` | write | `campaigns:write` | Create Manual Campaign Idea |
|
|
28
|
+
| [`deleteCampaign`](#op-deletecampaign) | `DELETE /api/v1/campaigns/{campaign_id}` | destructive | `campaigns:delete` | Delete Campaign |
|
|
29
|
+
| [`deleteCampaignIdea`](#op-deletecampaignidea) | `DELETE /api/v1/campaigns/ideas/{idea_id}` | destructive | `campaigns:delete` | Delete Campaign Idea |
|
|
30
|
+
| [`generateCampaignIdeas`](#op-generatecampaignideas) | `POST /api/v1/campaigns/generate-ideas` | billable | `campaigns:run` | Generate Campaign Ideas |
|
|
31
|
+
| [`generateCampaignIdeasAsync`](#op-generatecampaignideasasync) | `POST /api/v1/campaigns/generate-ideas-async` | billable | `campaigns:run` | Generate Campaign Ideas Async |
|
|
32
|
+
| [`generateCampaignStepContent`](#op-generatecampaignstepcontent) | `POST /api/v1/campaigns/{campaign_id}/sequence/steps/{step_id}/generate` | billable | `campaigns:run` | Generate Campaign Step Content |
|
|
33
|
+
| [`getAudiencePipelineStatus`](#op-getaudiencepipelinestatus) | `GET /api/v1/campaigns/{campaign_id}/audience-pipeline/status` | read | `campaigns:read` | Get Audience Pipeline Status |
|
|
34
|
+
| [`getAudiencePipelineSuggestedFilters`](#op-getaudiencepipelinesuggestedfilters) | `GET /api/v1/campaigns/{campaign_id}/audience-pipeline/suggested-filters` | read | `campaigns:read` | Get Audience Pipeline Suggested Filters |
|
|
35
|
+
| [`getCampaignDashboard`](#op-getcampaigndashboard) | `GET /api/v1/campaigns/{campaign_id}/dashboard` | billable | `campaigns:run` | Get Campaign Dashboard |
|
|
36
|
+
| [`getCampaignGeneratedFile`](#op-getcampaigngeneratedfile) | `GET /api/v1/campaigns/{campaign_id}/files/{file_type}` | read | `campaigns:read` | Get Campaign Generated File |
|
|
37
|
+
| [`getCampaignGenerationOptions`](#op-getcampaigngenerationoptions) | `GET /api/v1/campaigns/generation-options` | read | `campaigns:read` | Get Campaign Generation Options |
|
|
38
|
+
| [`getCampaignGenerationStatus`](#op-getcampaigngenerationstatus) | `GET /api/v1/campaigns/{campaign_id}/status` | read | `campaigns:read` | Get Campaign Generation Status |
|
|
39
|
+
| [`getCampaignIdeasTaskStatus`](#op-getcampaignideastaskstatus) | `GET /api/v1/campaigns/ideas/status/{task_id}` | read | `campaigns:read` | Get Campaign Ideas Task Status |
|
|
40
|
+
| [`linkLandingPageToCampaign`](#op-linklandingpagetocampaign) | `POST /api/v1/campaigns/{campaign_id}/landing-pages` | write | `campaigns:write` | Link Landing Page To Campaign |
|
|
41
|
+
| [`listCampaignAudienceListOptions`](#op-listcampaignaudiencelistoptions) | `GET /api/v1/campaigns/audience-lists/options` | read | `campaigns:read` | List Campaign Audience List Options |
|
|
42
|
+
| [`listCampaignGeneratedFiles`](#op-listcampaigngeneratedfiles) | `GET /api/v1/campaigns/{campaign_id}/files` | read | `campaigns:read` | List Campaign Generated Files |
|
|
43
|
+
| [`listCampaignLandingPages`](#op-listcampaignlandingpages) | `GET /api/v1/campaigns/{campaign_id}/landing-pages` | read | `campaigns:read` | List Campaign Landing Pages |
|
|
44
|
+
| [`listCampaignsForPicker`](#op-listcampaignsforpicker) | `GET /api/v1/campaigns/picker` | read | `campaigns:read` | List Campaigns For Picker |
|
|
45
|
+
| [`previewCampaignAudienceProfile`](#op-previewcampaignaudienceprofile) | `POST /api/v1/campaigns/audience-profile/preview` | read | `campaigns:read` | Preview Campaign Audience Profile |
|
|
46
|
+
| [`previewCampaignDocumentManifest`](#op-previewcampaigndocumentmanifest) | `POST /api/v1/campaigns/document-manifest/preview` | read | `campaigns:read` | Preview Campaign Document Manifest |
|
|
47
|
+
| [`recommendCampaignPersonas`](#op-recommendcampaignpersonas) | `POST /api/v1/campaigns/recommend-personas` | billable | `campaigns:run` | Recommend Campaign Personas |
|
|
48
|
+
| [`regenerateCampaignDocument`](#op-regeneratecampaigndocument) | `POST /api/v1/campaigns/{campaign_id}/documents/{document_id}/regenerate` | billable | `campaigns:run` | Regenerate Campaign Document |
|
|
49
|
+
| [`suggestCampaignConcepts`](#op-suggestcampaignconcepts) | `POST /api/v1/campaigns/suggest` | read | `campaigns:read` | Suggest Campaign Concepts |
|
|
50
|
+
| [`toggleCampaignIdeaFavorite`](#op-togglecampaignideafavorite) | `POST /api/v1/campaigns/ideas/{idea_id}/favorite` | write | `campaigns:write` | Toggle Campaign Idea Favorite |
|
|
51
|
+
| [`triggerAudiencePipeline`](#op-triggeraudiencepipeline) | `POST /api/v1/campaigns/{campaign_id}/audience-pipeline/trigger` | billable | `campaigns:run` | Trigger Audience Pipeline |
|
|
52
|
+
| [`unlinkLandingPageFromCampaign`](#op-unlinklandingpagefromcampaign) | `DELETE /api/v1/campaigns/{campaign_id}/landing-pages/{landing_page_id}` | destructive | `campaigns:delete` | Unlink Landing Page From Campaign |
|
|
53
|
+
| [`updateCampaignIdea`](#op-updatecampaignidea) | `PATCH /api/v1/campaigns/ideas/{idea_id}` | write | `campaigns:write` | Update Campaign Idea |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
<a id="op-acceptaudiencepipelinefilters"></a>
|
|
58
|
+
|
|
59
|
+
### `g8.api.campaigns.acceptAudiencePipelineFilters(input)`
|
|
60
|
+
|
|
61
|
+
**Accept Audience Pipeline Filters**
|
|
62
|
+
|
|
63
|
+
- HTTP: `POST /api/v1/campaigns/{campaign_id}/audience-pipeline/accept-filters`
|
|
64
|
+
- operationId: `accept_audience_pipeline_filters_campaigns__campaign_id__audience_pipeline_accept_filters_post` (also callable as `g8.api.call("accept_audience_pipeline_filters_campaigns__campaign_id__audience_pipeline_accept_filters_post", input)`)
|
|
65
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
66
|
+
- API-key scope: `campaigns:run`
|
|
67
|
+
|
|
68
|
+
SPENDS CREDITS when `run_pipeline` is true, which is the DEFAULT.
|
|
69
|
+
|
|
70
|
+
Saves the (possibly edited) filters as the campaign's own, then starts the
|
|
71
|
+
pipeline: it builds the list, provisions intent keywords and starts a bulk
|
|
72
|
+
enrichment that spends credits per contact. Send `run_pipeline: false` to
|
|
73
|
+
only save the filters; the answer is then `filters_saved` with no
|
|
74
|
+
`chain_id`. `list_name` overrides the default "{campaign name} Audience".
|
|
75
|
+
|
|
76
|
+
**Input**
|
|
77
|
+
|
|
78
|
+
| Field | Type | Required | Description |
|
|
79
|
+
|---|---|---|---|
|
|
80
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug; resolved inside the key's organisation. |
|
|
81
|
+
| `body` | `AudiencePipelineAcceptFiltersRequest` | yes | Request body; fields below. |
|
|
82
|
+
|
|
83
|
+
Body fields (`AudiencePipelineAcceptFiltersRequest`):
|
|
84
|
+
|
|
85
|
+
| Field | Type | Required | Description |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| `body.filters` | `Array<Record<string, unknown>>` | yes | |
|
|
88
|
+
| `body.list_name` | `string \| null` | no | Custom list name (defaults to '{campaign_name} Audience') |
|
|
89
|
+
| `body.run_pipeline` | `boolean` | no | default `true` |
|
|
90
|
+
|
|
91
|
+
**Returns** `ApiResponse_AudiencePipelineAcceptResult_`: the envelope `{ data: AudiencePipelineAcceptResult, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
92
|
+
|
|
93
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
94
|
+
|
|
95
|
+
`AudiencePipelineAcceptResult` fields:
|
|
96
|
+
|
|
97
|
+
| Field | Type | Required | Description |
|
|
98
|
+
|---|---|---|---|
|
|
99
|
+
| `campaign_id` | `string` | yes | |
|
|
100
|
+
| `status` | `string` | yes | |
|
|
101
|
+
| `chain_id` | `string \| null` | no | |
|
|
102
|
+
|
|
103
|
+
**Example**
|
|
104
|
+
|
|
105
|
+
```ts
|
|
106
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
107
|
+
const result = await g8.api.campaigns.acceptAudiencePipelineFilters({ path: { campaign_id: "id" }, body: { filters: [{}] } });
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
<a id="op-archivecampaignidea"></a>
|
|
113
|
+
|
|
114
|
+
### `g8.api.campaigns.archiveCampaignIdea(input)`
|
|
115
|
+
|
|
116
|
+
**Archive Campaign Idea**
|
|
117
|
+
|
|
118
|
+
- HTTP: `POST /api/v1/campaigns/ideas/{idea_id}/archive`
|
|
119
|
+
- operationId: `archive_campaign_idea_campaigns_ideas__idea_id__archive_post` (also callable as `g8.api.call("archive_campaign_idea_campaigns_ideas__idea_id__archive_post", input)`)
|
|
120
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
121
|
+
- API-key scope: `campaigns:write`
|
|
122
|
+
|
|
123
|
+
Archive an idea. FREE.
|
|
124
|
+
|
|
125
|
+
Archived ideas are not deleted: future idea generation reads them - and
|
|
126
|
+
the `reason` - to steer away from similar concepts.
|
|
127
|
+
|
|
128
|
+
**Input**
|
|
129
|
+
|
|
130
|
+
| Field | Type | Required | Description |
|
|
131
|
+
|---|---|---|---|
|
|
132
|
+
| `path.idea_id` | `string` | yes | Campaign idea id. |
|
|
133
|
+
| `query.reason` | `string \| null` | no | Why it was archived. |
|
|
134
|
+
|
|
135
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
136
|
+
|
|
137
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
138
|
+
|
|
139
|
+
**Example**
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
const result = await g8.api.campaigns.archiveCampaignIdea({ path: { idea_id: "id" } });
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
<a id="op-createmanualcampaignidea"></a>
|
|
148
|
+
|
|
149
|
+
### `g8.api.campaigns.createManualCampaignIdea(input)`
|
|
150
|
+
|
|
151
|
+
**Create Manual Campaign Idea**
|
|
152
|
+
|
|
153
|
+
- HTTP: `POST /api/v1/campaigns/ideas/manual`
|
|
154
|
+
- operationId: `create_manual_campaign_idea_campaigns_ideas_manual_post` (also callable as `g8.api.call("create_manual_campaign_idea_campaigns_ideas_manual_post", input)`)
|
|
155
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
156
|
+
- API-key scope: `campaigns:write`
|
|
157
|
+
|
|
158
|
+
Add an idea by hand, with no generation. FREE.
|
|
159
|
+
|
|
160
|
+
The zero-cost way into the idea pool: everything `/generate-ideas` produces
|
|
161
|
+
can also be written directly here.
|
|
162
|
+
|
|
163
|
+
**Input**
|
|
164
|
+
|
|
165
|
+
| Field | Type | Required | Description |
|
|
166
|
+
|---|---|---|---|
|
|
167
|
+
| `body` | `Record<string, unknown>` | yes | Request body; fields below. |
|
|
168
|
+
|
|
169
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
170
|
+
|
|
171
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
172
|
+
|
|
173
|
+
**Example**
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
const result = await g8.api.campaigns.createManualCampaignIdea({ body: {} });
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
<a id="op-deletecampaign"></a>
|
|
182
|
+
|
|
183
|
+
### `g8.api.campaigns.deleteCampaign(input)`
|
|
184
|
+
|
|
185
|
+
**Delete Campaign**
|
|
186
|
+
|
|
187
|
+
- HTTP: `DELETE /api/v1/campaigns/{campaign_id}`
|
|
188
|
+
- operationId: `delete_campaign_campaigns__campaign_id__delete` (also callable as `g8.api.call("delete_campaign_campaigns__campaign_id__delete", input)`)
|
|
189
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
190
|
+
- API-key scope: `campaigns:delete`
|
|
191
|
+
|
|
192
|
+
SOFT-delete a campaign. It stops appearing; its rows are not dropped.
|
|
193
|
+
|
|
194
|
+
The contract could create, read, patch and LAUNCH a campaign and never
|
|
195
|
+
remove one. `campaigns:delete` plus the per-record ownership scope, both
|
|
196
|
+
the app's own gates.
|
|
197
|
+
|
|
198
|
+
Spends nothing.
|
|
199
|
+
|
|
200
|
+
**Input**
|
|
201
|
+
|
|
202
|
+
| Field | Type | Required | Description |
|
|
203
|
+
|---|---|---|---|
|
|
204
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
205
|
+
|
|
206
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
207
|
+
|
|
208
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
209
|
+
|
|
210
|
+
**Example**
|
|
211
|
+
|
|
212
|
+
```ts
|
|
213
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
214
|
+
const result = await g8.api.campaigns.deleteCampaign({ path: { campaign_id: "id" } });
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
<a id="op-deletecampaignidea"></a>
|
|
220
|
+
|
|
221
|
+
### `g8.api.campaigns.deleteCampaignIdea(input)`
|
|
222
|
+
|
|
223
|
+
**Delete Campaign Idea**
|
|
224
|
+
|
|
225
|
+
- HTTP: `DELETE /api/v1/campaigns/ideas/{idea_id}`
|
|
226
|
+
- operationId: `delete_campaign_idea_campaigns_ideas__idea_id__delete` (also callable as `g8.api.call("delete_campaign_idea_campaigns_ideas__idea_id__delete", input)`)
|
|
227
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
228
|
+
- API-key scope: `campaigns:delete`
|
|
229
|
+
|
|
230
|
+
PERMANENTLY delete an idea. Archiving is the reversible alternative.
|
|
231
|
+
|
|
232
|
+
Two gates, matching the app: the per-record ownership scope AND
|
|
233
|
+
`campaigns:delete`. Both are re-declared here because neither runs on a
|
|
234
|
+
direct call - the first is a decorator dependency, the second a signature
|
|
235
|
+
one.
|
|
236
|
+
|
|
237
|
+
Spends nothing.
|
|
238
|
+
|
|
239
|
+
**Input**
|
|
240
|
+
|
|
241
|
+
| Field | Type | Required | Description |
|
|
242
|
+
|---|---|---|---|
|
|
243
|
+
| `path.idea_id` | `string` | yes | Campaign idea id. |
|
|
244
|
+
|
|
245
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
246
|
+
|
|
247
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
248
|
+
|
|
249
|
+
**Example**
|
|
250
|
+
|
|
251
|
+
```ts
|
|
252
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
253
|
+
const result = await g8.api.campaigns.deleteCampaignIdea({ path: { idea_id: "id" } });
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
<a id="op-generatecampaignideas"></a>
|
|
259
|
+
|
|
260
|
+
### `g8.api.campaigns.generateCampaignIdeas(input)`
|
|
261
|
+
|
|
262
|
+
**Generate Campaign Ideas**
|
|
263
|
+
|
|
264
|
+
- HTTP: `POST /api/v1/campaigns/generate-ideas`
|
|
265
|
+
- operationId: `generate_campaign_ideas_campaigns_generate_ideas_post` (also callable as `g8.api.call("generate_campaign_ideas_campaigns_generate_ideas_post", input)`)
|
|
266
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
267
|
+
- API-key scope: `campaigns:run`
|
|
268
|
+
|
|
269
|
+
Generate campaign ideas. SPENDS CREDIT, scaled by `num_ideas`.
|
|
270
|
+
|
|
271
|
+
SYNCHRONOUS: the generation runs during this call, so a large `num_ideas`
|
|
272
|
+
is a long request. Use `/generate-ideas-async` for anything big.
|
|
273
|
+
|
|
274
|
+
**Input**
|
|
275
|
+
|
|
276
|
+
| Field | Type | Required | Description |
|
|
277
|
+
|---|---|---|---|
|
|
278
|
+
| `body` | `SuggestCampaignsRequest` | yes | Request body; fields below. |
|
|
279
|
+
| `query.num_ideas` | `integer` | no | How many ideas. Scales the spend. default `5` |
|
|
280
|
+
| `query.user_direction` | `string \| null` | no | Free-text steer for the generator. |
|
|
281
|
+
|
|
282
|
+
Body fields (`SuggestCampaignsRequest`):
|
|
283
|
+
|
|
284
|
+
| Field | Type | Required | Description |
|
|
285
|
+
|---|---|---|---|
|
|
286
|
+
| `body.campaign_goal` | `string` | yes | |
|
|
287
|
+
| `body.website_url` | `string` | yes | |
|
|
288
|
+
| `body.campaign_type` | `string \| null` | no | default `"all"` |
|
|
289
|
+
| `body.organization_id` | `string \| null` | no | Ignored. The organisation is the API key's own. |
|
|
290
|
+
| `body.target_persona` | `string \| null` | no | |
|
|
291
|
+
|
|
292
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
293
|
+
|
|
294
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
295
|
+
|
|
296
|
+
`StudioContentListPayload` fields:
|
|
297
|
+
|
|
298
|
+
| Field | Type | Required | Description |
|
|
299
|
+
|---|---|---|---|
|
|
300
|
+
| `items` | `Array<unknown>` | no | |
|
|
301
|
+
|
|
302
|
+
**Example**
|
|
303
|
+
|
|
304
|
+
```ts
|
|
305
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
306
|
+
const result = await g8.api.campaigns.generateCampaignIdeas({
|
|
307
|
+
body: { campaign_goal: "example", website_url: "https://example.com" },
|
|
308
|
+
});
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
<a id="op-generatecampaignideasasync"></a>
|
|
314
|
+
|
|
315
|
+
### `g8.api.campaigns.generateCampaignIdeasAsync(input)`
|
|
316
|
+
|
|
317
|
+
**Generate Campaign Ideas Async**
|
|
318
|
+
|
|
319
|
+
- HTTP: `POST /api/v1/campaigns/generate-ideas-async`
|
|
320
|
+
- operationId: `generate_campaign_ideas_async_campaigns_generate_ideas_async_post` (also callable as `g8.api.call("generate_campaign_ideas_async_campaigns_generate_ideas_async_post", input)`)
|
|
321
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
322
|
+
- API-key scope: `campaigns:run`
|
|
323
|
+
|
|
324
|
+
The same generation, dispatched to the background. SPENDS CREDIT.
|
|
325
|
+
|
|
326
|
+
Returns a task id immediately. The spend is committed by this call even
|
|
327
|
+
though the ideas are not here yet - cancelling the poll does not cancel
|
|
328
|
+
the run.
|
|
329
|
+
|
|
330
|
+
**Input**
|
|
331
|
+
|
|
332
|
+
| Field | Type | Required | Description |
|
|
333
|
+
|---|---|---|---|
|
|
334
|
+
| `body` | `AsyncGenerateIdeasRequest` | yes | Request body; fields below. |
|
|
335
|
+
|
|
336
|
+
Body fields (`AsyncGenerateIdeasRequest`):
|
|
337
|
+
|
|
338
|
+
| Field | Type | Required | Description |
|
|
339
|
+
|---|---|---|---|
|
|
340
|
+
| `body.campaign_goal` | `string` | yes | |
|
|
341
|
+
| `body.organization_id` | `string` | yes | Ignored for tenancy. The organisation is the API key's own. |
|
|
342
|
+
| `body.website_url` | `string` | yes | |
|
|
343
|
+
| `body.audience_list_id` | `integer \| null` | no | |
|
|
344
|
+
| `body.audience_source` | `string \| null` | no | default `"build_new"` |
|
|
345
|
+
| `body.campaign_type` | `string \| null` | no | default `"all"` |
|
|
346
|
+
| `body.execution_targets` | `Array<string> \| null` | no | |
|
|
347
|
+
| `body.num_ideas` | `integer \| null` | no | How many ideas to generate. Scales the spend. default `5` |
|
|
348
|
+
| `body.persona_mode` | `string \| null` | no | default `"selected"` |
|
|
349
|
+
| `body.preferred_channels` | `Array<string> \| null` | no | |
|
|
350
|
+
| `body.target_personas` | `Array<string> \| null` | no | |
|
|
351
|
+
| `body.user_direction` | `string \| null` | no | |
|
|
352
|
+
|
|
353
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
354
|
+
|
|
355
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
356
|
+
|
|
357
|
+
**Example**
|
|
358
|
+
|
|
359
|
+
```ts
|
|
360
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
361
|
+
const result = await g8.api.campaigns.generateCampaignIdeasAsync({
|
|
362
|
+
body: {
|
|
363
|
+
campaign_goal: "example",
|
|
364
|
+
organization_id: "id",
|
|
365
|
+
website_url: "https://example.com",
|
|
366
|
+
},
|
|
367
|
+
});
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
<a id="op-generatecampaignstepcontent"></a>
|
|
373
|
+
|
|
374
|
+
### `g8.api.campaigns.generateCampaignStepContent(input)`
|
|
375
|
+
|
|
376
|
+
**Generate Campaign Step Content**
|
|
377
|
+
|
|
378
|
+
- HTTP: `POST /api/v1/campaigns/{campaign_id}/sequence/steps/{step_id}/generate`
|
|
379
|
+
- operationId: `generate_campaign_step_content_campaigns__campaign_id__sequence_steps__step_id__generate_post` (also callable as `g8.api.call("generate_campaign_step_content_campaigns__campaign_id__sequence_steps__step_id__generate_post", input)`)
|
|
380
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
381
|
+
- API-key scope: `campaigns:run`
|
|
382
|
+
|
|
383
|
+
Write the content for ONE sequence step with AI, replacing its placeholder. SPENDS CREDIT.
|
|
384
|
+
|
|
385
|
+
**Input**
|
|
386
|
+
|
|
387
|
+
| Field | Type | Required | Description |
|
|
388
|
+
|---|---|---|---|
|
|
389
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
390
|
+
| `path.step_id` | `string` | yes | Sequence step id, from `GET /campaigns/{campaign_id}/sequence`. |
|
|
391
|
+
|
|
392
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
393
|
+
|
|
394
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
395
|
+
|
|
396
|
+
**Example**
|
|
397
|
+
|
|
398
|
+
```ts
|
|
399
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
400
|
+
const result = await g8.api.campaigns.generateCampaignStepContent({ path: { campaign_id: "id", step_id: "id" } });
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
<a id="op-getaudiencepipelinestatus"></a>
|
|
406
|
+
|
|
407
|
+
### `g8.api.campaigns.getAudiencePipelineStatus(input)`
|
|
408
|
+
|
|
409
|
+
**Get Audience Pipeline Status**
|
|
410
|
+
|
|
411
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/audience-pipeline/status`
|
|
412
|
+
- operationId: `get_audience_pipeline_status_campaigns__campaign_id__audience_pipeline_status_get` (also callable as `g8.api.call("get_audience_pipeline_status_campaigns__campaign_id__audience_pipeline_status_get", input)`)
|
|
413
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
414
|
+
- API-key scope: `campaigns:read`
|
|
415
|
+
|
|
416
|
+
SPENDS NOTHING. Where the campaign's audience pipeline is, and what it has
|
|
417
|
+
produced: the list it built, how many contacts, the enrichment job, the
|
|
418
|
+
keywords it provisioned, and the error if it failed.
|
|
419
|
+
|
|
420
|
+
**Input**
|
|
421
|
+
|
|
422
|
+
| Field | Type | Required | Description |
|
|
423
|
+
|---|---|---|---|
|
|
424
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug; resolved inside the key's organisation. |
|
|
425
|
+
|
|
426
|
+
**Returns** `ApiResponse_AudiencePipelineStatus_`: the envelope `{ data: AudiencePipelineStatus, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
427
|
+
|
|
428
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
429
|
+
|
|
430
|
+
`AudiencePipelineStatus` fields:
|
|
431
|
+
|
|
432
|
+
| Field | Type | Required | Description |
|
|
433
|
+
|---|---|---|---|
|
|
434
|
+
| `completed_at` | `string (date-time) \| null` | no | |
|
|
435
|
+
| `enrichment_job_id` | `string \| null` | no | |
|
|
436
|
+
| `error` | `string \| null` | no | |
|
|
437
|
+
| `keyword_ids` | `Array<string> \| null` | no | |
|
|
438
|
+
| `list_id` | `string \| null` | no | |
|
|
439
|
+
| `pipeline_status` | `string` | no | Pipeline state: idle \| suggested \| extracting_filters \| creating_list \| provisioning_keywords \| checking_enrichment \| enriching \| completed \| failed default `"idle"` |
|
|
440
|
+
| `started_at` | `string (date-time) \| null` | no | |
|
|
441
|
+
| `suggested_filters` | `Array<Record<string, unknown>> \| null` | no | |
|
|
442
|
+
| `suggested_list_name` | `string \| null` | no | Pre-filled list name based on campaign name |
|
|
443
|
+
| `total_contacts` | `integer` | no | default `0` |
|
|
444
|
+
|
|
445
|
+
**Example**
|
|
446
|
+
|
|
447
|
+
```ts
|
|
448
|
+
const result = await g8.api.campaigns.getAudiencePipelineStatus({ path: { campaign_id: "id" } });
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
<a id="op-getaudiencepipelinesuggestedfilters"></a>
|
|
454
|
+
|
|
455
|
+
### `g8.api.campaigns.getAudiencePipelineSuggestedFilters(input)`
|
|
456
|
+
|
|
457
|
+
**Get Audience Pipeline Suggested Filters**
|
|
458
|
+
|
|
459
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/audience-pipeline/suggested-filters`
|
|
460
|
+
- operationId: `get_audience_pipeline_suggested_filters_campaigns__campaign_id__audience_pipeline_suggested_filters_get` (also callable as `g8.api.call("get_audience_pipeline_suggested_filters_campaigns__campaign_id__audience_pipeline_suggested_filters_get", input)`)
|
|
461
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
462
|
+
- API-key scope: `campaigns:read`
|
|
463
|
+
|
|
464
|
+
SPENDS NOTHING. The targeting filters the pipeline would build the list from.
|
|
465
|
+
|
|
466
|
+
`source` says whether they are filters someone accepted or edited
|
|
467
|
+
(`user_modified`) or a fresh extraction from the targeting document
|
|
468
|
+
(`targeting_doc`). 422 when the campaign has no targeting document or it
|
|
469
|
+
yields no filters; generate campaign content first.
|
|
470
|
+
|
|
471
|
+
**Input**
|
|
472
|
+
|
|
473
|
+
| Field | Type | Required | Description |
|
|
474
|
+
|---|---|---|---|
|
|
475
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug; resolved inside the key's organisation. |
|
|
476
|
+
|
|
477
|
+
**Returns** `ApiResponse_AudiencePipelineSuggestedFilters_`: the envelope `{ data: AudiencePipelineSuggestedFilters, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
478
|
+
|
|
479
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
480
|
+
|
|
481
|
+
`AudiencePipelineSuggestedFilters` fields:
|
|
482
|
+
|
|
483
|
+
| Field | Type | Required | Description |
|
|
484
|
+
|---|---|---|---|
|
|
485
|
+
| `filters` | `Array<Record<string, unknown>>` | yes | |
|
|
486
|
+
| `source` | `string` | yes | Where filters came from: user_modified \| targeting_doc |
|
|
487
|
+
| `suggested_list_name` | `string \| null` | no | Pre-filled list name based on campaign name |
|
|
488
|
+
|
|
489
|
+
**Example**
|
|
490
|
+
|
|
491
|
+
```ts
|
|
492
|
+
const result = await g8.api.campaigns.getAudiencePipelineSuggestedFilters({ path: { campaign_id: "id" } });
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
<a id="op-getcampaigndashboard"></a>
|
|
498
|
+
|
|
499
|
+
### `g8.api.campaigns.getCampaignDashboard(input)`
|
|
500
|
+
|
|
501
|
+
**Get Campaign Dashboard**
|
|
502
|
+
|
|
503
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/dashboard`
|
|
504
|
+
- operationId: `get_campaign_dashboard_campaigns__campaign_id__dashboard_get` (also callable as `g8.api.call("get_campaign_dashboard_campaigns__campaign_id__dashboard_get", input)`)
|
|
505
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
506
|
+
- API-key scope: `campaigns:run`
|
|
507
|
+
|
|
508
|
+
The AI campaign dashboard. A GET THAT CAN SPEND CREDIT.
|
|
509
|
+
|
|
510
|
+
On a cache hit it is free and instant. On a MISS - or when the cached copy
|
|
511
|
+
is stale and the campaign's documents have changed - it dispatches a
|
|
512
|
+
background job that generates the assessment with a model, and returns
|
|
513
|
+
`is_generating: true`. So the first call for a campaign costs money even
|
|
514
|
+
though it is a GET.
|
|
515
|
+
|
|
516
|
+
That is why it is tiered `billable` rather than `read`: the heuristic's
|
|
517
|
+
`ACTIVE_GET_MARKERS` exist for exactly this shape and none of them matches
|
|
518
|
+
`/dashboard`. Poll every few seconds while `is_generating` is true;
|
|
519
|
+
polling does not re-dispatch.
|
|
520
|
+
|
|
521
|
+
**Input**
|
|
522
|
+
|
|
523
|
+
| Field | Type | Required | Description |
|
|
524
|
+
|---|---|---|---|
|
|
525
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
526
|
+
|
|
527
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
528
|
+
|
|
529
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
530
|
+
|
|
531
|
+
**Example**
|
|
532
|
+
|
|
533
|
+
```ts
|
|
534
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
535
|
+
const result = await g8.api.campaigns.getCampaignDashboard({ path: { campaign_id: "id" } });
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
---
|
|
539
|
+
|
|
540
|
+
<a id="op-getcampaigngeneratedfile"></a>
|
|
541
|
+
|
|
542
|
+
### `g8.api.campaigns.getCampaignGeneratedFile(input)`
|
|
543
|
+
|
|
544
|
+
**Get Campaign Generated File**
|
|
545
|
+
|
|
546
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/files/{file_type}`
|
|
547
|
+
- operationId: `get_campaign_generated_file_campaigns__campaign_id__files__file_type__get` (also callable as `g8.api.call("get_campaign_generated_file_campaigns__campaign_id__files__file_type__get", input)`)
|
|
548
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
549
|
+
- API-key scope: `campaigns:read`
|
|
550
|
+
|
|
551
|
+
One generated file's content. FREE.
|
|
552
|
+
|
|
553
|
+
**Input**
|
|
554
|
+
|
|
555
|
+
| Field | Type | Required | Description |
|
|
556
|
+
|---|---|---|---|
|
|
557
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
558
|
+
| `path.file_type` | `string` | yes | A file type from `GET /campaigns/{campaign_id}/files`. |
|
|
559
|
+
|
|
560
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
561
|
+
|
|
562
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
563
|
+
|
|
564
|
+
**Example**
|
|
565
|
+
|
|
566
|
+
```ts
|
|
567
|
+
const result = await g8.api.campaigns.getCampaignGeneratedFile({ path: { campaign_id: "id", file_type: "example" } });
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
---
|
|
571
|
+
|
|
572
|
+
<a id="op-getcampaigngenerationoptions"></a>
|
|
573
|
+
|
|
574
|
+
### `g8.api.campaigns.getCampaignGenerationOptions(input?)`
|
|
575
|
+
|
|
576
|
+
**Get Campaign Generation Options**
|
|
577
|
+
|
|
578
|
+
- HTTP: `GET /api/v1/campaigns/generation-options`
|
|
579
|
+
- operationId: `get_campaign_generation_options_campaigns_generation_options_get` (also callable as `g8.api.call("get_campaign_generation_options_campaigns_generation_options_get", input)`)
|
|
580
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
581
|
+
- API-key scope: `campaigns:read`
|
|
582
|
+
|
|
583
|
+
The supported generation contract: goals, channels, execution targets. FREE.
|
|
584
|
+
|
|
585
|
+
The SOURCE of the vocabularies `/generate-ideas` and `/generate-ideas-async`
|
|
586
|
+
accept. Read it before generating, because an unrecognised channel is
|
|
587
|
+
silently ignored rather than rejected.
|
|
588
|
+
|
|
589
|
+
**Input**: none.
|
|
590
|
+
|
|
591
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
592
|
+
|
|
593
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
594
|
+
|
|
595
|
+
**Example**
|
|
596
|
+
|
|
597
|
+
```ts
|
|
598
|
+
const result = await g8.api.campaigns.getCampaignGenerationOptions();
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
---
|
|
602
|
+
|
|
603
|
+
<a id="op-getcampaigngenerationstatus"></a>
|
|
604
|
+
|
|
605
|
+
### `g8.api.campaigns.getCampaignGenerationStatus(input)`
|
|
606
|
+
|
|
607
|
+
**Get Campaign Generation Status**
|
|
608
|
+
|
|
609
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/status`
|
|
610
|
+
- operationId: `get_campaign_generation_status_campaigns__campaign_id__status_get` (also callable as `g8.api.call("get_campaign_generation_status_campaigns__campaign_id__status_get", input)`)
|
|
611
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
612
|
+
- API-key scope: `campaigns:read`
|
|
613
|
+
|
|
614
|
+
Whether the campaign's documents have finished generating. FREE.
|
|
615
|
+
|
|
616
|
+
The poll target after creating a campaign: generation runs in the
|
|
617
|
+
background and this reports its progress.
|
|
618
|
+
|
|
619
|
+
**Input**
|
|
620
|
+
|
|
621
|
+
| Field | Type | Required | Description |
|
|
622
|
+
|---|---|---|---|
|
|
623
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
624
|
+
|
|
625
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
626
|
+
|
|
627
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
628
|
+
|
|
629
|
+
**Example**
|
|
630
|
+
|
|
631
|
+
```ts
|
|
632
|
+
const result = await g8.api.campaigns.getCampaignGenerationStatus({ path: { campaign_id: "id" } });
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
<a id="op-getcampaignideastaskstatus"></a>
|
|
638
|
+
|
|
639
|
+
### `g8.api.campaigns.getCampaignIdeasTaskStatus(input)`
|
|
640
|
+
|
|
641
|
+
**Get Campaign Ideas Task Status**
|
|
642
|
+
|
|
643
|
+
- HTTP: `GET /api/v1/campaigns/ideas/status/{task_id}`
|
|
644
|
+
- operationId: `get_campaign_ideas_task_status_campaigns_ideas_status__task_id__get` (also callable as `g8.api.call("get_campaign_ideas_task_status_campaigns_ideas_status__task_id__get", input)`)
|
|
645
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
646
|
+
- API-key scope: `campaigns:read`
|
|
647
|
+
|
|
648
|
+
Progress of a background idea-generation run. FREE - the poll target.
|
|
649
|
+
|
|
650
|
+
**Input**
|
|
651
|
+
|
|
652
|
+
| Field | Type | Required | Description |
|
|
653
|
+
|---|---|---|---|
|
|
654
|
+
| `path.task_id` | `string` | yes | Task id returned by `POST /campaigns/generate-ideas-async`. |
|
|
655
|
+
|
|
656
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
657
|
+
|
|
658
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
659
|
+
|
|
660
|
+
**Example**
|
|
661
|
+
|
|
662
|
+
```ts
|
|
663
|
+
const result = await g8.api.campaigns.getCampaignIdeasTaskStatus({ path: { task_id: "id" } });
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
---
|
|
667
|
+
|
|
668
|
+
<a id="op-linklandingpagetocampaign"></a>
|
|
669
|
+
|
|
670
|
+
### `g8.api.campaigns.linkLandingPageToCampaign(input)`
|
|
671
|
+
|
|
672
|
+
**Link Landing Page To Campaign**
|
|
673
|
+
|
|
674
|
+
- HTTP: `POST /api/v1/campaigns/{campaign_id}/landing-pages`
|
|
675
|
+
- operationId: `link_landing_page_to_campaign_campaigns__campaign_id__landing_pages_post` (also callable as `g8.api.call("link_landing_page_to_campaign_campaigns__campaign_id__landing_pages_post", input)`)
|
|
676
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
677
|
+
- API-key scope: `campaigns:write`
|
|
678
|
+
|
|
679
|
+
Attach an existing landing page to this campaign. FREE.
|
|
680
|
+
|
|
681
|
+
A link, not a copy: the page is unchanged and can be linked to more than
|
|
682
|
+
one campaign. Create the page with `POST /landing-pages` first.
|
|
683
|
+
|
|
684
|
+
**Input**
|
|
685
|
+
|
|
686
|
+
| Field | Type | Required | Description |
|
|
687
|
+
|---|---|---|---|
|
|
688
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
689
|
+
| `body` | `LinkLandingPageRequest` | yes | Request body; fields below. |
|
|
690
|
+
|
|
691
|
+
Body fields (`LinkLandingPageRequest`):
|
|
692
|
+
|
|
693
|
+
| Field | Type | Required | Description |
|
|
694
|
+
|---|---|---|---|
|
|
695
|
+
| `body.landing_page_id` | `string` | yes | |
|
|
696
|
+
|
|
697
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
698
|
+
|
|
699
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
700
|
+
|
|
701
|
+
**Example**
|
|
702
|
+
|
|
703
|
+
```ts
|
|
704
|
+
const result = await g8.api.campaigns.linkLandingPageToCampaign({ path: { campaign_id: "id" }, body: { landing_page_id: "id" } });
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
---
|
|
708
|
+
|
|
709
|
+
<a id="op-listcampaignaudiencelistoptions"></a>
|
|
710
|
+
|
|
711
|
+
### `g8.api.campaigns.listCampaignAudienceListOptions(input?)`
|
|
712
|
+
|
|
713
|
+
**List Campaign Audience List Options**
|
|
714
|
+
|
|
715
|
+
- HTTP: `GET /api/v1/campaigns/audience-lists/options`
|
|
716
|
+
- operationId: `list_campaign_audience_list_options_campaigns_audience_lists_options_get` (also callable as `g8.api.call("list_campaign_audience_list_options_campaigns_audience_lists_options_get", input)`)
|
|
717
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
718
|
+
- API-key scope: `campaigns:read`
|
|
719
|
+
|
|
720
|
+
Contact lists a campaign can be built on. FREE.
|
|
721
|
+
|
|
722
|
+
Scoped to what the CREDENTIAL can see: a key narrowed away from lists gets
|
|
723
|
+
the lists it is entitled to, not all of them.
|
|
724
|
+
|
|
725
|
+
**Input**
|
|
726
|
+
|
|
727
|
+
| Field | Type | Required | Description |
|
|
728
|
+
|---|---|---|---|
|
|
729
|
+
| `query.search` | `string \| null` | no | Substring match on the list name. |
|
|
730
|
+
|
|
731
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
732
|
+
|
|
733
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
734
|
+
|
|
735
|
+
`StudioContentListPayload` fields:
|
|
736
|
+
|
|
737
|
+
| Field | Type | Required | Description |
|
|
738
|
+
|---|---|---|---|
|
|
739
|
+
| `items` | `Array<unknown>` | no | |
|
|
740
|
+
|
|
741
|
+
**Example**
|
|
742
|
+
|
|
743
|
+
```ts
|
|
744
|
+
const result = await g8.api.campaigns.listCampaignAudienceListOptions();
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
---
|
|
748
|
+
|
|
749
|
+
<a id="op-listcampaigngeneratedfiles"></a>
|
|
750
|
+
|
|
751
|
+
### `g8.api.campaigns.listCampaignGeneratedFiles(input)`
|
|
752
|
+
|
|
753
|
+
**List Campaign Generated Files**
|
|
754
|
+
|
|
755
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/files`
|
|
756
|
+
- operationId: `list_campaign_generated_files_campaigns__campaign_id__files_get` (also callable as `g8.api.call("list_campaign_generated_files_campaigns__campaign_id__files_get", input)`)
|
|
757
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
758
|
+
- API-key scope: `campaigns:read`
|
|
759
|
+
|
|
760
|
+
The generated files of a campaign, by type. FREE.
|
|
761
|
+
|
|
762
|
+
**Input**
|
|
763
|
+
|
|
764
|
+
| Field | Type | Required | Description |
|
|
765
|
+
|---|---|---|---|
|
|
766
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
767
|
+
|
|
768
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
769
|
+
|
|
770
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
771
|
+
|
|
772
|
+
`StudioContentListPayload` fields:
|
|
773
|
+
|
|
774
|
+
| Field | Type | Required | Description |
|
|
775
|
+
|---|---|---|---|
|
|
776
|
+
| `items` | `Array<unknown>` | no | |
|
|
777
|
+
|
|
778
|
+
**Example**
|
|
779
|
+
|
|
780
|
+
```ts
|
|
781
|
+
const result = await g8.api.campaigns.listCampaignGeneratedFiles({ path: { campaign_id: "id" } });
|
|
782
|
+
```
|
|
783
|
+
|
|
784
|
+
---
|
|
785
|
+
|
|
786
|
+
<a id="op-listcampaignlandingpages"></a>
|
|
787
|
+
|
|
788
|
+
### `g8.api.campaigns.listCampaignLandingPages(input)`
|
|
789
|
+
|
|
790
|
+
**List Campaign Landing Pages**
|
|
791
|
+
|
|
792
|
+
- HTTP: `GET /api/v1/campaigns/{campaign_id}/landing-pages`
|
|
793
|
+
- operationId: `list_campaign_landing_pages_campaigns__campaign_id__landing_pages_get` (also callable as `g8.api.call("list_campaign_landing_pages_campaigns__campaign_id__landing_pages_get", input)`)
|
|
794
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
795
|
+
- API-key scope: `campaigns:read`
|
|
796
|
+
|
|
797
|
+
The landing pages this campaign runs on. FREE.
|
|
798
|
+
|
|
799
|
+
**Input**
|
|
800
|
+
|
|
801
|
+
| Field | Type | Required | Description |
|
|
802
|
+
|---|---|---|---|
|
|
803
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
804
|
+
|
|
805
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
806
|
+
|
|
807
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
808
|
+
|
|
809
|
+
`StudioContentListPayload` fields:
|
|
810
|
+
|
|
811
|
+
| Field | Type | Required | Description |
|
|
812
|
+
|---|---|---|---|
|
|
813
|
+
| `items` | `Array<unknown>` | no | |
|
|
814
|
+
|
|
815
|
+
**Example**
|
|
816
|
+
|
|
817
|
+
```ts
|
|
818
|
+
const result = await g8.api.campaigns.listCampaignLandingPages({ path: { campaign_id: "id" } });
|
|
819
|
+
```
|
|
820
|
+
|
|
821
|
+
---
|
|
822
|
+
|
|
823
|
+
<a id="op-listcampaignsforpicker"></a>
|
|
824
|
+
|
|
825
|
+
### `g8.api.campaigns.listCampaignsForPicker(input?)`
|
|
826
|
+
|
|
827
|
+
**List Campaigns For Picker**
|
|
828
|
+
|
|
829
|
+
- HTTP: `GET /api/v1/campaigns/picker`
|
|
830
|
+
- operationId: `list_campaigns_for_picker_campaigns_picker_get` (also callable as `g8.api.call("list_campaigns_for_picker_campaigns_picker_get", input)`)
|
|
831
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
832
|
+
- API-key scope: `campaigns:read`
|
|
833
|
+
|
|
834
|
+
Every campaign in the org, id and name only. FREE.
|
|
835
|
+
|
|
836
|
+
UNSCOPED BY DESIGN, and that is worth knowing: it deliberately ignores the
|
|
837
|
+
own/team/all campaign scope so a picker can offer every campaign a call
|
|
838
|
+
could be logged against. It returns identifiers, not campaign content - use
|
|
839
|
+
`GET /campaigns` for the scoped, full list.
|
|
840
|
+
|
|
841
|
+
**Input**: none.
|
|
842
|
+
|
|
843
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
844
|
+
|
|
845
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
846
|
+
|
|
847
|
+
`StudioContentListPayload` fields:
|
|
848
|
+
|
|
849
|
+
| Field | Type | Required | Description |
|
|
850
|
+
|---|---|---|---|
|
|
851
|
+
| `items` | `Array<unknown>` | no | |
|
|
852
|
+
|
|
853
|
+
**Example**
|
|
854
|
+
|
|
855
|
+
```ts
|
|
856
|
+
const result = await g8.api.campaigns.listCampaignsForPicker();
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
---
|
|
860
|
+
|
|
861
|
+
<a id="op-previewcampaignaudienceprofile"></a>
|
|
862
|
+
|
|
863
|
+
### `g8.api.campaigns.previewCampaignAudienceProfile(input)`
|
|
864
|
+
|
|
865
|
+
**Preview Campaign Audience Profile**
|
|
866
|
+
|
|
867
|
+
- HTTP: `POST /api/v1/campaigns/audience-profile/preview`
|
|
868
|
+
- operationId: `preview_campaign_audience_profile_campaigns_audience_profile_preview_post` (also callable as `g8.api.call("preview_campaign_audience_profile_campaigns_audience_profile_preview_post", input)`)
|
|
869
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
870
|
+
- API-key scope: `campaigns:read`
|
|
871
|
+
|
|
872
|
+
Profile an audience list before building a campaign on it. FREE.
|
|
873
|
+
|
|
874
|
+
Aggregates the list's titles, seniority and industries so the campaign
|
|
875
|
+
can be aimed at who is actually on it. Nothing is created.
|
|
876
|
+
|
|
877
|
+
**Input**
|
|
878
|
+
|
|
879
|
+
| Field | Type | Required | Description |
|
|
880
|
+
|---|---|---|---|
|
|
881
|
+
| `body` | `AudienceProfilePreviewRequest` | yes | Request body; fields below. |
|
|
882
|
+
|
|
883
|
+
Body fields (`AudienceProfilePreviewRequest`):
|
|
884
|
+
|
|
885
|
+
| Field | Type | Required | Description |
|
|
886
|
+
|---|---|---|---|
|
|
887
|
+
| `body.audience_id` | `integer` | yes | |
|
|
888
|
+
|
|
889
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
890
|
+
|
|
891
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
892
|
+
|
|
893
|
+
**Example**
|
|
894
|
+
|
|
895
|
+
```ts
|
|
896
|
+
const result = await g8.api.campaigns.previewCampaignAudienceProfile({ body: { audience_id: 123 } });
|
|
897
|
+
```
|
|
898
|
+
|
|
899
|
+
---
|
|
900
|
+
|
|
901
|
+
<a id="op-previewcampaigndocumentmanifest"></a>
|
|
902
|
+
|
|
903
|
+
### `g8.api.campaigns.previewCampaignDocumentManifest(input)`
|
|
904
|
+
|
|
905
|
+
**Preview Campaign Document Manifest**
|
|
906
|
+
|
|
907
|
+
- HTTP: `POST /api/v1/campaigns/document-manifest/preview`
|
|
908
|
+
- operationId: `preview_campaign_document_manifest_campaigns_document_manifest_preview_post` (also callable as `g8.api.call("preview_campaign_document_manifest_campaigns_document_manifest_preview_post", input)`)
|
|
909
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
910
|
+
- API-key scope: `campaigns:read`
|
|
911
|
+
|
|
912
|
+
Which documents a campaign with these channels would generate. FREE.
|
|
913
|
+
|
|
914
|
+
A dry run of the generation contract: nothing is created and no model
|
|
915
|
+
runs. The same answer `POST /campaigns` acts on.
|
|
916
|
+
|
|
917
|
+
**Input**
|
|
918
|
+
|
|
919
|
+
| Field | Type | Required | Description |
|
|
920
|
+
|---|---|---|---|
|
|
921
|
+
| `body` | `CampaignDocumentManifestRequest` | yes | Request body; fields below. |
|
|
922
|
+
|
|
923
|
+
Body fields (`CampaignDocumentManifestRequest`):
|
|
924
|
+
|
|
925
|
+
| Field | Type | Required | Description |
|
|
926
|
+
|---|---|---|---|
|
|
927
|
+
| `body.channels` | `Array<string>` | yes | |
|
|
928
|
+
| `body.audience_source` | `string \| null` | no | |
|
|
929
|
+
| `body.campaign_focus` | `string \| null` | no | default `"outbound"` |
|
|
930
|
+
| `body.execution_targets` | `Array<string> \| null` | no | |
|
|
931
|
+
|
|
932
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
933
|
+
|
|
934
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
935
|
+
|
|
936
|
+
**Example**
|
|
937
|
+
|
|
938
|
+
```ts
|
|
939
|
+
const result = await g8.api.campaigns.previewCampaignDocumentManifest({ body: { channels: ["example"] } });
|
|
940
|
+
```
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
<a id="op-recommendcampaignpersonas"></a>
|
|
945
|
+
|
|
946
|
+
### `g8.api.campaigns.recommendCampaignPersonas(input)`
|
|
947
|
+
|
|
948
|
+
**Recommend Campaign Personas**
|
|
949
|
+
|
|
950
|
+
- HTTP: `POST /api/v1/campaigns/recommend-personas`
|
|
951
|
+
- operationId: `recommend_campaign_personas_campaigns_recommend_personas_post` (also callable as `g8.api.call("recommend_campaign_personas_campaigns_recommend_personas_post", input)`)
|
|
952
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
953
|
+
- API-key scope: `campaigns:run`
|
|
954
|
+
|
|
955
|
+
Recommend target personas and a strategy. SPENDS CREDIT.
|
|
956
|
+
|
|
957
|
+
An LLM pass over the company's own data. Its path carries no marker, so
|
|
958
|
+
the tier heuristic called it an ordinary write; it is corrected with an
|
|
959
|
+
explicit rule.
|
|
960
|
+
|
|
961
|
+
`organization_id` in the body is IGNORED - the organisation is always the
|
|
962
|
+
API key's own. It is accepted because the app's model carries it, and
|
|
963
|
+
rejecting a field Studio itself sends would be a gratuitous 422.
|
|
964
|
+
|
|
965
|
+
**Input**
|
|
966
|
+
|
|
967
|
+
| Field | Type | Required | Description |
|
|
968
|
+
|---|---|---|---|
|
|
969
|
+
| `body` | `PersonaRecommendationRequest` | yes | Request body; fields below. |
|
|
970
|
+
|
|
971
|
+
Body fields (`PersonaRecommendationRequest`):
|
|
972
|
+
|
|
973
|
+
| Field | Type | Required | Description |
|
|
974
|
+
|---|---|---|---|
|
|
975
|
+
| `body.website_url` | `string` | yes | |
|
|
976
|
+
| `body.organization_id` | `string \| null` | no | Ignored. The organisation is the API key's own. |
|
|
977
|
+
|
|
978
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
979
|
+
|
|
980
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
981
|
+
|
|
982
|
+
**Example**
|
|
983
|
+
|
|
984
|
+
```ts
|
|
985
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
986
|
+
const result = await g8.api.campaigns.recommendCampaignPersonas({ body: { website_url: "https://example.com" } });
|
|
987
|
+
```
|
|
988
|
+
|
|
989
|
+
---
|
|
990
|
+
|
|
991
|
+
<a id="op-regeneratecampaigndocument"></a>
|
|
992
|
+
|
|
993
|
+
### `g8.api.campaigns.regenerateCampaignDocument(input)`
|
|
994
|
+
|
|
995
|
+
**Regenerate Campaign Document**
|
|
996
|
+
|
|
997
|
+
- HTTP: `POST /api/v1/campaigns/{campaign_id}/documents/{document_id}/regenerate`
|
|
998
|
+
- operationId: `regenerate_campaign_document_campaigns__campaign_id__documents__document_id__regenerate_post` (also callable as `g8.api.call("regenerate_campaign_document_campaigns__campaign_id__documents__document_id__regenerate_post", input)`)
|
|
999
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1000
|
+
- API-key scope: `campaigns:run`
|
|
1001
|
+
|
|
1002
|
+
Rewrite ONE campaign document with AI. SPENDS CREDIT.
|
|
1003
|
+
|
|
1004
|
+
The document is marked `generating` and a background job rewrites it from
|
|
1005
|
+
the campaign's current context; poll `GET /campaigns/{campaign_id}/documents/{document_id}`.
|
|
1006
|
+
The current content is replaced.
|
|
1007
|
+
|
|
1008
|
+
**Input**
|
|
1009
|
+
|
|
1010
|
+
| Field | Type | Required | Description |
|
|
1011
|
+
|---|---|---|---|
|
|
1012
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
1013
|
+
| `path.document_id` | `string` | yes | Campaign document id. |
|
|
1014
|
+
|
|
1015
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1016
|
+
|
|
1017
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1018
|
+
|
|
1019
|
+
**Example**
|
|
1020
|
+
|
|
1021
|
+
```ts
|
|
1022
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1023
|
+
const result = await g8.api.campaigns.regenerateCampaignDocument({ path: { campaign_id: "id", document_id: "id" } });
|
|
1024
|
+
```
|
|
1025
|
+
|
|
1026
|
+
---
|
|
1027
|
+
|
|
1028
|
+
<a id="op-suggestcampaignconcepts"></a>
|
|
1029
|
+
|
|
1030
|
+
### `g8.api.campaigns.suggestCampaignConcepts(input)`
|
|
1031
|
+
|
|
1032
|
+
**Suggest Campaign Concepts**
|
|
1033
|
+
|
|
1034
|
+
- HTTP: `POST /api/v1/campaigns/suggest`
|
|
1035
|
+
- operationId: `suggest_campaign_concepts_campaigns_suggest_post` (also callable as `g8.api.call("suggest_campaign_concepts_campaigns_suggest_post", input)`)
|
|
1036
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1037
|
+
- API-key scope: `campaigns:read`
|
|
1038
|
+
|
|
1039
|
+
Rank the top 15 campaign CONCEPTS from the playbook library for a goal.
|
|
1040
|
+
|
|
1041
|
+
Semantic search over the concept library plus rule-based scoring (fit,
|
|
1042
|
+
asset readiness, goal, channel feasibility). No generative model runs and
|
|
1043
|
+
nothing is created - `POST /campaigns/generate-ideas` is the generative,
|
|
1044
|
+
credit-spending counterpart. `organization_id` in the body is ignored.
|
|
1045
|
+
|
|
1046
|
+
Spends nothing.
|
|
1047
|
+
|
|
1048
|
+
**Input**
|
|
1049
|
+
|
|
1050
|
+
| Field | Type | Required | Description |
|
|
1051
|
+
|---|---|---|---|
|
|
1052
|
+
| `body` | `SuggestCampaignsRequest` | yes | Request body; fields below. |
|
|
1053
|
+
|
|
1054
|
+
Body fields (`SuggestCampaignsRequest`):
|
|
1055
|
+
|
|
1056
|
+
| Field | Type | Required | Description |
|
|
1057
|
+
|---|---|---|---|
|
|
1058
|
+
| `body.campaign_goal` | `string` | yes | |
|
|
1059
|
+
| `body.website_url` | `string` | yes | |
|
|
1060
|
+
| `body.campaign_type` | `string \| null` | no | default `"all"` |
|
|
1061
|
+
| `body.organization_id` | `string \| null` | no | Ignored. The organisation is the API key's own. |
|
|
1062
|
+
| `body.target_persona` | `string \| null` | no | |
|
|
1063
|
+
|
|
1064
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1065
|
+
|
|
1066
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1067
|
+
|
|
1068
|
+
**Example**
|
|
1069
|
+
|
|
1070
|
+
```ts
|
|
1071
|
+
const result = await g8.api.campaigns.suggestCampaignConcepts({
|
|
1072
|
+
body: { campaign_goal: "example", website_url: "https://example.com" },
|
|
1073
|
+
});
|
|
1074
|
+
```
|
|
1075
|
+
|
|
1076
|
+
---
|
|
1077
|
+
|
|
1078
|
+
<a id="op-togglecampaignideafavorite"></a>
|
|
1079
|
+
|
|
1080
|
+
### `g8.api.campaigns.toggleCampaignIdeaFavorite(input)`
|
|
1081
|
+
|
|
1082
|
+
**Toggle Campaign Idea Favorite**
|
|
1083
|
+
|
|
1084
|
+
- HTTP: `POST /api/v1/campaigns/ideas/{idea_id}/favorite`
|
|
1085
|
+
- operationId: `toggle_campaign_idea_favorite_campaigns_ideas__idea_id__favorite_post` (also callable as `g8.api.call("toggle_campaign_idea_favorite_campaigns_ideas__idea_id__favorite_post", input)`)
|
|
1086
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1087
|
+
- API-key scope: `campaigns:write`
|
|
1088
|
+
|
|
1089
|
+
TOGGLE the favourite flag on an idea. FREE.
|
|
1090
|
+
|
|
1091
|
+
A toggle, not a setter - the app has no explicit-value form, so a retried
|
|
1092
|
+
request flips the state back rather than being idempotent. Read the
|
|
1093
|
+
returned value rather than assuming the call set it.
|
|
1094
|
+
|
|
1095
|
+
**Input**
|
|
1096
|
+
|
|
1097
|
+
| Field | Type | Required | Description |
|
|
1098
|
+
|---|---|---|---|
|
|
1099
|
+
| `path.idea_id` | `string` | yes | Campaign idea id. |
|
|
1100
|
+
|
|
1101
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1102
|
+
|
|
1103
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1104
|
+
|
|
1105
|
+
**Example**
|
|
1106
|
+
|
|
1107
|
+
```ts
|
|
1108
|
+
const result = await g8.api.campaigns.toggleCampaignIdeaFavorite({ path: { idea_id: "id" } });
|
|
1109
|
+
```
|
|
1110
|
+
|
|
1111
|
+
---
|
|
1112
|
+
|
|
1113
|
+
<a id="op-triggeraudiencepipeline"></a>
|
|
1114
|
+
|
|
1115
|
+
### `g8.api.campaigns.triggerAudiencePipeline(input)`
|
|
1116
|
+
|
|
1117
|
+
**Trigger Audience Pipeline**
|
|
1118
|
+
|
|
1119
|
+
- HTTP: `POST /api/v1/campaigns/{campaign_id}/audience-pipeline/trigger`
|
|
1120
|
+
- operationId: `trigger_audience_pipeline_campaigns__campaign_id__audience_pipeline_trigger_post` (also callable as `g8.api.call("trigger_audience_pipeline_campaigns__campaign_id__audience_pipeline_trigger_post", input)`)
|
|
1121
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1122
|
+
- API-key scope: `campaigns:run`
|
|
1123
|
+
|
|
1124
|
+
SPENDS CREDITS. Starts the pipeline from the targeting document as it is now.
|
|
1125
|
+
|
|
1126
|
+
Clears any filters previously accepted for this campaign so they are
|
|
1127
|
+
re-extracted from the (possibly edited) document, then dispatches the run:
|
|
1128
|
+
list, intent keywords, bulk enrichment - which spends credits per contact
|
|
1129
|
+
with no ceiling but the list size. 422 when the campaign has no targeting
|
|
1130
|
+
document with structured data. Poll `status` for progress.
|
|
1131
|
+
|
|
1132
|
+
**Input**
|
|
1133
|
+
|
|
1134
|
+
| Field | Type | Required | Description |
|
|
1135
|
+
|---|---|---|---|
|
|
1136
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug; resolved inside the key's organisation. |
|
|
1137
|
+
|
|
1138
|
+
**Returns** `ApiResponse_AudiencePipelineTriggerResult_`: the envelope `{ data: AudiencePipelineTriggerResult, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1139
|
+
|
|
1140
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1141
|
+
|
|
1142
|
+
`AudiencePipelineTriggerResult` fields:
|
|
1143
|
+
|
|
1144
|
+
| Field | Type | Required | Description |
|
|
1145
|
+
|---|---|---|---|
|
|
1146
|
+
| `campaign_id` | `string` | yes | |
|
|
1147
|
+
| `status` | `string` | yes | |
|
|
1148
|
+
| `chain_id` | `string \| null` | no | |
|
|
1149
|
+
|
|
1150
|
+
**Example**
|
|
1151
|
+
|
|
1152
|
+
```ts
|
|
1153
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1154
|
+
const result = await g8.api.campaigns.triggerAudiencePipeline({ path: { campaign_id: "id" } });
|
|
1155
|
+
```
|
|
1156
|
+
|
|
1157
|
+
---
|
|
1158
|
+
|
|
1159
|
+
<a id="op-unlinklandingpagefromcampaign"></a>
|
|
1160
|
+
|
|
1161
|
+
### `g8.api.campaigns.unlinkLandingPageFromCampaign(input)`
|
|
1162
|
+
|
|
1163
|
+
**Unlink Landing Page From Campaign**
|
|
1164
|
+
|
|
1165
|
+
- HTTP: `DELETE /api/v1/campaigns/{campaign_id}/landing-pages/{landing_page_id}`
|
|
1166
|
+
- operationId: `unlink_landing_page_from_campaign_campaigns__campaign_id__landing_pages__landing_page_id__delete` (also callable as `g8.api.call("unlink_landing_page_from_campaign_campaigns__campaign_id__landing_pages__landing_page_id__delete", input)`)
|
|
1167
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1168
|
+
- API-key scope: `campaigns:delete`
|
|
1169
|
+
|
|
1170
|
+
Detach a landing page from this campaign. The PAGE IS NOT DELETED.
|
|
1171
|
+
|
|
1172
|
+
It keeps serving at every URL it is published at - unlinking is an
|
|
1173
|
+
organisational act, not a takedown. Use
|
|
1174
|
+
`POST /landing-pages/{id}/unpublish` for that.
|
|
1175
|
+
|
|
1176
|
+
The app has a SECOND route for this same operation, spelled
|
|
1177
|
+
`DELETE /v1/landing-pages/campaigns/{campaign_id}/{landing_page_id}`. Only
|
|
1178
|
+
this spelling is published: two paths for one act is how a caller ends up
|
|
1179
|
+
reading one and writing the other.
|
|
1180
|
+
|
|
1181
|
+
Spends nothing.
|
|
1182
|
+
|
|
1183
|
+
**Input**
|
|
1184
|
+
|
|
1185
|
+
| Field | Type | Required | Description |
|
|
1186
|
+
|---|---|---|---|
|
|
1187
|
+
| `path.campaign_id` | `string` | yes | Campaign id or slug. |
|
|
1188
|
+
| `path.landing_page_id` | `string` | yes | The landing page to detach. |
|
|
1189
|
+
|
|
1190
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1191
|
+
|
|
1192
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1193
|
+
|
|
1194
|
+
**Example**
|
|
1195
|
+
|
|
1196
|
+
```ts
|
|
1197
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1198
|
+
const result = await g8.api.campaigns.unlinkLandingPageFromCampaign({ path: { campaign_id: "id", landing_page_id: "id" } });
|
|
1199
|
+
```
|
|
1200
|
+
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1203
|
+
<a id="op-updatecampaignidea"></a>
|
|
1204
|
+
|
|
1205
|
+
### `g8.api.campaigns.updateCampaignIdea(input)`
|
|
1206
|
+
|
|
1207
|
+
**Update Campaign Idea**
|
|
1208
|
+
|
|
1209
|
+
- HTTP: `PATCH /api/v1/campaigns/ideas/{idea_id}`
|
|
1210
|
+
- operationId: `update_campaign_idea_campaigns_ideas__idea_id__patch` (also callable as `g8.api.call("update_campaign_idea_campaigns_ideas__idea_id__patch", input)`)
|
|
1211
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1212
|
+
- API-key scope: `campaigns:write`
|
|
1213
|
+
|
|
1214
|
+
Edit an idea in place. FREE.
|
|
1215
|
+
|
|
1216
|
+
The ownership scope IS the permission gate here, exactly as in the app -
|
|
1217
|
+
there is no separate `campaigns:write` check on this route, so the
|
|
1218
|
+
per-record gate is the only thing between a key and another user's idea.
|
|
1219
|
+
That is why it is re-declared rather than assumed.
|
|
1220
|
+
|
|
1221
|
+
**Input**
|
|
1222
|
+
|
|
1223
|
+
| Field | Type | Required | Description |
|
|
1224
|
+
|---|---|---|---|
|
|
1225
|
+
| `path.idea_id` | `string` | yes | Campaign idea id. |
|
|
1226
|
+
| `body` | `Record<string, unknown>` | yes | Request body; fields below. |
|
|
1227
|
+
|
|
1228
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1229
|
+
|
|
1230
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1231
|
+
|
|
1232
|
+
**Example**
|
|
1233
|
+
|
|
1234
|
+
```ts
|
|
1235
|
+
const result = await g8.api.campaigns.updateCampaignIdea({ path: { idea_id: "id" }, body: {} });
|
|
1236
|
+
```
|