@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.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +105 -7
- package/dist/index.d.ts +105 -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 +103 -7
- package/dist/react.d.ts +103 -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 +1697 -0
- package/docs/api/deals.md +2436 -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,2488 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.landingPages`: Landing Pages
|
|
4
|
+
|
|
5
|
+
59 operations (20 read, 21 write, 3 destructive, 13 billable, 2 external).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.landingPages.*` 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: [landingPages.d.ts](landingPages.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`applyLandingPageReviewFindings`](#op-applylandingpagereviewfindings) | `POST /api/v1/landing-pages/{landing_page_id}/ai-review/apply` | write | `campaigns:write` | Apply Landing Page Review Findings |
|
|
26
|
+
| [`approveLandingPageTemplate`](#op-approvelandingpagetemplate) | `PATCH /api/v1/landing-pages/{landing_page_id}/approve-template` | write | `campaigns:write` | Approve Landing Page Template |
|
|
27
|
+
| [`clearLandingPageConsentOverride`](#op-clearlandingpageconsentoverride) | `DELETE /api/v1/landing-pages/{landing_page_id}/tracking/consent` | destructive | `campaigns:delete` | Clear Landing Page Consent Override |
|
|
28
|
+
| [`cloneHomepageToLandingPage`](#op-clonehomepagetolandingpage) | `POST /api/v1/landing-pages/clone-homepage` | billable | `campaigns:run` | Clone Homepage To Landing Page |
|
|
29
|
+
| [`cloneHtmlToLandingPage`](#op-clonehtmltolandingpage) | `POST /api/v1/landing-pages/clone-html` | billable | `campaigns:run` | Clone Html To Landing Page |
|
|
30
|
+
| [`cloneUrlToLandingPage`](#op-cloneurltolandingpage) | `POST /api/v1/landing-pages/clone-url` | billable | `campaigns:run` | Clone Url To Landing Page |
|
|
31
|
+
| [`convertLandingPageToFreeform`](#op-convertlandingpagetofreeform) | `POST /api/v1/landing-pages/{landing_page_id}/convert-to-freeform` | write | `campaigns:write` | Convert Landing Page To Freeform |
|
|
32
|
+
| [`createLandingPage`](#op-createlandingpage) | `POST /api/v1/landing-pages` | billable | `campaigns:run` | Create Landing Page |
|
|
33
|
+
| [`createLandingPageAgentSession`](#op-createlandingpageagentsession) | `POST /api/v1/landing-pages/{page_id}/agent-sessions` | write | `integrations:write` | Create Landing Page Agent Session |
|
|
34
|
+
| [`createLandingPagePreviewLink`](#op-createlandingpagepreviewlink) | `GET /api/v1/landing-pages/{landing_page_id}/preview` | read | `campaigns:read` | Create Landing Page Preview Link |
|
|
35
|
+
| [`deleteLandingPage`](#op-deletelandingpage) | `DELETE /api/v1/landing-pages/{landing_page_id}` | destructive | `campaigns:delete` | Delete Landing Page |
|
|
36
|
+
| [`demoteLandingPageToTemplate`](#op-demotelandingpagetotemplate) | `POST /api/v1/landing-pages/{landing_page_id}/demote-to-template` | write | `campaigns:write` | Demote Landing Page To Template |
|
|
37
|
+
| [`duplicateLandingPageTemplate`](#op-duplicatelandingpagetemplate) | `POST /api/v1/landing-pages/{landing_page_id}/duplicate` | write | `campaigns:write` | Duplicate Landing Page Template |
|
|
38
|
+
| [`editLandingPageElement`](#op-editlandingpageelement) | `POST /api/v1/landing-pages/{landing_page_id}/edit-element` | billable | `campaigns:run` | Edit Landing Page Element |
|
|
39
|
+
| [`editLandingPageWhole`](#op-editlandingpagewhole) | `POST /api/v1/landing-pages/{landing_page_id}/edit-page` | billable | `campaigns:run` | Edit Landing Page Whole |
|
|
40
|
+
| [`editLandingPageWithChat`](#op-editlandingpagewithchat) | `POST /api/v1/landing-pages/{landing_page_id}/edit` | billable | `campaigns:run` | Edit Landing Page With Chat |
|
|
41
|
+
| [`ensureLandingPageBaseTemplate`](#op-ensurelandingpagebasetemplate) | `POST /api/v1/landing-pages/ensure-base-template` | billable | `campaigns:run` | Ensure Landing Page Base Template |
|
|
42
|
+
| [`exportLandingPage`](#op-exportlandingpage) | `GET /api/v1/landing-pages/{landing_page_id}/export` | read | `campaigns:read` | Export Landing Page |
|
|
43
|
+
| [`extractLandingPageComponents`](#op-extractlandingpagecomponents) | `POST /api/v1/landing-pages/components/extract` | billable | `campaigns:run` | Extract Landing Page Components |
|
|
44
|
+
| [`fixLandingPageFindingWithAi`](#op-fixlandingpagefindingwithai) | `POST /api/v1/landing-pages/{landing_page_id}/ai-review/fix-with-ai` | billable | `campaigns:run` | Fix Landing Page Finding With Ai |
|
|
45
|
+
| [`generateLandingPageSeoMetadata`](#op-generatelandingpageseometadata) | `POST /api/v1/landing-pages/{landing_page_id}/generate-seo-metadata` | billable | `campaigns:run` | Generate Landing Page Seo Metadata |
|
|
46
|
+
| [`getLandingPage`](#op-getlandingpage) | `GET /api/v1/landing-pages/{landing_page_id}` | read | `campaigns:read` | Get Landing Page |
|
|
47
|
+
| [`getLandingPageConsentDefault`](#op-getlandingpageconsentdefault) | `GET /api/v1/landing-page-consent/default` | read | `campaigns:read` | Get Landing Page Consent Default |
|
|
48
|
+
| [`getLandingPageConversation`](#op-getlandingpageconversation) | `GET /api/v1/landing-pages/{landing_page_id}/conversation` | read | `campaigns:read` | Get Landing Page Conversation |
|
|
49
|
+
| [`getLandingPageDesignSystem`](#op-getlandingpagedesignsystem) | `GET /api/v1/landing-pages/design-system` | read | `campaigns:read` | Get Landing Page Design System |
|
|
50
|
+
| [`getLandingPageManifest`](#op-getlandingpagemanifest) | `GET /api/v1/landing-pages/{landing_page_id}/manifest` | read | `campaigns:read` | Get Landing Page Manifest |
|
|
51
|
+
| [`getLandingPageReportingOverview`](#op-getlandingpagereportingoverview) | `GET /api/v1/landing-pages/reporting/overview` | read | `campaigns:read` | Get Landing Page Reporting Overview |
|
|
52
|
+
| [`getLandingPageSource`](#op-getlandingpagesource) | `GET /api/v1/landing-pages/agent-sessions/{session_id}` | read | `landing-pages:read` | Get Landing Page Source |
|
|
53
|
+
| [`getLandingPageStatus`](#op-getlandingpagestatus) | `GET /api/v1/landing-pages/{landing_page_id}/status` | read | `campaigns:read` | Get Landing Page Status |
|
|
54
|
+
| [`getLandingPageTracking`](#op-getlandingpagetracking) | `GET /api/v1/landing-pages/{landing_page_id}/tracking` | read | `campaigns:read` | Get Landing Page Tracking |
|
|
55
|
+
| [`importLandingPageHtml`](#op-importlandingpagehtml) | `POST /api/v1/landing-pages/{landing_page_id}/import-html` | write | `campaigns:write` | Import Landing Page Html |
|
|
56
|
+
| [`listLandingPageAnchors`](#op-listlandingpageanchors) | `GET /api/v1/landing-pages/{landing_page_id}/anchors` | read | `campaigns:read` | List Landing Page Anchors |
|
|
57
|
+
| [`listLandingPageBindings`](#op-listlandingpagebindings) | `GET /api/v1/landing-pages/{landing_page_id}/bindings` | read | `campaigns:read` | List Landing Page Bindings |
|
|
58
|
+
| [`listLandingPageComponents`](#op-listlandingpagecomponents) | `GET /api/v1/landing-pages/components` | read | `campaigns:read` | List Landing Page Components |
|
|
59
|
+
| [`listLandingPageConsentStatus`](#op-listlandingpageconsentstatus) | `GET /api/v1/landing-page-consent/pages` | read | `campaigns:read` | List Landing Page Consent Status |
|
|
60
|
+
| [`listLandingPageDomains`](#op-listlandingpagedomains) | `GET /api/v1/landing-pages/domains` | read | `campaigns:read` | List Landing Page Domains |
|
|
61
|
+
| [`listLandingPageReportingCompanies`](#op-listlandingpagereportingcompanies) | `GET /api/v1/landing-pages/reporting/companies` | read | `campaigns:read` | List Landing Page Reporting Companies |
|
|
62
|
+
| [`listLandingPageReportingPeople`](#op-listlandingpagereportingpeople) | `GET /api/v1/landing-pages/reporting/people` | read | `campaigns:read` | List Landing Page Reporting People |
|
|
63
|
+
| [`listLandingPageVersions`](#op-listlandingpageversions) | `GET /api/v1/landing-pages/{landing_page_id}/versions` | read | `campaigns:read` | List Landing Page Versions |
|
|
64
|
+
| [`listLandingPages`](#op-listlandingpages) | `GET /api/v1/landing-pages` | read | `campaigns:read` | List Landing Pages |
|
|
65
|
+
| [`patchLandingPage`](#op-patchlandingpage) | `POST /api/v1/landing-pages/agent-sessions/{session_id}/patch` | write | `landing-pages:write` | Patch Landing Page |
|
|
66
|
+
| [`promoteLandingPageTemplate`](#op-promotelandingpagetemplate) | `POST /api/v1/landing-pages/{landing_page_id}/promote-to-page` | write | `campaigns:write` | Promote Landing Page Template |
|
|
67
|
+
| [`provisionLandingPageTracking`](#op-provisionlandingpagetracking) | `POST /api/v1/landing-pages/{landing_page_id}/tracking/provision` | write | `campaigns:write` | Provision Landing Page Tracking |
|
|
68
|
+
| [`publishLandingPage`](#op-publishlandingpage) | `POST /api/v1/landing-pages/{landing_page_id}/publish` | external | `campaigns:run` | Publish Landing Page |
|
|
69
|
+
| [`removeLandingPageBinding`](#op-removelandingpagebinding) | `DELETE /api/v1/landing-pages/{landing_page_id}/bindings` | destructive | `campaigns:delete` | Remove Landing Page Binding |
|
|
70
|
+
| [`replaceLandingPageHtml`](#op-replacelandingpagehtml) | `POST /api/v1/landing-pages/{landing_page_id}/replace-html` | write | `campaigns:write` | Replace Landing Page Html |
|
|
71
|
+
| [`restoreLandingPageVersion`](#op-restorelandingpageversion) | `POST /api/v1/landing-pages/{landing_page_id}/versions/{version_num}/restore` | write | `campaigns:write` | Restore Landing Page Version |
|
|
72
|
+
| [`reviewLandingPage`](#op-reviewlandingpage) | `POST /api/v1/landing-pages/{landing_page_id}/ai-review` | billable | `campaigns:run` | Review Landing Page |
|
|
73
|
+
| [`rewriteLandingPageText`](#op-rewritelandingpagetext) | `POST /api/v1/landing-pages/{landing_page_id}/rewrite-text` | billable | `campaigns:run` | Rewrite Landing Page Text |
|
|
74
|
+
| [`saveLandingPageTemplateAsPage`](#op-savelandingpagetemplateaspage) | `POST /api/v1/landing-pages/{landing_page_id}/save-as-page` | write | `campaigns:write` | Save Landing Page Template As Page |
|
|
75
|
+
| [`setLandingPageConsentDefault`](#op-setlandingpageconsentdefault) | `PUT /api/v1/landing-page-consent/default` | write | `campaigns:write` | Set Landing Page Consent Default |
|
|
76
|
+
| [`setLandingPageMedia`](#op-setlandingpagemedia) | `POST /api/v1/landing-pages/{landing_page_id}/set-media-edit` | write | `campaigns:write` | Set Landing Page Media |
|
|
77
|
+
| [`setLandingPageText`](#op-setlandingpagetext) | `POST /api/v1/landing-pages/{landing_page_id}/set-text` | write | `campaigns:write` | Set Landing Page Text |
|
|
78
|
+
| [`unpublishLandingPage`](#op-unpublishlandingpage) | `POST /api/v1/landing-pages/{landing_page_id}/unpublish` | external | `campaigns:run` | Unpublish Landing Page |
|
|
79
|
+
| [`updateLandingPage`](#op-updatelandingpage) | `PATCH /api/v1/landing-pages/{landing_page_id}` | write | `campaigns:write` | Update Landing Page |
|
|
80
|
+
| [`updateLandingPageHtml`](#op-updatelandingpagehtml) | `POST /api/v1/landing-pages/{landing_page_id}/update-html` | write | `campaigns:write` | Update Landing Page Html |
|
|
81
|
+
| [`updateLandingPageSection`](#op-updatelandingpagesection) | `PATCH /api/v1/landing-pages/{landing_page_id}/sections/{section_idx}` | write | `campaigns:write` | Update Landing Page Section |
|
|
82
|
+
| [`updateLandingPageText`](#op-updatelandingpagetext) | `POST /api/v1/landing-pages/{landing_page_id}/update-text` | write | `campaigns:write` | Update Landing Page Text |
|
|
83
|
+
| [`updateLandingPageTracking`](#op-updatelandingpagetracking) | `PATCH /api/v1/landing-pages/{landing_page_id}/tracking` | write | `campaigns:write` | Update Landing Page Tracking |
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
<a id="op-applylandingpagereviewfindings"></a>
|
|
88
|
+
|
|
89
|
+
### `g8.api.landingPages.applyLandingPageReviewFindings(input)`
|
|
90
|
+
|
|
91
|
+
**Apply Landing Page Review Findings**
|
|
92
|
+
|
|
93
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/ai-review/apply`
|
|
94
|
+
- operationId: `apply_landing_page_review_findings_landing_pages__landing_page_id__ai_review_apply_post` (also callable as `g8.api.call("apply_landing_page_review_findings_landing_pages__landing_page_id__ai_review_apply_post", input)`)
|
|
95
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
96
|
+
- API-key scope: `campaigns:write`
|
|
97
|
+
|
|
98
|
+
Apply findings DETERMINISTICALLY. FREE - no model runs.
|
|
99
|
+
|
|
100
|
+
Prefer this to `/fix-with-ai` for anything the review already gave an
|
|
101
|
+
exact replacement for; it costs nothing and cannot invent a change.
|
|
102
|
+
|
|
103
|
+
**Input**
|
|
104
|
+
|
|
105
|
+
| Field | Type | Required | Description |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
108
|
+
| `body` | `AIReviewApplyRequest` | yes | Request body; fields below. |
|
|
109
|
+
|
|
110
|
+
Body fields (`AIReviewApplyRequest`):
|
|
111
|
+
|
|
112
|
+
| Field | Type | Required | Description |
|
|
113
|
+
|---|---|---|---|
|
|
114
|
+
| `body.finding_ids` | `Array<string>` | yes | |
|
|
115
|
+
|
|
116
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
117
|
+
|
|
118
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
119
|
+
|
|
120
|
+
**Example**
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
const result = await g8.api.landingPages.applyLandingPageReviewFindings({ path: { landing_page_id: "id" }, body: { finding_ids: ["id"] } });
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
<a id="op-approvelandingpagetemplate"></a>
|
|
129
|
+
|
|
130
|
+
### `g8.api.landingPages.approveLandingPageTemplate(input)`
|
|
131
|
+
|
|
132
|
+
**Approve Landing Page Template**
|
|
133
|
+
|
|
134
|
+
- HTTP: `PATCH /api/v1/landing-pages/{landing_page_id}/approve-template`
|
|
135
|
+
- operationId: `approve_landing_page_template_landing_pages__landing_page_id__approve_template_patch` (also callable as `g8.api.call("approve_landing_page_template_landing_pages__landing_page_id__approve_template_patch", input)`)
|
|
136
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
137
|
+
- API-key scope: `campaigns:write`
|
|
138
|
+
|
|
139
|
+
Move a generated template from pending-approval to completed. FREE.
|
|
140
|
+
|
|
141
|
+
**Input**
|
|
142
|
+
|
|
143
|
+
| Field | Type | Required | Description |
|
|
144
|
+
|---|---|---|---|
|
|
145
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
146
|
+
|
|
147
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
148
|
+
|
|
149
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
150
|
+
|
|
151
|
+
**Example**
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
const result = await g8.api.landingPages.approveLandingPageTemplate({ path: { landing_page_id: "id" } });
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
<a id="op-clearlandingpageconsentoverride"></a>
|
|
160
|
+
|
|
161
|
+
### `g8.api.landingPages.clearLandingPageConsentOverride(input)`
|
|
162
|
+
|
|
163
|
+
**Clear Landing Page Consent Override**
|
|
164
|
+
|
|
165
|
+
- HTTP: `DELETE /api/v1/landing-pages/{landing_page_id}/tracking/consent`
|
|
166
|
+
- operationId: `clear_landing_page_consent_override_landing_pages__landing_page_id__tracking_consent_delete` (also callable as `g8.api.call("clear_landing_page_consent_override_landing_pages__landing_page_id__tracking_consent_delete", input)`)
|
|
167
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
168
|
+
- API-key scope: `campaigns:delete`
|
|
169
|
+
|
|
170
|
+
Drop the page's own consent settings so it inherits the workspace default.
|
|
171
|
+
|
|
172
|
+
Spends nothing.
|
|
173
|
+
|
|
174
|
+
**Input**
|
|
175
|
+
|
|
176
|
+
| Field | Type | Required | Description |
|
|
177
|
+
|---|---|---|---|
|
|
178
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
179
|
+
|
|
180
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
181
|
+
|
|
182
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
183
|
+
|
|
184
|
+
**Example**
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
188
|
+
const result = await g8.api.landingPages.clearLandingPageConsentOverride({ path: { landing_page_id: "id" } });
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
<a id="op-clonehomepagetolandingpage"></a>
|
|
194
|
+
|
|
195
|
+
### `g8.api.landingPages.cloneHomepageToLandingPage(input)`
|
|
196
|
+
|
|
197
|
+
**Clone Homepage To Landing Page**
|
|
198
|
+
|
|
199
|
+
- HTTP: `POST /api/v1/landing-pages/clone-homepage`
|
|
200
|
+
- operationId: `clone_homepage_to_landing_page_landing_pages_clone_homepage_post` (also callable as `g8.api.call("clone_homepage_to_landing_page_landing_pages_clone_homepage_post", input)`)
|
|
201
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
202
|
+
- API-key scope: `campaigns:run`
|
|
203
|
+
|
|
204
|
+
Clone the org's homepage into an editable page. SPENDS CREDIT.
|
|
205
|
+
|
|
206
|
+
`use_vision` is on by default and is the expensive half: it runs a
|
|
207
|
+
multimodal pass over a screenshot so the clone looks like the original
|
|
208
|
+
rather than like its HTML.
|
|
209
|
+
|
|
210
|
+
**Input**
|
|
211
|
+
|
|
212
|
+
| Field | Type | Required | Description |
|
|
213
|
+
|---|---|---|---|
|
|
214
|
+
| `body` | `CloneHomepageRequest` | yes | Request body; fields below. |
|
|
215
|
+
|
|
216
|
+
Body fields (`CloneHomepageRequest`):
|
|
217
|
+
|
|
218
|
+
| Field | Type | Required | Description |
|
|
219
|
+
|---|---|---|---|
|
|
220
|
+
| `body.description` | `string \| null` | no | |
|
|
221
|
+
| `body.goal` | `string \| null` | no | |
|
|
222
|
+
| `body.name` | `string \| null` | no | |
|
|
223
|
+
| `body.use_vision` | `boolean` | no | default `true` |
|
|
224
|
+
|
|
225
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
226
|
+
|
|
227
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
228
|
+
|
|
229
|
+
**Example**
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
233
|
+
const result = await g8.api.landingPages.cloneHomepageToLandingPage({ body: {} });
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
<a id="op-clonehtmltolandingpage"></a>
|
|
239
|
+
|
|
240
|
+
### `g8.api.landingPages.cloneHtmlToLandingPage(input)`
|
|
241
|
+
|
|
242
|
+
**Clone Html To Landing Page**
|
|
243
|
+
|
|
244
|
+
- HTTP: `POST /api/v1/landing-pages/clone-html`
|
|
245
|
+
- operationId: `clone_html_to_landing_page_landing_pages_clone_html_post` (also callable as `g8.api.call("clone_html_to_landing_page_landing_pages_clone_html_post", input)`)
|
|
246
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
247
|
+
- API-key scope: `campaigns:run`
|
|
248
|
+
|
|
249
|
+
Clone from raw source the caller already holds. SPENDS CREDIT.
|
|
250
|
+
|
|
251
|
+
`use_vision` defaults OFF here and ON for `/clone-url`, which is the app's
|
|
252
|
+
asymmetry and a real one: there is no live page to screenshot.
|
|
253
|
+
|
|
254
|
+
**Input**
|
|
255
|
+
|
|
256
|
+
| Field | Type | Required | Description |
|
|
257
|
+
|---|---|---|---|
|
|
258
|
+
| `body` | `CloneHtmlRequest` | yes | Request body; fields below. |
|
|
259
|
+
|
|
260
|
+
Body fields (`CloneHtmlRequest`):
|
|
261
|
+
|
|
262
|
+
| Field | Type | Required | Description |
|
|
263
|
+
|---|---|---|---|
|
|
264
|
+
| `body.html` | `string` | yes | min length 16, max length 2000000 |
|
|
265
|
+
| `body.filename` | `string \| null` | no | Original filename - drives format detection (e.g. dialer.astro). max length 300 |
|
|
266
|
+
| `body.name` | `string \| null` | no | max length 200 |
|
|
267
|
+
| `body.source_url` | `string \| null` | no | max length 2048 |
|
|
268
|
+
| `body.use_vision` | `boolean` | no | default `false` |
|
|
269
|
+
|
|
270
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
271
|
+
|
|
272
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
273
|
+
|
|
274
|
+
**Example**
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
278
|
+
const result = await g8.api.landingPages.cloneHtmlToLandingPage({ body: { html: "xxxxxxxxxxxxxxxx" } });
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
<a id="op-cloneurltolandingpage"></a>
|
|
284
|
+
|
|
285
|
+
### `g8.api.landingPages.cloneUrlToLandingPage(input)`
|
|
286
|
+
|
|
287
|
+
**Clone Url To Landing Page**
|
|
288
|
+
|
|
289
|
+
- HTTP: `POST /api/v1/landing-pages/clone-url`
|
|
290
|
+
- operationId: `clone_url_to_landing_page_landing_pages_clone_url_post` (also callable as `g8.api.call("clone_url_to_landing_page_landing_pages_clone_url_post", input)`)
|
|
291
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
292
|
+
- API-key scope: `campaigns:run`
|
|
293
|
+
|
|
294
|
+
Clone ANY public URL into an editable page. SPENDS CREDIT.
|
|
295
|
+
|
|
296
|
+
It fetches the URL server-side, so the page has to be publicly reachable -
|
|
297
|
+
this is not a way to read something behind the caller's own login.
|
|
298
|
+
|
|
299
|
+
**Input**
|
|
300
|
+
|
|
301
|
+
| Field | Type | Required | Description |
|
|
302
|
+
|---|---|---|---|
|
|
303
|
+
| `body` | `CloneUrlRequest` | yes | Request body; fields below. |
|
|
304
|
+
|
|
305
|
+
Body fields (`CloneUrlRequest`):
|
|
306
|
+
|
|
307
|
+
| Field | Type | Required | Description |
|
|
308
|
+
|---|---|---|---|
|
|
309
|
+
| `body.url` | `string` | yes | min length 1, max length 2048 |
|
|
310
|
+
| `body.name` | `string \| null` | no | max length 200 |
|
|
311
|
+
| `body.use_vision` | `boolean` | no | Multimodal pass. Costs more. Default on. default `true` |
|
|
312
|
+
|
|
313
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
314
|
+
|
|
315
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
316
|
+
|
|
317
|
+
**Example**
|
|
318
|
+
|
|
319
|
+
```ts
|
|
320
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
321
|
+
const result = await g8.api.landingPages.cloneUrlToLandingPage({ body: { url: "https://example.com" } });
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
<a id="op-convertlandingpagetofreeform"></a>
|
|
327
|
+
|
|
328
|
+
### `g8.api.landingPages.convertLandingPageToFreeform(input)`
|
|
329
|
+
|
|
330
|
+
**Convert Landing Page To Freeform**
|
|
331
|
+
|
|
332
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/convert-to-freeform`
|
|
333
|
+
- operationId: `convert_landing_page_to_freeform_landing_pages__landing_page_id__convert_to_freeform_post` (also callable as `g8.api.call("convert_landing_page_to_freeform_landing_pages__landing_page_id__convert_to_freeform_post", input)`)
|
|
334
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
335
|
+
- API-key scope: `campaigns:write`
|
|
336
|
+
|
|
337
|
+
Flatten a sections-mode page into freeform HTML. FREE.
|
|
338
|
+
|
|
339
|
+
ONE-WAY: there is no convert-back, and `PATCH /sections/{idx}` stops
|
|
340
|
+
applying to the page afterwards.
|
|
341
|
+
|
|
342
|
+
**Input**
|
|
343
|
+
|
|
344
|
+
| Field | Type | Required | Description |
|
|
345
|
+
|---|---|---|---|
|
|
346
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
347
|
+
|
|
348
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
349
|
+
|
|
350
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
351
|
+
|
|
352
|
+
**Example**
|
|
353
|
+
|
|
354
|
+
```ts
|
|
355
|
+
const result = await g8.api.landingPages.convertLandingPageToFreeform({ path: { landing_page_id: "id" } });
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
---
|
|
359
|
+
|
|
360
|
+
<a id="op-createlandingpage"></a>
|
|
361
|
+
|
|
362
|
+
### `g8.api.landingPages.createLandingPage(input)`
|
|
363
|
+
|
|
364
|
+
**Create Landing Page**
|
|
365
|
+
|
|
366
|
+
- HTTP: `POST /api/v1/landing-pages`
|
|
367
|
+
- operationId: `create_landing_page_landing_pages_post` (also callable as `g8.api.call("create_landing_page_landing_pages_post", input)`)
|
|
368
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
369
|
+
- API-key scope: `campaigns:run`
|
|
370
|
+
|
|
371
|
+
Create a landing page. SPENDS CREDIT unless `generate` is false.
|
|
372
|
+
|
|
373
|
+
`generate` defaults TRUE, matching Studio, and that default is the whole
|
|
374
|
+
cost of this call: it runs the full copy-and-layout pass. Send
|
|
375
|
+
`generate: false` for an empty page you will fill with `/clone-url`,
|
|
376
|
+
`/import-html` or the deterministic edit routes.
|
|
377
|
+
|
|
378
|
+
`created_by` is the API key's own principal. An organisation key records
|
|
379
|
+
the key's identity rather than a person's, which is the honest answer -
|
|
380
|
+
there is no human behind it.
|
|
381
|
+
|
|
382
|
+
**Input**
|
|
383
|
+
|
|
384
|
+
| Field | Type | Required | Description |
|
|
385
|
+
|---|---|---|---|
|
|
386
|
+
| `body` | `CreateLandingPageRequest` | yes | Request body; fields below. |
|
|
387
|
+
|
|
388
|
+
Body fields (`CreateLandingPageRequest`):
|
|
389
|
+
|
|
390
|
+
| Field | Type | Required | Description |
|
|
391
|
+
|---|---|---|---|
|
|
392
|
+
| `body.campaign_id` | `string \| null` | no | |
|
|
393
|
+
| `body.generate` | `boolean` | no | Run the AI generation pass. TRUE BY DEFAULT and it spends credit. default `true` |
|
|
394
|
+
| `body.generation_mode` | `string \| null` | no | default `"freeform"` |
|
|
395
|
+
| `body.goal` | `string \| null` | no | |
|
|
396
|
+
| `body.name` | `string \| null` | no | |
|
|
397
|
+
|
|
398
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
399
|
+
|
|
400
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
401
|
+
|
|
402
|
+
**Example**
|
|
403
|
+
|
|
404
|
+
```ts
|
|
405
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
406
|
+
const result = await g8.api.landingPages.createLandingPage({ body: {} });
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
<a id="op-createlandingpageagentsession"></a>
|
|
412
|
+
|
|
413
|
+
### `g8.api.landingPages.createLandingPageAgentSession(input)`
|
|
414
|
+
|
|
415
|
+
**Create Landing Page Agent Session**
|
|
416
|
+
|
|
417
|
+
- HTTP: `POST /api/v1/landing-pages/{page_id}/agent-sessions`
|
|
418
|
+
- operationId: `create_landing_page_agent_session_landing_pages__page_id__agent_sessions_post` (also callable as `g8.api.call("create_landing_page_agent_session_landing_pages__page_id__agent_sessions_post", input)`)
|
|
419
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
420
|
+
- API-key scope: `integrations:write`
|
|
421
|
+
|
|
422
|
+
Open a short-lived edit session against one landing page.
|
|
423
|
+
|
|
424
|
+
Returns an `edit_session` id to pass to the two routes above. The session is
|
|
425
|
+
a LOCATOR, not a credential: it selects which draft the following calls act
|
|
426
|
+
on, and `get_api_user` still authenticates every one of them. It carries a
|
|
427
|
+
TTL and is bound at creation to this org and this actor.
|
|
428
|
+
|
|
429
|
+
`actor_email` is `str(user.id)`, byte-identical to what the read and patch
|
|
430
|
+
routes pass to `require_edit_session`. That is what closes the loop: a
|
|
431
|
+
session minted here resolves for the same key that minted it, and a mismatch
|
|
432
|
+
would make every subsequent call 404 against a session that plainly exists.
|
|
433
|
+
|
|
434
|
+
NO OWNABILITY GUARD, unlike the agent routes. `agent_router` refuses a write
|
|
435
|
+
from a key whose `actor_identities()` is empty, because an org key
|
|
436
|
+
authenticates as the shared constant `api-key@graph8.com`. The same constant
|
|
437
|
+
lands in `actor_email` here, so two org keys in ONE org can read and patch
|
|
438
|
+
each other's sessions. That is deliberate parity rather than an oversight:
|
|
439
|
+
the two sibling routes already bind on `str(user.id)` and already accept org
|
|
440
|
+
keys, so guarding only the create half would break the loop for exactly the
|
|
441
|
+
keys the other half still serves. The boundary that matters is unchanged --
|
|
442
|
+
`require_edit_session` rejects a session from another ORG. Tightening all
|
|
443
|
+
three together belongs with the per-key identity work recorded in
|
|
444
|
+
`.claude/agent-context/agent-runtime-api-key-door.md`.
|
|
445
|
+
|
|
446
|
+
NOT SCOPE-GATED LOCALLY, unlike its two siblings, and that is deliberate
|
|
447
|
+
rather than an oversight. They call `require_scope("landing-pages:...")`,
|
|
448
|
+
which makes `build_scope_policy` record them as `exempt`; an exempt route
|
|
449
|
+
publishes no `x-graph8-scope`, so their requirement is real but invisible in
|
|
450
|
+
the contract -- and `landing-pages` is not a resource in
|
|
451
|
+
`scope_vocabulary.json` at all, so the scope they name cannot be granted to
|
|
452
|
+
a key. It is inert today only because `require_scope` runs in soak mode by
|
|
453
|
+
default. Leaving this route ungated puts it in the GOVERNED set, where
|
|
454
|
+
`apply_scope_policy` attaches the gate and the bundle publishes
|
|
455
|
+
`integrations:write` -- the resource this file is actually mapped to. The
|
|
456
|
+
siblings are left alone here: correcting them moves two published operations
|
|
457
|
+
and belongs in its own change.
|
|
458
|
+
|
|
459
|
+
**Input**
|
|
460
|
+
|
|
461
|
+
| Field | Type | Required | Description |
|
|
462
|
+
|---|---|---|---|
|
|
463
|
+
| `path.page_id` | `string` | yes | |
|
|
464
|
+
| `body` | `CreateAgentSessionRequest \| null` | no | Request body; fields below. |
|
|
465
|
+
|
|
466
|
+
Body fields:
|
|
467
|
+
|
|
468
|
+
| Field | Type | Required | Description |
|
|
469
|
+
|---|---|---|---|
|
|
470
|
+
| `body.approval_mode` | `string` | no | 'review' (default) stages each patch for a human to approve in Studio. 'auto_apply' writes straight to the draft. Bound to the session at creation, so a later patch cannot escalate itself. default `"review"`, pattern `^(review\|auto_apply)$` |
|
|
471
|
+
|
|
472
|
+
**Returns** `ApiResponse_dict_str__Any__`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
473
|
+
|
|
474
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
475
|
+
|
|
476
|
+
**Example**
|
|
477
|
+
|
|
478
|
+
```ts
|
|
479
|
+
const result = await g8.api.landingPages.createLandingPageAgentSession({ path: { page_id: "id" } });
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
<a id="op-createlandingpagepreviewlink"></a>
|
|
485
|
+
|
|
486
|
+
### `g8.api.landingPages.createLandingPagePreviewLink(input)`
|
|
487
|
+
|
|
488
|
+
**Create Landing Page Preview Link**
|
|
489
|
+
|
|
490
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/preview`
|
|
491
|
+
- operationId: `create_landing_page_preview_link_landing_pages__landing_page_id__preview_get` (also callable as `g8.api.call("create_landing_page_preview_link_landing_pages__landing_page_id__preview_get", input)`)
|
|
492
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
493
|
+
- API-key scope: `campaigns:read`
|
|
494
|
+
|
|
495
|
+
Mint a time-limited preview link for an UNPUBLISHED page. FREE.
|
|
496
|
+
|
|
497
|
+
Anyone holding the link can view the draft until it expires - share it
|
|
498
|
+
for review, not publicly. Nothing is published.
|
|
499
|
+
|
|
500
|
+
**Input**
|
|
501
|
+
|
|
502
|
+
| Field | Type | Required | Description |
|
|
503
|
+
|---|---|---|---|
|
|
504
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
505
|
+
|
|
506
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
507
|
+
|
|
508
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
509
|
+
|
|
510
|
+
**Example**
|
|
511
|
+
|
|
512
|
+
```ts
|
|
513
|
+
const result = await g8.api.landingPages.createLandingPagePreviewLink({ path: { landing_page_id: "id" } });
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
<a id="op-deletelandingpage"></a>
|
|
519
|
+
|
|
520
|
+
### `g8.api.landingPages.deleteLandingPage(input)`
|
|
521
|
+
|
|
522
|
+
**Delete Landing Page**
|
|
523
|
+
|
|
524
|
+
- HTTP: `DELETE /api/v1/landing-pages/{landing_page_id}`
|
|
525
|
+
- operationId: `delete_landing_page_landing_pages__landing_page_id__delete` (also callable as `g8.api.call("delete_landing_page_landing_pages__landing_page_id__delete", input)`)
|
|
526
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
527
|
+
- API-key scope: `campaigns:delete`
|
|
528
|
+
|
|
529
|
+
Delete a landing page. Unpublish it first if it is live.
|
|
530
|
+
|
|
531
|
+
Spends nothing.
|
|
532
|
+
|
|
533
|
+
**Input**
|
|
534
|
+
|
|
535
|
+
| Field | Type | Required | Description |
|
|
536
|
+
|---|---|---|---|
|
|
537
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
538
|
+
|
|
539
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `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
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
547
|
+
const result = await g8.api.landingPages.deleteLandingPage({ path: { landing_page_id: "id" } });
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
<a id="op-demotelandingpagetotemplate"></a>
|
|
553
|
+
|
|
554
|
+
### `g8.api.landingPages.demoteLandingPageToTemplate(input)`
|
|
555
|
+
|
|
556
|
+
**Demote Landing Page To Template**
|
|
557
|
+
|
|
558
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/demote-to-template`
|
|
559
|
+
- operationId: `demote_landing_page_to_template_landing_pages__landing_page_id__demote_to_template_post` (also callable as `g8.api.call("demote_landing_page_to_template_landing_pages__landing_page_id__demote_to_template_post", input)`)
|
|
560
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
561
|
+
- API-key scope: `campaigns:write`
|
|
562
|
+
|
|
563
|
+
Move a saved page back into the template list. FREE. Inverse of promote.
|
|
564
|
+
|
|
565
|
+
**Input**
|
|
566
|
+
|
|
567
|
+
| Field | Type | Required | Description |
|
|
568
|
+
|---|---|---|---|
|
|
569
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
570
|
+
|
|
571
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
572
|
+
|
|
573
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
574
|
+
|
|
575
|
+
**Example**
|
|
576
|
+
|
|
577
|
+
```ts
|
|
578
|
+
const result = await g8.api.landingPages.demoteLandingPageToTemplate({ path: { landing_page_id: "id" } });
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
<a id="op-duplicatelandingpagetemplate"></a>
|
|
584
|
+
|
|
585
|
+
### `g8.api.landingPages.duplicateLandingPageTemplate(input)`
|
|
586
|
+
|
|
587
|
+
**Duplicate Landing Page Template**
|
|
588
|
+
|
|
589
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/duplicate`
|
|
590
|
+
- operationId: `duplicate_landing_page_template_landing_pages__landing_page_id__duplicate_post` (also callable as `g8.api.call("duplicate_landing_page_template_landing_pages__landing_page_id__duplicate_post", input)`)
|
|
591
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
592
|
+
- API-key scope: `campaigns:write`
|
|
593
|
+
|
|
594
|
+
Copy a Brand Kit TEMPLATE as another template. FREE - no model runs.
|
|
595
|
+
|
|
596
|
+
Only an org template can be duplicated (400 otherwise); to turn a
|
|
597
|
+
template into an editable page use `/save-as-page`. `created_by` is the
|
|
598
|
+
API key's own principal.
|
|
599
|
+
|
|
600
|
+
**Input**
|
|
601
|
+
|
|
602
|
+
| Field | Type | Required | Description |
|
|
603
|
+
|---|---|---|---|
|
|
604
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
605
|
+
| `body` | `DuplicateTemplateRequest` | yes | Request body; fields below. |
|
|
606
|
+
|
|
607
|
+
Body fields (`DuplicateTemplateRequest`):
|
|
608
|
+
|
|
609
|
+
| Field | Type | Required | Description |
|
|
610
|
+
|---|---|---|---|
|
|
611
|
+
| `body.name` | `string \| null` | no | max length 200 |
|
|
612
|
+
|
|
613
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
614
|
+
|
|
615
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
616
|
+
|
|
617
|
+
**Example**
|
|
618
|
+
|
|
619
|
+
```ts
|
|
620
|
+
const result = await g8.api.landingPages.duplicateLandingPageTemplate({ path: { landing_page_id: "id" }, body: {} });
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
---
|
|
624
|
+
|
|
625
|
+
<a id="op-editlandingpageelement"></a>
|
|
626
|
+
|
|
627
|
+
### `g8.api.landingPages.editLandingPageElement(input)`
|
|
628
|
+
|
|
629
|
+
**Edit Landing Page Element**
|
|
630
|
+
|
|
631
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/edit-element`
|
|
632
|
+
- operationId: `edit_landing_page_element_landing_pages__landing_page_id__edit_element_post` (also callable as `g8.api.call("edit_landing_page_element_landing_pages__landing_page_id__edit_element_post", input)`)
|
|
633
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
634
|
+
- API-key scope: `campaigns:run`
|
|
635
|
+
|
|
636
|
+
Edit ONE element by CSS selector with AI. SPENDS CREDIT.
|
|
637
|
+
|
|
638
|
+
Freeform pages. Narrower and cheaper than `/edit-page`, which rewrites the
|
|
639
|
+
whole document.
|
|
640
|
+
|
|
641
|
+
**Input**
|
|
642
|
+
|
|
643
|
+
| Field | Type | Required | Description |
|
|
644
|
+
|---|---|---|---|
|
|
645
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
646
|
+
| `body` | `EditElementRequest` | yes | Request body; fields below. |
|
|
647
|
+
|
|
648
|
+
Body fields (`EditElementRequest`):
|
|
649
|
+
|
|
650
|
+
| Field | Type | Required | Description |
|
|
651
|
+
|---|---|---|---|
|
|
652
|
+
| `body.instruction` | `string` | yes | |
|
|
653
|
+
| `body.selector` | `string` | yes | |
|
|
654
|
+
|
|
655
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
656
|
+
|
|
657
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
658
|
+
|
|
659
|
+
**Example**
|
|
660
|
+
|
|
661
|
+
```ts
|
|
662
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
663
|
+
const result = await g8.api.landingPages.editLandingPageElement({
|
|
664
|
+
path: { landing_page_id: "id" },
|
|
665
|
+
body: { instruction: "example", selector: "example" },
|
|
666
|
+
});
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
<a id="op-editlandingpagewhole"></a>
|
|
672
|
+
|
|
673
|
+
### `g8.api.landingPages.editLandingPageWhole(input)`
|
|
674
|
+
|
|
675
|
+
**Edit Landing Page Whole**
|
|
676
|
+
|
|
677
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/edit-page`
|
|
678
|
+
- operationId: `edit_landing_page_whole_landing_pages__landing_page_id__edit_page_post` (also callable as `g8.api.call("edit_landing_page_whole_landing_pages__landing_page_id__edit_page_post", input)`)
|
|
679
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
680
|
+
- API-key scope: `campaigns:run`
|
|
681
|
+
|
|
682
|
+
Rewrite the WHOLE page from one instruction. SPENDS CREDIT.
|
|
683
|
+
|
|
684
|
+
The most expensive edit on this router - it puts the entire document
|
|
685
|
+
through the model. Reach for `/edit-element` or `/rewrite-text` first.
|
|
686
|
+
|
|
687
|
+
**Input**
|
|
688
|
+
|
|
689
|
+
| Field | Type | Required | Description |
|
|
690
|
+
|---|---|---|---|
|
|
691
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
692
|
+
| `body` | `EditWithChatRequest` | yes | Request body; fields below. |
|
|
693
|
+
|
|
694
|
+
Body fields (`EditWithChatRequest`):
|
|
695
|
+
|
|
696
|
+
| Field | Type | Required | Description |
|
|
697
|
+
|---|---|---|---|
|
|
698
|
+
| `body.instruction` | `string` | yes | |
|
|
699
|
+
| `body.section_idx` | `integer \| null` | no | |
|
|
700
|
+
| `body.selected_text` | `string \| null` | no | |
|
|
701
|
+
|
|
702
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
703
|
+
|
|
704
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
705
|
+
|
|
706
|
+
**Example**
|
|
707
|
+
|
|
708
|
+
```ts
|
|
709
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
710
|
+
const result = await g8.api.landingPages.editLandingPageWhole({ path: { landing_page_id: "id" }, body: { instruction: "example" } });
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
---
|
|
714
|
+
|
|
715
|
+
<a id="op-editlandingpagewithchat"></a>
|
|
716
|
+
|
|
717
|
+
### `g8.api.landingPages.editLandingPageWithChat(input)`
|
|
718
|
+
|
|
719
|
+
**Edit Landing Page With Chat**
|
|
720
|
+
|
|
721
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/edit`
|
|
722
|
+
- operationId: `edit_landing_page_with_chat_landing_pages__landing_page_id__edit_post` (also callable as `g8.api.call("edit_landing_page_with_chat_landing_pages__landing_page_id__edit_post", input)`)
|
|
723
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
724
|
+
- API-key scope: `campaigns:run`
|
|
725
|
+
|
|
726
|
+
Edit the page from a natural-language instruction. SPENDS CREDIT.
|
|
727
|
+
|
|
728
|
+
The buffered form of the Studio chat edit. The streaming one is
|
|
729
|
+
deliberately not published - see the module docstring.
|
|
730
|
+
|
|
731
|
+
**Input**
|
|
732
|
+
|
|
733
|
+
| Field | Type | Required | Description |
|
|
734
|
+
|---|---|---|---|
|
|
735
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
736
|
+
| `body` | `EditWithChatRequest` | yes | Request body; fields below. |
|
|
737
|
+
|
|
738
|
+
Body fields (`EditWithChatRequest`):
|
|
739
|
+
|
|
740
|
+
| Field | Type | Required | Description |
|
|
741
|
+
|---|---|---|---|
|
|
742
|
+
| `body.instruction` | `string` | yes | |
|
|
743
|
+
| `body.section_idx` | `integer \| null` | no | |
|
|
744
|
+
| `body.selected_text` | `string \| null` | no | |
|
|
745
|
+
|
|
746
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
747
|
+
|
|
748
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
749
|
+
|
|
750
|
+
**Example**
|
|
751
|
+
|
|
752
|
+
```ts
|
|
753
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
754
|
+
const result = await g8.api.landingPages.editLandingPageWithChat({ path: { landing_page_id: "id" }, body: { instruction: "example" } });
|
|
755
|
+
```
|
|
756
|
+
|
|
757
|
+
---
|
|
758
|
+
|
|
759
|
+
<a id="op-ensurelandingpagebasetemplate"></a>
|
|
760
|
+
|
|
761
|
+
### `g8.api.landingPages.ensureLandingPageBaseTemplate(input?)`
|
|
762
|
+
|
|
763
|
+
**Ensure Landing Page Base Template**
|
|
764
|
+
|
|
765
|
+
- HTTP: `POST /api/v1/landing-pages/ensure-base-template`
|
|
766
|
+
- operationId: `ensure_landing_page_base_template_landing_pages_ensure_base_template_post` (also callable as `g8.api.call("ensure_landing_page_base_template_landing_pages_ensure_base_template_post", input)`)
|
|
767
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
768
|
+
- API-key scope: `campaigns:run`
|
|
769
|
+
|
|
770
|
+
Return the org's base template, creating it if there is none.
|
|
771
|
+
|
|
772
|
+
IDEMPOTENT: it returns the existing template when one exists and spends
|
|
773
|
+
nothing. It SPENDS CREDIT only on the first call for an org, where it
|
|
774
|
+
clones the homepage to make one.
|
|
775
|
+
|
|
776
|
+
**Input**: none.
|
|
777
|
+
|
|
778
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
779
|
+
|
|
780
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
781
|
+
|
|
782
|
+
**Example**
|
|
783
|
+
|
|
784
|
+
```ts
|
|
785
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
786
|
+
const result = await g8.api.landingPages.ensureLandingPageBaseTemplate();
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
---
|
|
790
|
+
|
|
791
|
+
<a id="op-exportlandingpage"></a>
|
|
792
|
+
|
|
793
|
+
### `g8.api.landingPages.exportLandingPage(input)`
|
|
794
|
+
|
|
795
|
+
**Export Landing Page**
|
|
796
|
+
|
|
797
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/export`
|
|
798
|
+
- operationId: `export_landing_page_landing_pages__landing_page_id__export_get` (also callable as `g8.api.call("export_landing_page_landing_pages__landing_page_id__export_get", input)`)
|
|
799
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
800
|
+
- API-key scope: `campaigns:read`
|
|
801
|
+
|
|
802
|
+
The page as one self-contained HTML document. FREE.
|
|
803
|
+
|
|
804
|
+
For hosting the page yourself: styles and assets are inlined, so the
|
|
805
|
+
document renders without graph8.
|
|
806
|
+
|
|
807
|
+
**Input**
|
|
808
|
+
|
|
809
|
+
| Field | Type | Required | Description |
|
|
810
|
+
|---|---|---|---|
|
|
811
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
812
|
+
|
|
813
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `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.landingPages.exportLandingPage({ path: { landing_page_id: "id" } });
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
---
|
|
824
|
+
|
|
825
|
+
<a id="op-extractlandingpagecomponents"></a>
|
|
826
|
+
|
|
827
|
+
### `g8.api.landingPages.extractLandingPageComponents(input?)`
|
|
828
|
+
|
|
829
|
+
**Extract Landing Page Components**
|
|
830
|
+
|
|
831
|
+
- HTTP: `POST /api/v1/landing-pages/components/extract`
|
|
832
|
+
- operationId: `extract_landing_page_components_landing_pages_components_extract_post` (also callable as `g8.api.call("extract_landing_page_components_landing_pages_components_extract_post", input)`)
|
|
833
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
834
|
+
- API-key scope: `campaigns:run`
|
|
835
|
+
|
|
836
|
+
Re-extract components from the cloned homepage. SPENDS CREDIT.
|
|
837
|
+
|
|
838
|
+
The same work `GET /components` returns the cached result of, run again on
|
|
839
|
+
purpose - use the GET unless the homepage clone has changed.
|
|
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
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
857
|
+
const result = await g8.api.landingPages.extractLandingPageComponents();
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
---
|
|
861
|
+
|
|
862
|
+
<a id="op-fixlandingpagefindingwithai"></a>
|
|
863
|
+
|
|
864
|
+
### `g8.api.landingPages.fixLandingPageFindingWithAi(input)`
|
|
865
|
+
|
|
866
|
+
**Fix Landing Page Finding With Ai**
|
|
867
|
+
|
|
868
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/ai-review/fix-with-ai`
|
|
869
|
+
- operationId: `fix_landing_page_finding_with_ai_landing_pages__landing_page_id__ai_review_fix_with_ai_post` (also callable as `g8.api.call("fix_landing_page_finding_with_ai_landing_pages__landing_page_id__ai_review_fix_with_ai_post", input)`)
|
|
870
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
871
|
+
- API-key scope: `campaigns:run`
|
|
872
|
+
|
|
873
|
+
Send ONE finding to the edit engine. SPENDS CREDIT, per finding.
|
|
874
|
+
|
|
875
|
+
One call per finding: fixing ten findings is ten passes, not one.
|
|
876
|
+
|
|
877
|
+
**Input**
|
|
878
|
+
|
|
879
|
+
| Field | Type | Required | Description |
|
|
880
|
+
|---|---|---|---|
|
|
881
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
882
|
+
| `body` | `AIReviewFixWithAIRequest` | yes | Request body; fields below. |
|
|
883
|
+
|
|
884
|
+
Body fields (`AIReviewFixWithAIRequest`):
|
|
885
|
+
|
|
886
|
+
| Field | Type | Required | Description |
|
|
887
|
+
|---|---|---|---|
|
|
888
|
+
| `body.finding` | `Record<string, unknown>` | yes | |
|
|
889
|
+
| `body.brand_mode` | `string \| null` | no | |
|
|
890
|
+
|
|
891
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
892
|
+
|
|
893
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
894
|
+
|
|
895
|
+
**Example**
|
|
896
|
+
|
|
897
|
+
```ts
|
|
898
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
899
|
+
const result = await g8.api.landingPages.fixLandingPageFindingWithAi({ path: { landing_page_id: "id" }, body: { finding: {} } });
|
|
900
|
+
```
|
|
901
|
+
|
|
902
|
+
---
|
|
903
|
+
|
|
904
|
+
<a id="op-generatelandingpageseometadata"></a>
|
|
905
|
+
|
|
906
|
+
### `g8.api.landingPages.generateLandingPageSeoMetadata(input)`
|
|
907
|
+
|
|
908
|
+
**Generate Landing Page Seo Metadata**
|
|
909
|
+
|
|
910
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/generate-seo-metadata`
|
|
911
|
+
- operationId: `generate_landing_page_seo_metadata_landing_pages__landing_page_id__generate_seo_metadata_post` (also callable as `g8.api.call("generate_landing_page_seo_metadata_landing_pages__landing_page_id__generate_seo_metadata_post", input)`)
|
|
912
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
913
|
+
- API-key scope: `campaigns:run`
|
|
914
|
+
|
|
915
|
+
Derive title, description and keywords from the page. SPENDS CREDIT.
|
|
916
|
+
|
|
917
|
+
**Input**
|
|
918
|
+
|
|
919
|
+
| Field | Type | Required | Description |
|
|
920
|
+
|---|---|---|---|
|
|
921
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
922
|
+
|
|
923
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
924
|
+
|
|
925
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
926
|
+
|
|
927
|
+
**Example**
|
|
928
|
+
|
|
929
|
+
```ts
|
|
930
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
931
|
+
const result = await g8.api.landingPages.generateLandingPageSeoMetadata({ path: { landing_page_id: "id" } });
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
---
|
|
935
|
+
|
|
936
|
+
<a id="op-getlandingpage"></a>
|
|
937
|
+
|
|
938
|
+
### `g8.api.landingPages.getLandingPage(input)`
|
|
939
|
+
|
|
940
|
+
**Get Landing Page**
|
|
941
|
+
|
|
942
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}`
|
|
943
|
+
- operationId: `get_landing_page_landing_pages__landing_page_id__get` (also callable as `g8.api.call("get_landing_page_landing_pages__landing_page_id__get", input)`)
|
|
944
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
945
|
+
- API-key scope: `campaigns:read`
|
|
946
|
+
|
|
947
|
+
One page with its full detail, including its HTML. FREE.
|
|
948
|
+
|
|
949
|
+
**Input**
|
|
950
|
+
|
|
951
|
+
| Field | Type | Required | Description |
|
|
952
|
+
|---|---|---|---|
|
|
953
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
954
|
+
|
|
955
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
956
|
+
|
|
957
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
958
|
+
|
|
959
|
+
**Example**
|
|
960
|
+
|
|
961
|
+
```ts
|
|
962
|
+
const result = await g8.api.landingPages.getLandingPage({ path: { landing_page_id: "id" } });
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
---
|
|
966
|
+
|
|
967
|
+
<a id="op-getlandingpageconsentdefault"></a>
|
|
968
|
+
|
|
969
|
+
### `g8.api.landingPages.getLandingPageConsentDefault(input?)`
|
|
970
|
+
|
|
971
|
+
**Get Landing Page Consent Default**
|
|
972
|
+
|
|
973
|
+
- HTTP: `GET /api/v1/landing-page-consent/default`
|
|
974
|
+
- operationId: `get_landing_page_consent_default_landing_page_consent_default_get` (also callable as `g8.api.call("get_landing_page_consent_default_landing_page_consent_default_get", input)`)
|
|
975
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
976
|
+
- API-key scope: `campaigns:read`
|
|
977
|
+
|
|
978
|
+
The workspace-wide consent gate default. FREE. `consent: null` means none is set.
|
|
979
|
+
|
|
980
|
+
**Input**: none.
|
|
981
|
+
|
|
982
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
983
|
+
|
|
984
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
985
|
+
|
|
986
|
+
**Example**
|
|
987
|
+
|
|
988
|
+
```ts
|
|
989
|
+
const result = await g8.api.landingPages.getLandingPageConsentDefault();
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
---
|
|
993
|
+
|
|
994
|
+
<a id="op-getlandingpageconversation"></a>
|
|
995
|
+
|
|
996
|
+
### `g8.api.landingPages.getLandingPageConversation(input)`
|
|
997
|
+
|
|
998
|
+
**Get Landing Page Conversation**
|
|
999
|
+
|
|
1000
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/conversation`
|
|
1001
|
+
- operationId: `get_landing_page_conversation_landing_pages__landing_page_id__conversation_get` (also callable as `g8.api.call("get_landing_page_conversation_landing_pages__landing_page_id__conversation_get", input)`)
|
|
1002
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1003
|
+
- API-key scope: `campaigns:read`
|
|
1004
|
+
|
|
1005
|
+
The AI edit conversation recorded against this page. FREE.
|
|
1006
|
+
|
|
1007
|
+
Every `/edit`, `/edit-element` and `/edit-page` instruction and the
|
|
1008
|
+
assistant's reply, in order.
|
|
1009
|
+
|
|
1010
|
+
**Input**
|
|
1011
|
+
|
|
1012
|
+
| Field | Type | Required | Description |
|
|
1013
|
+
|---|---|---|---|
|
|
1014
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1015
|
+
|
|
1016
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1017
|
+
|
|
1018
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1019
|
+
|
|
1020
|
+
**Example**
|
|
1021
|
+
|
|
1022
|
+
```ts
|
|
1023
|
+
const result = await g8.api.landingPages.getLandingPageConversation({ path: { landing_page_id: "id" } });
|
|
1024
|
+
```
|
|
1025
|
+
|
|
1026
|
+
---
|
|
1027
|
+
|
|
1028
|
+
<a id="op-getlandingpagedesignsystem"></a>
|
|
1029
|
+
|
|
1030
|
+
### `g8.api.landingPages.getLandingPageDesignSystem(input?)`
|
|
1031
|
+
|
|
1032
|
+
**Get Landing Page Design System**
|
|
1033
|
+
|
|
1034
|
+
- HTTP: `GET /api/v1/landing-pages/design-system`
|
|
1035
|
+
- operationId: `get_landing_page_design_system_landing_pages_design_system_get` (also callable as `g8.api.call("get_landing_page_design_system_landing_pages_design_system_get", input)`)
|
|
1036
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1037
|
+
- API-key scope: `campaigns:read`
|
|
1038
|
+
|
|
1039
|
+
The org's colours, type and spacing, as generation uses them. FREE.
|
|
1040
|
+
|
|
1041
|
+
**Input**: none.
|
|
1042
|
+
|
|
1043
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1044
|
+
|
|
1045
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1046
|
+
|
|
1047
|
+
**Example**
|
|
1048
|
+
|
|
1049
|
+
```ts
|
|
1050
|
+
const result = await g8.api.landingPages.getLandingPageDesignSystem();
|
|
1051
|
+
```
|
|
1052
|
+
|
|
1053
|
+
---
|
|
1054
|
+
|
|
1055
|
+
<a id="op-getlandingpagemanifest"></a>
|
|
1056
|
+
|
|
1057
|
+
### `g8.api.landingPages.getLandingPageManifest(input)`
|
|
1058
|
+
|
|
1059
|
+
**Get Landing Page Manifest**
|
|
1060
|
+
|
|
1061
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/manifest`
|
|
1062
|
+
- operationId: `get_landing_page_manifest_landing_pages__landing_page_id__manifest_get` (also callable as `g8.api.call("get_landing_page_manifest_landing_pages__landing_page_id__manifest_get", input)`)
|
|
1063
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1064
|
+
- API-key scope: `campaigns:read`
|
|
1065
|
+
|
|
1066
|
+
The element manifest. FREE.
|
|
1067
|
+
|
|
1068
|
+
The SOURCE of the `element_id` values `/set-text`, `/update-text` and
|
|
1069
|
+
`/set-media-edit` accept. Read it first - an id invented by hand addresses
|
|
1070
|
+
nothing, and `/import-html` with `reassign_g8_ids` invalidates every id you
|
|
1071
|
+
are holding.
|
|
1072
|
+
|
|
1073
|
+
**Input**
|
|
1074
|
+
|
|
1075
|
+
| Field | Type | Required | Description |
|
|
1076
|
+
|---|---|---|---|
|
|
1077
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1078
|
+
|
|
1079
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1080
|
+
|
|
1081
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1082
|
+
|
|
1083
|
+
**Example**
|
|
1084
|
+
|
|
1085
|
+
```ts
|
|
1086
|
+
const result = await g8.api.landingPages.getLandingPageManifest({ path: { landing_page_id: "id" } });
|
|
1087
|
+
```
|
|
1088
|
+
|
|
1089
|
+
---
|
|
1090
|
+
|
|
1091
|
+
<a id="op-getlandingpagereportingoverview"></a>
|
|
1092
|
+
|
|
1093
|
+
### `g8.api.landingPages.getLandingPageReportingOverview(input?)`
|
|
1094
|
+
|
|
1095
|
+
**Get Landing Page Reporting Overview**
|
|
1096
|
+
|
|
1097
|
+
- HTTP: `GET /api/v1/landing-pages/reporting/overview`
|
|
1098
|
+
- operationId: `get_landing_page_reporting_overview_landing_pages_reporting_overview_get` (also callable as `g8.api.call("get_landing_page_reporting_overview_landing_pages_reporting_overview_get", input)`)
|
|
1099
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1100
|
+
- API-key scope: `campaigns:read`
|
|
1101
|
+
|
|
1102
|
+
Landing-page performance: visits, identified people and companies, conversions. FREE.
|
|
1103
|
+
|
|
1104
|
+
**Input**
|
|
1105
|
+
|
|
1106
|
+
| Field | Type | Required | Description |
|
|
1107
|
+
|---|---|---|---|
|
|
1108
|
+
| `query.days` | `integer` | no | Look-back window in days. default `30` |
|
|
1109
|
+
| `query.page_id` | `Array<string> \| null` | no | Only these pages. Repeat the parameter. |
|
|
1110
|
+
| `query.source` | `"all" \| "paid" \| "email" \| "organic" \| "referral" \| "direct"` | no | Traffic source. default `"all"` |
|
|
1111
|
+
| `query.observed_campaign` | `string \| null` | no | Only this UTM campaign. |
|
|
1112
|
+
|
|
1113
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `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.landingPages.getLandingPageReportingOverview();
|
|
1121
|
+
```
|
|
1122
|
+
|
|
1123
|
+
---
|
|
1124
|
+
|
|
1125
|
+
<a id="op-getlandingpagesource"></a>
|
|
1126
|
+
|
|
1127
|
+
### `g8.api.landingPages.getLandingPageSource(input)`
|
|
1128
|
+
|
|
1129
|
+
**Get Landing Page Source**
|
|
1130
|
+
|
|
1131
|
+
- HTTP: `GET /api/v1/landing-pages/agent-sessions/{session_id}`
|
|
1132
|
+
- operationId: `get_landing_page_source_landing_pages_agent_sessions__session_id__get` (also callable as `g8.api.call("get_landing_page_source_landing_pages_agent_sessions__session_id__get", input)`)
|
|
1133
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1134
|
+
- API-key scope: `landing-pages:read`
|
|
1135
|
+
|
|
1136
|
+
Return exact source for the draft bound to an edit session.
|
|
1137
|
+
|
|
1138
|
+
**Input**
|
|
1139
|
+
|
|
1140
|
+
| Field | Type | Required | Description |
|
|
1141
|
+
|---|---|---|---|
|
|
1142
|
+
| `path.session_id` | `string` | yes | |
|
|
1143
|
+
|
|
1144
|
+
**Returns** `ApiResponse_dict_str__Any__`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1145
|
+
|
|
1146
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1147
|
+
|
|
1148
|
+
**Example**
|
|
1149
|
+
|
|
1150
|
+
```ts
|
|
1151
|
+
const result = await g8.api.landingPages.getLandingPageSource({ path: { session_id: "id" } });
|
|
1152
|
+
```
|
|
1153
|
+
|
|
1154
|
+
---
|
|
1155
|
+
|
|
1156
|
+
<a id="op-getlandingpagestatus"></a>
|
|
1157
|
+
|
|
1158
|
+
### `g8.api.landingPages.getLandingPageStatus(input)`
|
|
1159
|
+
|
|
1160
|
+
**Get Landing Page Status**
|
|
1161
|
+
|
|
1162
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/status`
|
|
1163
|
+
- operationId: `get_landing_page_status_landing_pages__landing_page_id__status_get` (also callable as `g8.api.call("get_landing_page_status_landing_pages__landing_page_id__status_get", input)`)
|
|
1164
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1165
|
+
- API-key scope: `campaigns:read`
|
|
1166
|
+
|
|
1167
|
+
Generation progress for one page. FREE.
|
|
1168
|
+
|
|
1169
|
+
The poll target after `POST /landing-pages` or a clone: generation runs in
|
|
1170
|
+
the background and this says whether the page is still being written.
|
|
1171
|
+
|
|
1172
|
+
**Input**
|
|
1173
|
+
|
|
1174
|
+
| Field | Type | Required | Description |
|
|
1175
|
+
|---|---|---|---|
|
|
1176
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1177
|
+
|
|
1178
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1179
|
+
|
|
1180
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1181
|
+
|
|
1182
|
+
**Example**
|
|
1183
|
+
|
|
1184
|
+
```ts
|
|
1185
|
+
const result = await g8.api.landingPages.getLandingPageStatus({ path: { landing_page_id: "id" } });
|
|
1186
|
+
```
|
|
1187
|
+
|
|
1188
|
+
---
|
|
1189
|
+
|
|
1190
|
+
<a id="op-getlandingpagetracking"></a>
|
|
1191
|
+
|
|
1192
|
+
### `g8.api.landingPages.getLandingPageTracking(input)`
|
|
1193
|
+
|
|
1194
|
+
**Get Landing Page Tracking**
|
|
1195
|
+
|
|
1196
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/tracking`
|
|
1197
|
+
- operationId: `get_landing_page_tracking_landing_pages__landing_page_id__tracking_get` (also callable as `g8.api.call("get_landing_page_tracking_landing_pages__landing_page_id__tracking_get", input)`)
|
|
1198
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1199
|
+
- API-key scope: `campaigns:read`
|
|
1200
|
+
|
|
1201
|
+
The page's tracking mode, form id, chat widget, consent and conversion goal. FREE.
|
|
1202
|
+
|
|
1203
|
+
**Input**
|
|
1204
|
+
|
|
1205
|
+
| Field | Type | Required | Description |
|
|
1206
|
+
|---|---|---|---|
|
|
1207
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1208
|
+
|
|
1209
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1210
|
+
|
|
1211
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1212
|
+
|
|
1213
|
+
**Example**
|
|
1214
|
+
|
|
1215
|
+
```ts
|
|
1216
|
+
const result = await g8.api.landingPages.getLandingPageTracking({ path: { landing_page_id: "id" } });
|
|
1217
|
+
```
|
|
1218
|
+
|
|
1219
|
+
---
|
|
1220
|
+
|
|
1221
|
+
<a id="op-importlandingpagehtml"></a>
|
|
1222
|
+
|
|
1223
|
+
### `g8.api.landingPages.importLandingPageHtml(input)`
|
|
1224
|
+
|
|
1225
|
+
**Import Landing Page Html**
|
|
1226
|
+
|
|
1227
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/import-html`
|
|
1228
|
+
- operationId: `import_landing_page_html_landing_pages__landing_page_id__import_html_post` (also callable as `g8.api.call("import_landing_page_html_landing_pages__landing_page_id__import_html_post", input)`)
|
|
1229
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1230
|
+
- API-key scope: `campaigns:write`
|
|
1231
|
+
|
|
1232
|
+
Import externally edited HTML into the draft. FREE.
|
|
1233
|
+
|
|
1234
|
+
`commit` defaults FALSE, which makes the default call a DRY RUN reporting
|
|
1235
|
+
what would change. Send `commit: true` to write it.
|
|
1236
|
+
|
|
1237
|
+
**Input**
|
|
1238
|
+
|
|
1239
|
+
| Field | Type | Required | Description |
|
|
1240
|
+
|---|---|---|---|
|
|
1241
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1242
|
+
| `body` | `ImportHtmlRequest` | yes | Request body; fields below. |
|
|
1243
|
+
|
|
1244
|
+
Body fields (`ImportHtmlRequest`):
|
|
1245
|
+
|
|
1246
|
+
| Field | Type | Required | Description |
|
|
1247
|
+
|---|---|---|---|
|
|
1248
|
+
| `body.html` | `string` | yes | min length 16, max length 2000000 |
|
|
1249
|
+
| `body.commit` | `boolean` | no | False previews; true writes the draft. default `false` |
|
|
1250
|
+
| `body.confirm_action_rebuild` | `boolean` | no | default `false` |
|
|
1251
|
+
| `body.reassign_g8_ids` | `boolean` | no | default `false` |
|
|
1252
|
+
| `body.reinfer_button_actions` | `boolean` | no | default `false` |
|
|
1253
|
+
| `body.strip_vendor_css` | `boolean` | no | default `false` |
|
|
1254
|
+
|
|
1255
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1256
|
+
|
|
1257
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1258
|
+
|
|
1259
|
+
**Example**
|
|
1260
|
+
|
|
1261
|
+
```ts
|
|
1262
|
+
const result = await g8.api.landingPages.importLandingPageHtml({
|
|
1263
|
+
path: { landing_page_id: "id" },
|
|
1264
|
+
body: { html: "xxxxxxxxxxxxxxxx" },
|
|
1265
|
+
});
|
|
1266
|
+
```
|
|
1267
|
+
|
|
1268
|
+
---
|
|
1269
|
+
|
|
1270
|
+
<a id="op-listlandingpageanchors"></a>
|
|
1271
|
+
|
|
1272
|
+
### `g8.api.landingPages.listLandingPageAnchors(input)`
|
|
1273
|
+
|
|
1274
|
+
**List Landing Page Anchors**
|
|
1275
|
+
|
|
1276
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/anchors`
|
|
1277
|
+
- operationId: `list_landing_page_anchors_landing_pages__landing_page_id__anchors_get` (also callable as `g8.api.call("list_landing_page_anchors_landing_pages__landing_page_id__anchors_get", input)`)
|
|
1278
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1279
|
+
- API-key scope: `campaigns:read`
|
|
1280
|
+
|
|
1281
|
+
The page's named anchors. FREE - the valid targets for an in-page link.
|
|
1282
|
+
|
|
1283
|
+
**Input**
|
|
1284
|
+
|
|
1285
|
+
| Field | Type | Required | Description |
|
|
1286
|
+
|---|---|---|---|
|
|
1287
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1288
|
+
|
|
1289
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1290
|
+
|
|
1291
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1292
|
+
|
|
1293
|
+
`StudioContentListPayload` fields:
|
|
1294
|
+
|
|
1295
|
+
| Field | Type | Required | Description |
|
|
1296
|
+
|---|---|---|---|
|
|
1297
|
+
| `items` | `Array<unknown>` | no | |
|
|
1298
|
+
|
|
1299
|
+
**Example**
|
|
1300
|
+
|
|
1301
|
+
```ts
|
|
1302
|
+
const result = await g8.api.landingPages.listLandingPageAnchors({ path: { landing_page_id: "id" } });
|
|
1303
|
+
```
|
|
1304
|
+
|
|
1305
|
+
---
|
|
1306
|
+
|
|
1307
|
+
<a id="op-listlandingpagebindings"></a>
|
|
1308
|
+
|
|
1309
|
+
### `g8.api.landingPages.listLandingPageBindings(input)`
|
|
1310
|
+
|
|
1311
|
+
**List Landing Page Bindings**
|
|
1312
|
+
|
|
1313
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/bindings`
|
|
1314
|
+
- operationId: `list_landing_page_bindings_landing_pages__landing_page_id__bindings_get` (also callable as `g8.api.call("list_landing_page_bindings_landing_pages__landing_page_id__bindings_get", input)`)
|
|
1315
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1316
|
+
- API-key scope: `campaigns:read`
|
|
1317
|
+
|
|
1318
|
+
Every URL this page is currently served at. FREE.
|
|
1319
|
+
|
|
1320
|
+
One page can be bound to several. Read this before unpublishing, because
|
|
1321
|
+
unpublishing drops all of them at once.
|
|
1322
|
+
|
|
1323
|
+
**Input**
|
|
1324
|
+
|
|
1325
|
+
| Field | Type | Required | Description |
|
|
1326
|
+
|---|---|---|---|
|
|
1327
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1328
|
+
|
|
1329
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1330
|
+
|
|
1331
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1332
|
+
|
|
1333
|
+
`StudioContentListPayload` fields:
|
|
1334
|
+
|
|
1335
|
+
| Field | Type | Required | Description |
|
|
1336
|
+
|---|---|---|---|
|
|
1337
|
+
| `items` | `Array<unknown>` | no | |
|
|
1338
|
+
|
|
1339
|
+
**Example**
|
|
1340
|
+
|
|
1341
|
+
```ts
|
|
1342
|
+
const result = await g8.api.landingPages.listLandingPageBindings({ path: { landing_page_id: "id" } });
|
|
1343
|
+
```
|
|
1344
|
+
|
|
1345
|
+
---
|
|
1346
|
+
|
|
1347
|
+
<a id="op-listlandingpagecomponents"></a>
|
|
1348
|
+
|
|
1349
|
+
### `g8.api.landingPages.listLandingPageComponents(input?)`
|
|
1350
|
+
|
|
1351
|
+
**List Landing Page Components**
|
|
1352
|
+
|
|
1353
|
+
- HTTP: `GET /api/v1/landing-pages/components`
|
|
1354
|
+
- operationId: `list_landing_page_components_landing_pages_components_get` (also callable as `g8.api.call("list_landing_page_components_landing_pages_components_get", input)`)
|
|
1355
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1356
|
+
- API-key scope: `campaigns:read`
|
|
1357
|
+
|
|
1358
|
+
UI components extracted from the org's cloned homepage. FREE.
|
|
1359
|
+
|
|
1360
|
+
Reads what a previous extraction stored. `POST /components/extract` is the
|
|
1361
|
+
one that re-derives them.
|
|
1362
|
+
|
|
1363
|
+
**Input**: none.
|
|
1364
|
+
|
|
1365
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1366
|
+
|
|
1367
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1368
|
+
|
|
1369
|
+
`StudioContentListPayload` fields:
|
|
1370
|
+
|
|
1371
|
+
| Field | Type | Required | Description |
|
|
1372
|
+
|---|---|---|---|
|
|
1373
|
+
| `items` | `Array<unknown>` | no | |
|
|
1374
|
+
|
|
1375
|
+
**Example**
|
|
1376
|
+
|
|
1377
|
+
```ts
|
|
1378
|
+
const result = await g8.api.landingPages.listLandingPageComponents();
|
|
1379
|
+
```
|
|
1380
|
+
|
|
1381
|
+
---
|
|
1382
|
+
|
|
1383
|
+
<a id="op-listlandingpageconsentstatus"></a>
|
|
1384
|
+
|
|
1385
|
+
### `g8.api.landingPages.listLandingPageConsentStatus(input?)`
|
|
1386
|
+
|
|
1387
|
+
**List Landing Page Consent Status**
|
|
1388
|
+
|
|
1389
|
+
- HTTP: `GET /api/v1/landing-page-consent/pages`
|
|
1390
|
+
- operationId: `list_landing_page_consent_status_landing_page_consent_pages_get` (also callable as `g8.api.call("list_landing_page_consent_status_landing_page_consent_pages_get", input)`)
|
|
1391
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1392
|
+
- API-key scope: `campaigns:read`
|
|
1393
|
+
|
|
1394
|
+
Per published page: is the consent gate ACTUALLY live on it. FREE.
|
|
1395
|
+
|
|
1396
|
+
Read from the published HTML, not the settings - `stale_count` is how
|
|
1397
|
+
many pages need a re-publish to pick up the current configuration.
|
|
1398
|
+
|
|
1399
|
+
**Input**: none.
|
|
1400
|
+
|
|
1401
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1402
|
+
|
|
1403
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1404
|
+
|
|
1405
|
+
`StudioContentListPayload` fields:
|
|
1406
|
+
|
|
1407
|
+
| Field | Type | Required | Description |
|
|
1408
|
+
|---|---|---|---|
|
|
1409
|
+
| `items` | `Array<unknown>` | no | |
|
|
1410
|
+
|
|
1411
|
+
**Example**
|
|
1412
|
+
|
|
1413
|
+
```ts
|
|
1414
|
+
const result = await g8.api.landingPages.listLandingPageConsentStatus();
|
|
1415
|
+
```
|
|
1416
|
+
|
|
1417
|
+
---
|
|
1418
|
+
|
|
1419
|
+
<a id="op-listlandingpagedomains"></a>
|
|
1420
|
+
|
|
1421
|
+
### `g8.api.landingPages.listLandingPageDomains(input?)`
|
|
1422
|
+
|
|
1423
|
+
**List Landing Page Domains**
|
|
1424
|
+
|
|
1425
|
+
- HTTP: `GET /api/v1/landing-pages/domains`
|
|
1426
|
+
- operationId: `list_landing_page_domains_landing_pages_domains_get` (also callable as `g8.api.call("list_landing_page_domains_landing_pages_domains_get", input)`)
|
|
1427
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1428
|
+
- API-key scope: `campaigns:read`
|
|
1429
|
+
|
|
1430
|
+
The domains a page can be published on. FREE.
|
|
1431
|
+
|
|
1432
|
+
The org's verified custom domains plus the default hosted domain - the
|
|
1433
|
+
valid values for `domain` on `POST /landing-pages/{id}/publish`.
|
|
1434
|
+
|
|
1435
|
+
**Input**: none.
|
|
1436
|
+
|
|
1437
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1438
|
+
|
|
1439
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1440
|
+
|
|
1441
|
+
`StudioContentListPayload` fields:
|
|
1442
|
+
|
|
1443
|
+
| Field | Type | Required | Description |
|
|
1444
|
+
|---|---|---|---|
|
|
1445
|
+
| `items` | `Array<unknown>` | no | |
|
|
1446
|
+
|
|
1447
|
+
**Example**
|
|
1448
|
+
|
|
1449
|
+
```ts
|
|
1450
|
+
const result = await g8.api.landingPages.listLandingPageDomains();
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
---
|
|
1454
|
+
|
|
1455
|
+
<a id="op-listlandingpagereportingcompanies"></a>
|
|
1456
|
+
|
|
1457
|
+
### `g8.api.landingPages.listLandingPageReportingCompanies(input?)`
|
|
1458
|
+
|
|
1459
|
+
**List Landing Page Reporting Companies**
|
|
1460
|
+
|
|
1461
|
+
- HTTP: `GET /api/v1/landing-pages/reporting/companies`
|
|
1462
|
+
- operationId: `list_landing_page_reporting_companies_landing_pages_reporting_companies_get` (also callable as `g8.api.call("list_landing_page_reporting_companies_landing_pages_reporting_companies_get", input)`)
|
|
1463
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1464
|
+
- API-key scope: `campaigns:read`
|
|
1465
|
+
|
|
1466
|
+
The COMPANIES whose people visited. FREE. Page with `cursor`.
|
|
1467
|
+
|
|
1468
|
+
**Input**
|
|
1469
|
+
|
|
1470
|
+
| Field | Type | Required | Description |
|
|
1471
|
+
|---|---|---|---|
|
|
1472
|
+
| `query.cursor` | `integer` | no | default `0` |
|
|
1473
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
1474
|
+
| `query.days` | `integer` | no | Look-back window in days. default `30` |
|
|
1475
|
+
| `query.page_id` | `Array<string> \| null` | no | Only these pages. Repeat the parameter. |
|
|
1476
|
+
| `query.source` | `"all" \| "paid" \| "email" \| "organic" \| "referral" \| "direct"` | no | Traffic source. default `"all"` |
|
|
1477
|
+
| `query.observed_campaign` | `string \| null` | no | Only this UTM campaign. |
|
|
1478
|
+
|
|
1479
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1480
|
+
|
|
1481
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1482
|
+
|
|
1483
|
+
`StudioContentListPayload` fields:
|
|
1484
|
+
|
|
1485
|
+
| Field | Type | Required | Description |
|
|
1486
|
+
|---|---|---|---|
|
|
1487
|
+
| `items` | `Array<unknown>` | no | |
|
|
1488
|
+
|
|
1489
|
+
**Example**
|
|
1490
|
+
|
|
1491
|
+
```ts
|
|
1492
|
+
const result = await g8.api.landingPages.listLandingPageReportingCompanies();
|
|
1493
|
+
```
|
|
1494
|
+
|
|
1495
|
+
---
|
|
1496
|
+
|
|
1497
|
+
<a id="op-listlandingpagereportingpeople"></a>
|
|
1498
|
+
|
|
1499
|
+
### `g8.api.landingPages.listLandingPageReportingPeople(input?)`
|
|
1500
|
+
|
|
1501
|
+
**List Landing Page Reporting People**
|
|
1502
|
+
|
|
1503
|
+
- HTTP: `GET /api/v1/landing-pages/reporting/people`
|
|
1504
|
+
- operationId: `list_landing_page_reporting_people_landing_pages_reporting_people_get` (also callable as `g8.api.call("list_landing_page_reporting_people_landing_pages_reporting_people_get", input)`)
|
|
1505
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1506
|
+
- API-key scope: `campaigns:read`
|
|
1507
|
+
|
|
1508
|
+
The identified PEOPLE who visited, with what they viewed. FREE. Page with `cursor`.
|
|
1509
|
+
|
|
1510
|
+
**Input**
|
|
1511
|
+
|
|
1512
|
+
| Field | Type | Required | Description |
|
|
1513
|
+
|---|---|---|---|
|
|
1514
|
+
| `query.cursor` | `integer` | no | default `0` |
|
|
1515
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
1516
|
+
| `query.days` | `integer` | no | Look-back window in days. default `30` |
|
|
1517
|
+
| `query.page_id` | `Array<string> \| null` | no | Only these pages. Repeat the parameter. |
|
|
1518
|
+
| `query.source` | `"all" \| "paid" \| "email" \| "organic" \| "referral" \| "direct"` | no | Traffic source. default `"all"` |
|
|
1519
|
+
| `query.observed_campaign` | `string \| null` | no | Only this UTM campaign. |
|
|
1520
|
+
|
|
1521
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1522
|
+
|
|
1523
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1524
|
+
|
|
1525
|
+
`StudioContentListPayload` fields:
|
|
1526
|
+
|
|
1527
|
+
| Field | Type | Required | Description |
|
|
1528
|
+
|---|---|---|---|
|
|
1529
|
+
| `items` | `Array<unknown>` | no | |
|
|
1530
|
+
|
|
1531
|
+
**Example**
|
|
1532
|
+
|
|
1533
|
+
```ts
|
|
1534
|
+
const result = await g8.api.landingPages.listLandingPageReportingPeople();
|
|
1535
|
+
```
|
|
1536
|
+
|
|
1537
|
+
---
|
|
1538
|
+
|
|
1539
|
+
<a id="op-listlandingpageversions"></a>
|
|
1540
|
+
|
|
1541
|
+
### `g8.api.landingPages.listLandingPageVersions(input)`
|
|
1542
|
+
|
|
1543
|
+
**List Landing Page Versions**
|
|
1544
|
+
|
|
1545
|
+
- HTTP: `GET /api/v1/landing-pages/{landing_page_id}/versions`
|
|
1546
|
+
- operationId: `list_landing_page_versions_landing_pages__landing_page_id__versions_get` (also callable as `g8.api.call("list_landing_page_versions_landing_pages__landing_page_id__versions_get", input)`)
|
|
1547
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1548
|
+
- API-key scope: `campaigns:read`
|
|
1549
|
+
|
|
1550
|
+
The page's saved versions, newest first. FREE.
|
|
1551
|
+
|
|
1552
|
+
Every edit route snapshots the page before it changes it; these are the
|
|
1553
|
+
snapshots `POST .../versions/{version_num}/restore` can roll back to.
|
|
1554
|
+
|
|
1555
|
+
**Input**
|
|
1556
|
+
|
|
1557
|
+
| Field | Type | Required | Description |
|
|
1558
|
+
|---|---|---|---|
|
|
1559
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1560
|
+
|
|
1561
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1562
|
+
|
|
1563
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1564
|
+
|
|
1565
|
+
`StudioContentListPayload` fields:
|
|
1566
|
+
|
|
1567
|
+
| Field | Type | Required | Description |
|
|
1568
|
+
|---|---|---|---|
|
|
1569
|
+
| `items` | `Array<unknown>` | no | |
|
|
1570
|
+
|
|
1571
|
+
**Example**
|
|
1572
|
+
|
|
1573
|
+
```ts
|
|
1574
|
+
const result = await g8.api.landingPages.listLandingPageVersions({ path: { landing_page_id: "id" } });
|
|
1575
|
+
```
|
|
1576
|
+
|
|
1577
|
+
---
|
|
1578
|
+
|
|
1579
|
+
<a id="op-listlandingpages"></a>
|
|
1580
|
+
|
|
1581
|
+
### `g8.api.landingPages.listLandingPages(input?)`
|
|
1582
|
+
|
|
1583
|
+
**List Landing Pages**
|
|
1584
|
+
|
|
1585
|
+
- HTTP: `GET /api/v1/landing-pages`
|
|
1586
|
+
- operationId: `list_landing_pages_landing_pages_get` (also callable as `g8.api.call("list_landing_pages_landing_pages_get", input)`)
|
|
1587
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1588
|
+
- API-key scope: `campaigns:read`
|
|
1589
|
+
|
|
1590
|
+
Every landing page in the org. FREE.
|
|
1591
|
+
|
|
1592
|
+
**Input**
|
|
1593
|
+
|
|
1594
|
+
| Field | Type | Required | Description |
|
|
1595
|
+
|---|---|---|---|
|
|
1596
|
+
| `query.status` | `string \| null` | no | Filter by page status (draft, published, ...). |
|
|
1597
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
1598
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
1599
|
+
|
|
1600
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1601
|
+
|
|
1602
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1603
|
+
|
|
1604
|
+
`StudioContentListPayload` fields:
|
|
1605
|
+
|
|
1606
|
+
| Field | Type | Required | Description |
|
|
1607
|
+
|---|---|---|---|
|
|
1608
|
+
| `items` | `Array<unknown>` | no | |
|
|
1609
|
+
|
|
1610
|
+
**Example**
|
|
1611
|
+
|
|
1612
|
+
```ts
|
|
1613
|
+
const result = await g8.api.landingPages.listLandingPages();
|
|
1614
|
+
```
|
|
1615
|
+
|
|
1616
|
+
---
|
|
1617
|
+
|
|
1618
|
+
<a id="op-patchlandingpage"></a>
|
|
1619
|
+
|
|
1620
|
+
### `g8.api.landingPages.patchLandingPage(input)`
|
|
1621
|
+
|
|
1622
|
+
**Patch Landing Page**
|
|
1623
|
+
|
|
1624
|
+
- HTTP: `POST /api/v1/landing-pages/agent-sessions/{session_id}/patch`
|
|
1625
|
+
- operationId: `patch_landing_page_landing_pages_agent_sessions__session_id__patch_post` (also callable as `g8.api.call("patch_landing_page_landing_pages_agent_sessions__session_id__patch_post", input)`)
|
|
1626
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1627
|
+
- API-key scope: `landing-pages:write`
|
|
1628
|
+
|
|
1629
|
+
Submit an exact patch using the handoff's selected approval mode.
|
|
1630
|
+
|
|
1631
|
+
**Input**
|
|
1632
|
+
|
|
1633
|
+
| Field | Type | Required | Description |
|
|
1634
|
+
|---|---|---|---|
|
|
1635
|
+
| `path.session_id` | `string` | yes | |
|
|
1636
|
+
| `body` | `LandingPagePatchRequest` | yes | Request body; fields below. |
|
|
1637
|
+
|
|
1638
|
+
Body fields (`LandingPagePatchRequest`):
|
|
1639
|
+
|
|
1640
|
+
| Field | Type | Required | Description |
|
|
1641
|
+
|---|---|---|---|
|
|
1642
|
+
| `body.base_sha256` | `string` | yes | pattern `^[a-f0-9]{64}$` |
|
|
1643
|
+
| `body.idempotency_key` | `string` | yes | min length 8, max length 128, pattern `^[A-Za-z0-9._:-]+$` |
|
|
1644
|
+
| `body.replacements` | `Array<ExactReplacementRequest>` | yes | min items 1, max items 20 |
|
|
1645
|
+
| `body.summary` | `string` | no | default `"External AI edit"`, max length 500 |
|
|
1646
|
+
|
|
1647
|
+
**Returns** `ApiResponse_dict_str__Any__`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1648
|
+
|
|
1649
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1650
|
+
|
|
1651
|
+
**Example**
|
|
1652
|
+
|
|
1653
|
+
```ts
|
|
1654
|
+
const result = await g8.api.landingPages.patchLandingPage({
|
|
1655
|
+
path: { session_id: "id" },
|
|
1656
|
+
body: {
|
|
1657
|
+
base_sha256: "example",
|
|
1658
|
+
idempotency_key: "xxxxxxxx",
|
|
1659
|
+
replacements: [{ new: "example", old: "example" }],
|
|
1660
|
+
},
|
|
1661
|
+
});
|
|
1662
|
+
```
|
|
1663
|
+
|
|
1664
|
+
---
|
|
1665
|
+
|
|
1666
|
+
<a id="op-promotelandingpagetemplate"></a>
|
|
1667
|
+
|
|
1668
|
+
### `g8.api.landingPages.promoteLandingPageTemplate(input)`
|
|
1669
|
+
|
|
1670
|
+
**Promote Landing Page Template**
|
|
1671
|
+
|
|
1672
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/promote-to-page`
|
|
1673
|
+
- operationId: `promote_landing_page_template_landing_pages__landing_page_id__promote_to_page_post` (also callable as `g8.api.call("promote_landing_page_template_landing_pages__landing_page_id__promote_to_page_post", input)`)
|
|
1674
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1675
|
+
- API-key scope: `campaigns:write`
|
|
1676
|
+
|
|
1677
|
+
Turn a template INTO a page. FREE.
|
|
1678
|
+
|
|
1679
|
+
It MOVES the row rather than copying it - the template stops being a
|
|
1680
|
+
template. `/save-as-page` is the copying version, and `/demote-to-template`
|
|
1681
|
+
is the inverse of this one.
|
|
1682
|
+
|
|
1683
|
+
**Input**
|
|
1684
|
+
|
|
1685
|
+
| Field | Type | Required | Description |
|
|
1686
|
+
|---|---|---|---|
|
|
1687
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1688
|
+
|
|
1689
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1690
|
+
|
|
1691
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1692
|
+
|
|
1693
|
+
**Example**
|
|
1694
|
+
|
|
1695
|
+
```ts
|
|
1696
|
+
const result = await g8.api.landingPages.promoteLandingPageTemplate({ path: { landing_page_id: "id" } });
|
|
1697
|
+
```
|
|
1698
|
+
|
|
1699
|
+
---
|
|
1700
|
+
|
|
1701
|
+
<a id="op-provisionlandingpagetracking"></a>
|
|
1702
|
+
|
|
1703
|
+
### `g8.api.landingPages.provisionLandingPageTracking(input)`
|
|
1704
|
+
|
|
1705
|
+
**Provision Landing Page Tracking**
|
|
1706
|
+
|
|
1707
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/tracking/provision`
|
|
1708
|
+
- operationId: `provision_landing_page_tracking_landing_pages__landing_page_id__tracking_provision_post` (also callable as `g8.api.call("provision_landing_page_tracking_landing_pages__landing_page_id__tracking_provision_post", input)`)
|
|
1709
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1710
|
+
- API-key scope: `campaigns:write`
|
|
1711
|
+
|
|
1712
|
+
Give the page its OWN tracking stream and browser key. FREE.
|
|
1713
|
+
|
|
1714
|
+
Switches the page to `dedicated` tracking; takes effect on its next
|
|
1715
|
+
publish. The form id label and chat setting are preserved.
|
|
1716
|
+
|
|
1717
|
+
**Input**
|
|
1718
|
+
|
|
1719
|
+
| Field | Type | Required | Description |
|
|
1720
|
+
|---|---|---|---|
|
|
1721
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1722
|
+
|
|
1723
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1724
|
+
|
|
1725
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1726
|
+
|
|
1727
|
+
**Example**
|
|
1728
|
+
|
|
1729
|
+
```ts
|
|
1730
|
+
const result = await g8.api.landingPages.provisionLandingPageTracking({ path: { landing_page_id: "id" } });
|
|
1731
|
+
```
|
|
1732
|
+
|
|
1733
|
+
---
|
|
1734
|
+
|
|
1735
|
+
<a id="op-publishlandingpage"></a>
|
|
1736
|
+
|
|
1737
|
+
### `g8.api.landingPages.publishLandingPage(input)`
|
|
1738
|
+
|
|
1739
|
+
**Publish Landing Page**
|
|
1740
|
+
|
|
1741
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/publish`
|
|
1742
|
+
- operationId: `publish_landing_page_landing_pages__landing_page_id__publish_post` (also callable as `g8.api.call("publish_landing_page_landing_pages__landing_page_id__publish_post", input)`)
|
|
1743
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
1744
|
+
- API-key scope: `campaigns:run`
|
|
1745
|
+
|
|
1746
|
+
Deploy the page to a PUBLIC URL. Real people can reach it immediately.
|
|
1747
|
+
|
|
1748
|
+
Spends no credit, but it is the outward-facing operation on this router
|
|
1749
|
+
and is tiered and gated accordingly - `CAMPAIGNS_LAUNCH`, the same
|
|
1750
|
+
permission the app requires, re-declared on this route because the app's
|
|
1751
|
+
own `Depends` gate does not run on a direct call.
|
|
1752
|
+
|
|
1753
|
+
Omit the body to publish at the page's own slug on the org's default
|
|
1754
|
+
domain. `override: true` takes a URL that is already bound to a DIFFERENT
|
|
1755
|
+
page, and that page stops serving at it.
|
|
1756
|
+
|
|
1757
|
+
Spends nothing.
|
|
1758
|
+
|
|
1759
|
+
**Input**
|
|
1760
|
+
|
|
1761
|
+
| Field | Type | Required | Description |
|
|
1762
|
+
|---|---|---|---|
|
|
1763
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1764
|
+
| `body` | `PublishLandingPageRequest \| null` | no | Request body; fields below. |
|
|
1765
|
+
|
|
1766
|
+
Body fields:
|
|
1767
|
+
|
|
1768
|
+
| Field | Type | Required | Description |
|
|
1769
|
+
|---|---|---|---|
|
|
1770
|
+
| `body.domain` | `string \| null` | no | |
|
|
1771
|
+
| `body.domain_id` | `integer \| null` | no | |
|
|
1772
|
+
| `body.override` | `boolean` | no | Steal a URL already bound to another page. Default false. default `false` |
|
|
1773
|
+
| `body.path` | `string \| null` | no | |
|
|
1774
|
+
| `body.slug` | `string \| null` | no | |
|
|
1775
|
+
| `body.subdomain` | `string \| null` | no | |
|
|
1776
|
+
|
|
1777
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1778
|
+
|
|
1779
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1780
|
+
|
|
1781
|
+
**Example**
|
|
1782
|
+
|
|
1783
|
+
```ts
|
|
1784
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
1785
|
+
const result = await g8.api.landingPages.publishLandingPage({ path: { landing_page_id: "id" } });
|
|
1786
|
+
```
|
|
1787
|
+
|
|
1788
|
+
---
|
|
1789
|
+
|
|
1790
|
+
<a id="op-removelandingpagebinding"></a>
|
|
1791
|
+
|
|
1792
|
+
### `g8.api.landingPages.removeLandingPageBinding(input)`
|
|
1793
|
+
|
|
1794
|
+
**Remove Landing Page Binding**
|
|
1795
|
+
|
|
1796
|
+
- HTTP: `DELETE /api/v1/landing-pages/{landing_page_id}/bindings`
|
|
1797
|
+
- operationId: `remove_landing_page_binding_landing_pages__landing_page_id__bindings_delete` (also callable as `g8.api.call("remove_landing_page_binding_landing_pages__landing_page_id__bindings_delete", input)`)
|
|
1798
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1799
|
+
- API-key scope: `campaigns:delete`
|
|
1800
|
+
|
|
1801
|
+
Stop serving the page at ONE URL. The others keep working.
|
|
1802
|
+
|
|
1803
|
+
The surgical version of `/unpublish`, and outward-facing for the same
|
|
1804
|
+
reason: that URL 404s from this moment. Launch-gated.
|
|
1805
|
+
|
|
1806
|
+
Spends nothing.
|
|
1807
|
+
|
|
1808
|
+
**Input**
|
|
1809
|
+
|
|
1810
|
+
| Field | Type | Required | Description |
|
|
1811
|
+
|---|---|---|---|
|
|
1812
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1813
|
+
| `query.hostname` | `string` | yes | The host to stop serving this page at. |
|
|
1814
|
+
| `query.path` | `string` | no | The path under that host. Defaults to the root. default `"/"` |
|
|
1815
|
+
|
|
1816
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1817
|
+
|
|
1818
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1819
|
+
|
|
1820
|
+
**Example**
|
|
1821
|
+
|
|
1822
|
+
```ts
|
|
1823
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1824
|
+
const result = await g8.api.landingPages.removeLandingPageBinding({ path: { landing_page_id: "id" }, query: { hostname: "Example" } });
|
|
1825
|
+
```
|
|
1826
|
+
|
|
1827
|
+
---
|
|
1828
|
+
|
|
1829
|
+
<a id="op-replacelandingpagehtml"></a>
|
|
1830
|
+
|
|
1831
|
+
### `g8.api.landingPages.replaceLandingPageHtml(input)`
|
|
1832
|
+
|
|
1833
|
+
**Replace Landing Page Html**
|
|
1834
|
+
|
|
1835
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/replace-html`
|
|
1836
|
+
- operationId: `replace_landing_page_html_landing_pages__landing_page_id__replace_html_post` (also callable as `g8.api.call("replace_landing_page_html_landing_pages__landing_page_id__replace_html_post", input)`)
|
|
1837
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1838
|
+
- API-key scope: `campaigns:write`
|
|
1839
|
+
|
|
1840
|
+
Persist a whole-page snapshot. FREE.
|
|
1841
|
+
|
|
1842
|
+
Wholesale: whatever is not in `html` is gone. It creates a restorable
|
|
1843
|
+
version first, which is the only thing standing between a bad snapshot and
|
|
1844
|
+
a lost page.
|
|
1845
|
+
|
|
1846
|
+
**Input**
|
|
1847
|
+
|
|
1848
|
+
| Field | Type | Required | Description |
|
|
1849
|
+
|---|---|---|---|
|
|
1850
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1851
|
+
| `body` | `ReplaceHtmlRequest` | yes | Request body; fields below. |
|
|
1852
|
+
|
|
1853
|
+
Body fields (`ReplaceHtmlRequest`):
|
|
1854
|
+
|
|
1855
|
+
| Field | Type | Required | Description |
|
|
1856
|
+
|---|---|---|---|
|
|
1857
|
+
| `body.html` | `string` | yes | max length 2000000 |
|
|
1858
|
+
| `body.edit_instruction` | `string \| null` | no | max length 240 |
|
|
1859
|
+
|
|
1860
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1861
|
+
|
|
1862
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1863
|
+
|
|
1864
|
+
**Example**
|
|
1865
|
+
|
|
1866
|
+
```ts
|
|
1867
|
+
const result = await g8.api.landingPages.replaceLandingPageHtml({ path: { landing_page_id: "id" }, body: { html: "example" } });
|
|
1868
|
+
```
|
|
1869
|
+
|
|
1870
|
+
---
|
|
1871
|
+
|
|
1872
|
+
<a id="op-restorelandingpageversion"></a>
|
|
1873
|
+
|
|
1874
|
+
### `g8.api.landingPages.restoreLandingPageVersion(input)`
|
|
1875
|
+
|
|
1876
|
+
**Restore Landing Page Version**
|
|
1877
|
+
|
|
1878
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/versions/{version_num}/restore`
|
|
1879
|
+
- operationId: `restore_landing_page_version_landing_pages__landing_page_id__versions__version_num__restore_post` (also callable as `g8.api.call("restore_landing_page_version_landing_pages__landing_page_id__versions__version_num__restore_post", input)`)
|
|
1880
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1881
|
+
- API-key scope: `campaigns:write`
|
|
1882
|
+
|
|
1883
|
+
Roll the page back to a saved version. FREE - no model runs.
|
|
1884
|
+
|
|
1885
|
+
The current state is snapshotted first, so a restore is itself undoable.
|
|
1886
|
+
A PUBLISHED page keeps serving its published HTML until it is published
|
|
1887
|
+
again.
|
|
1888
|
+
|
|
1889
|
+
**Input**
|
|
1890
|
+
|
|
1891
|
+
| Field | Type | Required | Description |
|
|
1892
|
+
|---|---|---|---|
|
|
1893
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1894
|
+
| `path.version_num` | `integer` | yes | Version number, from `GET .../versions`. |
|
|
1895
|
+
|
|
1896
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1897
|
+
|
|
1898
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1899
|
+
|
|
1900
|
+
**Example**
|
|
1901
|
+
|
|
1902
|
+
```ts
|
|
1903
|
+
const result = await g8.api.landingPages.restoreLandingPageVersion({ path: { landing_page_id: "id", version_num: 1 } });
|
|
1904
|
+
```
|
|
1905
|
+
|
|
1906
|
+
---
|
|
1907
|
+
|
|
1908
|
+
<a id="op-reviewlandingpage"></a>
|
|
1909
|
+
|
|
1910
|
+
### `g8.api.landingPages.reviewLandingPage(input)`
|
|
1911
|
+
|
|
1912
|
+
**Review Landing Page**
|
|
1913
|
+
|
|
1914
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/ai-review`
|
|
1915
|
+
- operationId: `review_landing_page_landing_pages__landing_page_id__ai_review_post` (also callable as `g8.api.call("review_landing_page_landing_pages__landing_page_id__ai_review_post", input)`)
|
|
1916
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1917
|
+
- API-key scope: `campaigns:run`
|
|
1918
|
+
|
|
1919
|
+
Run a review pass and return findings. SPENDS CREDIT.
|
|
1920
|
+
|
|
1921
|
+
It CHANGES NOTHING - the findings are applied by
|
|
1922
|
+
`/ai-review/apply` (free, deterministic) or `/ai-review/fix-with-ai`
|
|
1923
|
+
(another model pass). Reviewing is still a spend even though it is
|
|
1924
|
+
read-only against the page, which is why it is not tiered as a read.
|
|
1925
|
+
|
|
1926
|
+
**Input**
|
|
1927
|
+
|
|
1928
|
+
| Field | Type | Required | Description |
|
|
1929
|
+
|---|---|---|---|
|
|
1930
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1931
|
+
| `body` | `AIReviewRequest \| null` | no | Request body; fields below. |
|
|
1932
|
+
|
|
1933
|
+
Body fields:
|
|
1934
|
+
|
|
1935
|
+
| Field | Type | Required | Description |
|
|
1936
|
+
|---|---|---|---|
|
|
1937
|
+
| `body.deep` | `boolean` | no | default `true` |
|
|
1938
|
+
|
|
1939
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1940
|
+
|
|
1941
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1942
|
+
|
|
1943
|
+
**Example**
|
|
1944
|
+
|
|
1945
|
+
```ts
|
|
1946
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1947
|
+
const result = await g8.api.landingPages.reviewLandingPage({ path: { landing_page_id: "id" } });
|
|
1948
|
+
```
|
|
1949
|
+
|
|
1950
|
+
---
|
|
1951
|
+
|
|
1952
|
+
<a id="op-rewritelandingpagetext"></a>
|
|
1953
|
+
|
|
1954
|
+
### `g8.api.landingPages.rewriteLandingPageText(input)`
|
|
1955
|
+
|
|
1956
|
+
**Rewrite Landing Page Text**
|
|
1957
|
+
|
|
1958
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/rewrite-text`
|
|
1959
|
+
- operationId: `rewrite_landing_page_text_landing_pages__landing_page_id__rewrite_text_post` (also callable as `g8.api.call("rewrite_landing_page_text_landing_pages__landing_page_id__rewrite_text_post", input)`)
|
|
1960
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1961
|
+
- API-key scope: `campaigns:run`
|
|
1962
|
+
|
|
1963
|
+
Rewrite one element's text with AI. SPENDS CREDIT.
|
|
1964
|
+
|
|
1965
|
+
Text only - no HTML is generated - which makes it the cheapest AI edit
|
|
1966
|
+
here and the right one for a copy change.
|
|
1967
|
+
|
|
1968
|
+
**Input**
|
|
1969
|
+
|
|
1970
|
+
| Field | Type | Required | Description |
|
|
1971
|
+
|---|---|---|---|
|
|
1972
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
1973
|
+
| `body` | `LandingPageRewriteTextRequest` | yes | Request body; fields below. |
|
|
1974
|
+
|
|
1975
|
+
Body fields (`LandingPageRewriteTextRequest`):
|
|
1976
|
+
|
|
1977
|
+
| Field | Type | Required | Description |
|
|
1978
|
+
|---|---|---|---|
|
|
1979
|
+
| `body.instruction` | `string` | yes | |
|
|
1980
|
+
| `body.selected_element` | `SelectedElementPayload` | yes | |
|
|
1981
|
+
|
|
1982
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1983
|
+
|
|
1984
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1985
|
+
|
|
1986
|
+
**Example**
|
|
1987
|
+
|
|
1988
|
+
```ts
|
|
1989
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1990
|
+
const result = await g8.api.landingPages.rewriteLandingPageText({
|
|
1991
|
+
path: { landing_page_id: "id" },
|
|
1992
|
+
body: {
|
|
1993
|
+
instruction: "example",
|
|
1994
|
+
selected_element: { element_id: "id", tag: "example" },
|
|
1995
|
+
},
|
|
1996
|
+
});
|
|
1997
|
+
```
|
|
1998
|
+
|
|
1999
|
+
---
|
|
2000
|
+
|
|
2001
|
+
<a id="op-savelandingpagetemplateaspage"></a>
|
|
2002
|
+
|
|
2003
|
+
### `g8.api.landingPages.saveLandingPageTemplateAsPage(input)`
|
|
2004
|
+
|
|
2005
|
+
**Save Landing Page Template As Page**
|
|
2006
|
+
|
|
2007
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/save-as-page`
|
|
2008
|
+
- operationId: `save_landing_page_template_as_page_landing_pages__landing_page_id__save_as_page_post` (also callable as `g8.api.call("save_landing_page_template_as_page_landing_pages__landing_page_id__save_as_page_post", input)`)
|
|
2009
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2010
|
+
- API-key scope: `campaigns:write`
|
|
2011
|
+
|
|
2012
|
+
Copy an org TEMPLATE into a new editable page. FREE.
|
|
2013
|
+
|
|
2014
|
+
The template is untouched, which is the difference from
|
|
2015
|
+
`/promote-to-page`: that one MOVES the template out of the template list.
|
|
2016
|
+
|
|
2017
|
+
**Input**
|
|
2018
|
+
|
|
2019
|
+
| Field | Type | Required | Description |
|
|
2020
|
+
|---|---|---|---|
|
|
2021
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2022
|
+
|
|
2023
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2024
|
+
|
|
2025
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2026
|
+
|
|
2027
|
+
**Example**
|
|
2028
|
+
|
|
2029
|
+
```ts
|
|
2030
|
+
const result = await g8.api.landingPages.saveLandingPageTemplateAsPage({ path: { landing_page_id: "id" } });
|
|
2031
|
+
```
|
|
2032
|
+
|
|
2033
|
+
---
|
|
2034
|
+
|
|
2035
|
+
<a id="op-setlandingpageconsentdefault"></a>
|
|
2036
|
+
|
|
2037
|
+
### `g8.api.landingPages.setLandingPageConsentDefault(input)`
|
|
2038
|
+
|
|
2039
|
+
**Set Landing Page Consent Default**
|
|
2040
|
+
|
|
2041
|
+
- HTTP: `PUT /api/v1/landing-page-consent/default`
|
|
2042
|
+
- operationId: `set_landing_page_consent_default_landing_page_consent_default_put` (also callable as `g8.api.call("set_landing_page_consent_default_landing_page_consent_default_put", input)`)
|
|
2043
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2044
|
+
- API-key scope: `campaigns:write`
|
|
2045
|
+
|
|
2046
|
+
Set the workspace-wide consent gate default. ADMIN ONLY.
|
|
2047
|
+
|
|
2048
|
+
A compliance control for every page that does not override it. Takes
|
|
2049
|
+
effect on each page's NEXT publish - already-published HTML is not
|
|
2050
|
+
rewritten; `GET /landing-page-consent/pages` shows which pages are stale.
|
|
2051
|
+
|
|
2052
|
+
Spends nothing.
|
|
2053
|
+
|
|
2054
|
+
**Input**
|
|
2055
|
+
|
|
2056
|
+
| Field | Type | Required | Description |
|
|
2057
|
+
|---|---|---|---|
|
|
2058
|
+
| `body` | `LandingPageConsentConfig` | yes | Request body; fields below. |
|
|
2059
|
+
|
|
2060
|
+
Body fields (`LandingPageConsentConfig`):
|
|
2061
|
+
|
|
2062
|
+
| Field | Type | Required | Description |
|
|
2063
|
+
|---|---|---|---|
|
|
2064
|
+
| `body.accent` | `string` | no | Hex colour. default `"#111827"`, max length 7 |
|
|
2065
|
+
| `body.accept_label` | `string` | no | default `"Accept"`, max length 40 |
|
|
2066
|
+
| `body.banner` | `boolean` | no | False when your own consent manager drives the gate. default `true` |
|
|
2067
|
+
| `body.message` | `string` | no | default `"We use cookies and similar technologies to measure traffic and improve this site. You can accept or reject them."`, max length 600 |
|
|
2068
|
+
| `body.mode` | `"off" \| "explicit" \| "region"` | no | default `"off"` |
|
|
2069
|
+
| `body.policy_label` | `string` | no | default `"Privacy policy"`, max length 60 |
|
|
2070
|
+
| `body.policy_url` | `string \| null` | no | max length 500 |
|
|
2071
|
+
| `body.regions` | `Array<"EEA">` | no | Only used when mode is `region`. min items 1 |
|
|
2072
|
+
| `body.reject_label` | `string` | no | default `"Reject"`, max length 40 |
|
|
2073
|
+
| `body.reopener` | `boolean` | no | default `true` |
|
|
2074
|
+
| `body.reopener_label` | `string` | no | default `"Cookie settings"`, max length 40 |
|
|
2075
|
+
| `body.title` | `string` | no | default `"We use cookies"`, max length 120 |
|
|
2076
|
+
| `body.version` | `integer` | no | Bump to re-prompt every visitor. default `1`, min 1, max 1000000 |
|
|
2077
|
+
|
|
2078
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2079
|
+
|
|
2080
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2081
|
+
|
|
2082
|
+
**Example**
|
|
2083
|
+
|
|
2084
|
+
```ts
|
|
2085
|
+
const result = await g8.api.landingPages.setLandingPageConsentDefault({ body: {} });
|
|
2086
|
+
```
|
|
2087
|
+
|
|
2088
|
+
---
|
|
2089
|
+
|
|
2090
|
+
<a id="op-setlandingpagemedia"></a>
|
|
2091
|
+
|
|
2092
|
+
### `g8.api.landingPages.setLandingPageMedia(input)`
|
|
2093
|
+
|
|
2094
|
+
**Set Landing Page Media**
|
|
2095
|
+
|
|
2096
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/set-media-edit`
|
|
2097
|
+
- operationId: `set_landing_page_media_landing_pages__landing_page_id__set_media_edit_post` (also callable as `g8.api.call("set_landing_page_media_landing_pages__landing_page_id__set_media_edit_post", input)`)
|
|
2098
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2099
|
+
- API-key scope: `campaigns:write`
|
|
2100
|
+
|
|
2101
|
+
Point an `<img>` / `<video>` at a URL, or remove it. FREE.
|
|
2102
|
+
|
|
2103
|
+
`remove: true` DELETES the element. It is the one destructive field in the
|
|
2104
|
+
body and it is not implied by any other field.
|
|
2105
|
+
|
|
2106
|
+
This is the API-shaped alternative to the multipart upload route, which is
|
|
2107
|
+
deliberately not published: host the asset (the image library will do it),
|
|
2108
|
+
then send its URL here.
|
|
2109
|
+
|
|
2110
|
+
**Input**
|
|
2111
|
+
|
|
2112
|
+
| Field | Type | Required | Description |
|
|
2113
|
+
|---|---|---|---|
|
|
2114
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2115
|
+
| `body` | `LandingPageSetMediaEditRequest` | yes | Request body; fields below. |
|
|
2116
|
+
|
|
2117
|
+
Body fields (`LandingPageSetMediaEditRequest`):
|
|
2118
|
+
|
|
2119
|
+
| Field | Type | Required | Description |
|
|
2120
|
+
|---|---|---|---|
|
|
2121
|
+
| `body.g8_action_id` | `string` | yes | min length 1, max length 120 |
|
|
2122
|
+
| `body.kind` | `"img" \| "video"` | yes | |
|
|
2123
|
+
| `body.alt` | `string \| null` | no | max length 500 |
|
|
2124
|
+
| `body.autoplay` | `boolean \| null` | no | |
|
|
2125
|
+
| `body.controls` | `boolean \| null` | no | |
|
|
2126
|
+
| `body.loop` | `boolean \| null` | no | |
|
|
2127
|
+
| `body.muted` | `boolean \| null` | no | |
|
|
2128
|
+
| `body.object_fit` | `"cover" \| "contain" \| "fill" \| "none" \| "scale-down" \| null` | no | |
|
|
2129
|
+
| `body.object_position` | `string \| null` | no | max length 80 |
|
|
2130
|
+
| `body.position` | `MediaPosition \| null` | no | |
|
|
2131
|
+
| `body.poster` | `string \| null` | no | max length 2048 |
|
|
2132
|
+
| `body.remove` | `boolean` | no | default `false` |
|
|
2133
|
+
| `body.src` | `string \| null` | no | max length 2048 |
|
|
2134
|
+
|
|
2135
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2136
|
+
|
|
2137
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2138
|
+
|
|
2139
|
+
**Example**
|
|
2140
|
+
|
|
2141
|
+
```ts
|
|
2142
|
+
const result = await g8.api.landingPages.setLandingPageMedia({
|
|
2143
|
+
path: { landing_page_id: "id" },
|
|
2144
|
+
body: { g8_action_id: "id", kind: "img" },
|
|
2145
|
+
});
|
|
2146
|
+
```
|
|
2147
|
+
|
|
2148
|
+
---
|
|
2149
|
+
|
|
2150
|
+
<a id="op-setlandingpagetext"></a>
|
|
2151
|
+
|
|
2152
|
+
### `g8.api.landingPages.setLandingPageText(input)`
|
|
2153
|
+
|
|
2154
|
+
**Set Landing Page Text**
|
|
2155
|
+
|
|
2156
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/set-text`
|
|
2157
|
+
- operationId: `set_landing_page_text_landing_pages__landing_page_id__set_text_post` (also callable as `g8.api.call("set_landing_page_text_landing_pages__landing_page_id__set_text_post", input)`)
|
|
2158
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2159
|
+
- API-key scope: `campaigns:write`
|
|
2160
|
+
|
|
2161
|
+
Set the VISIBLE TEXT of one element. FREE - markup is preserved.
|
|
2162
|
+
|
|
2163
|
+
**Input**
|
|
2164
|
+
|
|
2165
|
+
| Field | Type | Required | Description |
|
|
2166
|
+
|---|---|---|---|
|
|
2167
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2168
|
+
| `body` | `LandingPageSetTextRequest` | yes | Request body; fields below. |
|
|
2169
|
+
|
|
2170
|
+
Body fields (`LandingPageSetTextRequest`):
|
|
2171
|
+
|
|
2172
|
+
| Field | Type | Required | Description |
|
|
2173
|
+
|---|---|---|---|
|
|
2174
|
+
| `body.element_id` | `string` | yes | |
|
|
2175
|
+
| `body.new_text` | `string` | yes | |
|
|
2176
|
+
| `body.selected_element` | `SelectedElementPayload \| null` | no | |
|
|
2177
|
+
|
|
2178
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2179
|
+
|
|
2180
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2181
|
+
|
|
2182
|
+
**Example**
|
|
2183
|
+
|
|
2184
|
+
```ts
|
|
2185
|
+
const result = await g8.api.landingPages.setLandingPageText({
|
|
2186
|
+
path: { landing_page_id: "id" },
|
|
2187
|
+
body: { element_id: "id", new_text: "example" },
|
|
2188
|
+
});
|
|
2189
|
+
```
|
|
2190
|
+
|
|
2191
|
+
---
|
|
2192
|
+
|
|
2193
|
+
<a id="op-unpublishlandingpage"></a>
|
|
2194
|
+
|
|
2195
|
+
### `g8.api.landingPages.unpublishLandingPage(input)`
|
|
2196
|
+
|
|
2197
|
+
**Unpublish Landing Page**
|
|
2198
|
+
|
|
2199
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/unpublish`
|
|
2200
|
+
- operationId: `unpublish_landing_page_landing_pages__landing_page_id__unpublish_post` (also callable as `g8.api.call("unpublish_landing_page_landing_pages__landing_page_id__unpublish_post", input)`)
|
|
2201
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
2202
|
+
- API-key scope: `campaigns:run`
|
|
2203
|
+
|
|
2204
|
+
Take the page OFF the internet. Every URL it served stops resolving.
|
|
2205
|
+
|
|
2206
|
+
Visitors and any ad or email pointing at it get a 404 from this moment.
|
|
2207
|
+
Launch-gated for the same reason publishing is.
|
|
2208
|
+
|
|
2209
|
+
Spends nothing.
|
|
2210
|
+
|
|
2211
|
+
**Input**
|
|
2212
|
+
|
|
2213
|
+
| Field | Type | Required | Description |
|
|
2214
|
+
|---|---|---|---|
|
|
2215
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2216
|
+
|
|
2217
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2218
|
+
|
|
2219
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2220
|
+
|
|
2221
|
+
**Example**
|
|
2222
|
+
|
|
2223
|
+
```ts
|
|
2224
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
2225
|
+
const result = await g8.api.landingPages.unpublishLandingPage({ path: { landing_page_id: "id" } });
|
|
2226
|
+
```
|
|
2227
|
+
|
|
2228
|
+
---
|
|
2229
|
+
|
|
2230
|
+
<a id="op-updatelandingpage"></a>
|
|
2231
|
+
|
|
2232
|
+
### `g8.api.landingPages.updateLandingPage(input)`
|
|
2233
|
+
|
|
2234
|
+
**Update Landing Page**
|
|
2235
|
+
|
|
2236
|
+
- HTTP: `PATCH /api/v1/landing-pages/{landing_page_id}`
|
|
2237
|
+
- operationId: `update_landing_page_landing_pages__landing_page_id__patch` (also callable as `g8.api.call("update_landing_page_landing_pages__landing_page_id__patch", input)`)
|
|
2238
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2239
|
+
- API-key scope: `campaigns:write`
|
|
2240
|
+
|
|
2241
|
+
Metadata only - name, slug, description, settings. FREE.
|
|
2242
|
+
|
|
2243
|
+
Nothing here touches the page's HTML. The edit routes do that.
|
|
2244
|
+
|
|
2245
|
+
**Input**
|
|
2246
|
+
|
|
2247
|
+
| Field | Type | Required | Description |
|
|
2248
|
+
|---|---|---|---|
|
|
2249
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2250
|
+
| `body` | `UpdateLandingPageRequest` | yes | Request body; fields below. |
|
|
2251
|
+
|
|
2252
|
+
Body fields (`UpdateLandingPageRequest`):
|
|
2253
|
+
|
|
2254
|
+
| Field | Type | Required | Description |
|
|
2255
|
+
|---|---|---|---|
|
|
2256
|
+
| `body.description` | `string \| null` | no | |
|
|
2257
|
+
| `body.name` | `string \| null` | no | |
|
|
2258
|
+
| `body.settings` | `Record<string, unknown> \| null` | no | |
|
|
2259
|
+
| `body.slug` | `string \| null` | no | |
|
|
2260
|
+
|
|
2261
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2262
|
+
|
|
2263
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2264
|
+
|
|
2265
|
+
**Example**
|
|
2266
|
+
|
|
2267
|
+
```ts
|
|
2268
|
+
const result = await g8.api.landingPages.updateLandingPage({ path: { landing_page_id: "id" }, body: {} });
|
|
2269
|
+
```
|
|
2270
|
+
|
|
2271
|
+
---
|
|
2272
|
+
|
|
2273
|
+
<a id="op-updatelandingpagehtml"></a>
|
|
2274
|
+
|
|
2275
|
+
### `g8.api.landingPages.updateLandingPageHtml(input)`
|
|
2276
|
+
|
|
2277
|
+
**Update Landing Page Html**
|
|
2278
|
+
|
|
2279
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/update-html`
|
|
2280
|
+
- operationId: `update_landing_page_html_landing_pages__landing_page_id__update_html_post` (also callable as `g8.api.call("update_landing_page_html_landing_pages__landing_page_id__update_html_post", input)`)
|
|
2281
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2282
|
+
- API-key scope: `campaigns:write`
|
|
2283
|
+
|
|
2284
|
+
Save raw HTML for a freeform page. FREE - the code-editor save.
|
|
2285
|
+
|
|
2286
|
+
**Input**
|
|
2287
|
+
|
|
2288
|
+
| Field | Type | Required | Description |
|
|
2289
|
+
|---|---|---|---|
|
|
2290
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2291
|
+
| `body` | `UpdateHtmlRequest` | yes | Request body; fields below. |
|
|
2292
|
+
|
|
2293
|
+
Body fields (`UpdateHtmlRequest`):
|
|
2294
|
+
|
|
2295
|
+
| Field | Type | Required | Description |
|
|
2296
|
+
|---|---|---|---|
|
|
2297
|
+
| `body.html` | `string` | yes | |
|
|
2298
|
+
|
|
2299
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2300
|
+
|
|
2301
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2302
|
+
|
|
2303
|
+
**Example**
|
|
2304
|
+
|
|
2305
|
+
```ts
|
|
2306
|
+
const result = await g8.api.landingPages.updateLandingPageHtml({ path: { landing_page_id: "id" }, body: { html: "example" } });
|
|
2307
|
+
```
|
|
2308
|
+
|
|
2309
|
+
---
|
|
2310
|
+
|
|
2311
|
+
<a id="op-updatelandingpagesection"></a>
|
|
2312
|
+
|
|
2313
|
+
### `g8.api.landingPages.updateLandingPageSection(input)`
|
|
2314
|
+
|
|
2315
|
+
**Update Landing Page Section**
|
|
2316
|
+
|
|
2317
|
+
- HTTP: `PATCH /api/v1/landing-pages/{landing_page_id}/sections/{section_idx}`
|
|
2318
|
+
- operationId: `update_landing_page_section_landing_pages__landing_page_id__sections__section_idx__patch` (also callable as `g8.api.call("update_landing_page_section_landing_pages__landing_page_id__sections__section_idx__patch", input)`)
|
|
2319
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2320
|
+
- API-key scope: `campaigns:write`
|
|
2321
|
+
|
|
2322
|
+
Replace one section's content block. FREE - no model runs.
|
|
2323
|
+
|
|
2324
|
+
Sections-mode pages only. A freeform page has no section array; use
|
|
2325
|
+
`/replace-html` or `/set-text` on those.
|
|
2326
|
+
|
|
2327
|
+
**Input**
|
|
2328
|
+
|
|
2329
|
+
| Field | Type | Required | Description |
|
|
2330
|
+
|---|---|---|---|
|
|
2331
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2332
|
+
| `path.section_idx` | `integer` | yes | Zero-based section index. |
|
|
2333
|
+
| `body` | `UpdateSectionRequest` | yes | Request body; fields below. |
|
|
2334
|
+
|
|
2335
|
+
Body fields (`UpdateSectionRequest`):
|
|
2336
|
+
|
|
2337
|
+
| Field | Type | Required | Description |
|
|
2338
|
+
|---|---|---|---|
|
|
2339
|
+
| `body.content` | `Record<string, unknown>` | yes | |
|
|
2340
|
+
|
|
2341
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2342
|
+
|
|
2343
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2344
|
+
|
|
2345
|
+
**Example**
|
|
2346
|
+
|
|
2347
|
+
```ts
|
|
2348
|
+
const result = await g8.api.landingPages.updateLandingPageSection({
|
|
2349
|
+
path: { landing_page_id: "id", section_idx: 0 },
|
|
2350
|
+
body: { content: {} },
|
|
2351
|
+
});
|
|
2352
|
+
```
|
|
2353
|
+
|
|
2354
|
+
---
|
|
2355
|
+
|
|
2356
|
+
<a id="op-updatelandingpagetext"></a>
|
|
2357
|
+
|
|
2358
|
+
### `g8.api.landingPages.updateLandingPageText(input)`
|
|
2359
|
+
|
|
2360
|
+
**Update Landing Page Text**
|
|
2361
|
+
|
|
2362
|
+
- HTTP: `POST /api/v1/landing-pages/{landing_page_id}/update-text`
|
|
2363
|
+
- operationId: `update_landing_page_text_landing_pages__landing_page_id__update_text_post` (also callable as `g8.api.call("update_landing_page_text_landing_pages__landing_page_id__update_text_post", input)`)
|
|
2364
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2365
|
+
- API-key scope: `campaigns:write`
|
|
2366
|
+
|
|
2367
|
+
Set one element's inner HTML directly. FREE.
|
|
2368
|
+
|
|
2369
|
+
`new_html`, not `new_text`: this one accepts markup. `/set-text` is the
|
|
2370
|
+
text-only sibling and is the safer of the two.
|
|
2371
|
+
|
|
2372
|
+
**Input**
|
|
2373
|
+
|
|
2374
|
+
| Field | Type | Required | Description |
|
|
2375
|
+
|---|---|---|---|
|
|
2376
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2377
|
+
| `body` | `UpdateTextRequest` | yes | Request body; fields below. |
|
|
2378
|
+
|
|
2379
|
+
Body fields (`UpdateTextRequest`):
|
|
2380
|
+
|
|
2381
|
+
| Field | Type | Required | Description |
|
|
2382
|
+
|---|---|---|---|
|
|
2383
|
+
| `body.element_id` | `string` | yes | |
|
|
2384
|
+
| `body.new_html` | `string` | yes | |
|
|
2385
|
+
|
|
2386
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2387
|
+
|
|
2388
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2389
|
+
|
|
2390
|
+
**Example**
|
|
2391
|
+
|
|
2392
|
+
```ts
|
|
2393
|
+
const result = await g8.api.landingPages.updateLandingPageText({
|
|
2394
|
+
path: { landing_page_id: "id" },
|
|
2395
|
+
body: { element_id: "id", new_html: "example" },
|
|
2396
|
+
});
|
|
2397
|
+
```
|
|
2398
|
+
|
|
2399
|
+
---
|
|
2400
|
+
|
|
2401
|
+
<a id="op-updatelandingpagetracking"></a>
|
|
2402
|
+
|
|
2403
|
+
### `g8.api.landingPages.updateLandingPageTracking(input)`
|
|
2404
|
+
|
|
2405
|
+
**Update Landing Page Tracking**
|
|
2406
|
+
|
|
2407
|
+
- HTTP: `PATCH /api/v1/landing-pages/{landing_page_id}/tracking`
|
|
2408
|
+
- operationId: `update_landing_page_tracking_landing_pages__landing_page_id__tracking_patch` (also callable as `g8.api.call("update_landing_page_tracking_landing_pages__landing_page_id__tracking_patch", input)`)
|
|
2409
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2410
|
+
- API-key scope: `campaigns:write`
|
|
2411
|
+
|
|
2412
|
+
Change the page's tracking settings. FREE. Only the fields you send change.
|
|
2413
|
+
|
|
2414
|
+
Moving TO `dedicated` goes through `/tracking/provision`; a PATCH to it is
|
|
2415
|
+
rejected. Takes effect on the page's next publish.
|
|
2416
|
+
|
|
2417
|
+
**Input**
|
|
2418
|
+
|
|
2419
|
+
| Field | Type | Required | Description |
|
|
2420
|
+
|---|---|---|---|
|
|
2421
|
+
| `path.landing_page_id` | `string` | yes | Landing page id. |
|
|
2422
|
+
| `body` | `LandingPageTrackingPatchRequest` | yes | Request body; fields below. |
|
|
2423
|
+
|
|
2424
|
+
Body fields (`LandingPageTrackingPatchRequest`):
|
|
2425
|
+
|
|
2426
|
+
| Field | Type | Required | Description |
|
|
2427
|
+
|---|---|---|---|
|
|
2428
|
+
| `body.chat_enabled` | `boolean \| null` | no | |
|
|
2429
|
+
| `body.consent` | `LandingPageConsentConfig \| null` | no | |
|
|
2430
|
+
| `body.conversion_goal` | `"form_submission" \| "workspace_signup" \| "paid_account" \| "traffic_only" \| null` | no | |
|
|
2431
|
+
| `body.form_id` | `string \| null` | no | max length 80 |
|
|
2432
|
+
| `body.mode` | `"org_default" \| "dedicated" \| "disabled" \| null` | no | `dedicated` is reached through `/tracking/provision`, not here. |
|
|
2433
|
+
|
|
2434
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2435
|
+
|
|
2436
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2437
|
+
|
|
2438
|
+
**Example**
|
|
2439
|
+
|
|
2440
|
+
```ts
|
|
2441
|
+
const result = await g8.api.landingPages.updateLandingPageTracking({ path: { landing_page_id: "id" }, body: {} });
|
|
2442
|
+
```
|
|
2443
|
+
|
|
2444
|
+
---
|
|
2445
|
+
|
|
2446
|
+
## Referenced types
|
|
2447
|
+
|
|
2448
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
2449
|
+
|
|
2450
|
+
<a id="type-exactreplacementrequest"></a>
|
|
2451
|
+
|
|
2452
|
+
### `ExactReplacementRequest`
|
|
2453
|
+
|
|
2454
|
+
One exact replacement applied against the evolving HTML document.
|
|
2455
|
+
|
|
2456
|
+
| Field | Type | Required | Description |
|
|
2457
|
+
|---|---|---|---|
|
|
2458
|
+
| `new` | `string` | yes | max length 500000 |
|
|
2459
|
+
| `old` | `string` | yes | min length 1, max length 200000 |
|
|
2460
|
+
| `expected_matches` | `integer` | no | default `1`, min 1, max 100 |
|
|
2461
|
+
|
|
2462
|
+
<a id="type-mediaposition"></a>
|
|
2463
|
+
|
|
2464
|
+
### `MediaPosition`
|
|
2465
|
+
|
|
2466
|
+
Per-breakpoint drag offsets. `desktop` is required; the rest inherit.
|
|
2467
|
+
|
|
2468
|
+
| Field | Type | Required | Description |
|
|
2469
|
+
|---|---|---|---|
|
|
2470
|
+
| `desktop` | `MediaPositionOffset` | yes | |
|
|
2471
|
+
| `mobile` | `MediaPositionOffset \| null` | no | |
|
|
2472
|
+
| `tablet` | `MediaPositionOffset \| null` | no | |
|
|
2473
|
+
|
|
2474
|
+
<a id="type-selectedelementpayload"></a>
|
|
2475
|
+
|
|
2476
|
+
### `SelectedElementPayload`
|
|
2477
|
+
|
|
2478
|
+
What the visual picker selected, as the rewrite pass needs to see it.
|
|
2479
|
+
|
|
2480
|
+
| Field | Type | Required | Description |
|
|
2481
|
+
|---|---|---|---|
|
|
2482
|
+
| `element_id` | `string` | yes | |
|
|
2483
|
+
| `tag` | `string` | yes | |
|
|
2484
|
+
| `outer_html` | `string \| null` | no | |
|
|
2485
|
+
| `role` | `string \| null` | no | |
|
|
2486
|
+
| `scope` | `string` | no | default `"element"` |
|
|
2487
|
+
| `section_id` | `string \| null` | no | |
|
|
2488
|
+
| `text` | `string \| null` | no | |
|