@graph8/sdk 0.251.0 → 0.260.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +104 -7
- package/dist/index.d.ts +104 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +102 -7
- package/dist/react.d.ts +102 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1696 -0
- package/docs/api/deals.md +2432 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,1708 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.adCreatives`: Ad Creatives
|
|
4
|
+
|
|
5
|
+
40 operations (10 read, 11 write, 2 destructive, 17 billable).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.adCreatives.*` 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: [adCreatives.d.ts](adCreatives.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`applyAdCreativeReviewFindings`](#op-applyadcreativereviewfindings) | `POST /api/v1/ad-creatives/{creative_id}/ai-review/apply` | write | `campaigns:write` | Apply Ad Creative Review Findings |
|
|
26
|
+
| [`chatEditAdCreative`](#op-chateditadcreative) | `POST /api/v1/ad-creatives/{creative_id}/chat-edit` | billable | `campaigns:run` | Chat Edit Ad Creative |
|
|
27
|
+
| [`continueVideoClip`](#op-continuevideoclip) | `POST /api/v1/ad-creatives/video/clips/{clip_id}/continue` | billable | `campaigns:run` | Continue Video Clip |
|
|
28
|
+
| [`createAdCreative`](#op-createadcreative) | `POST /api/v1/ad-creatives` | billable | `campaigns:run` | Create Ad Creative |
|
|
29
|
+
| [`createAdCreativeSet`](#op-createadcreativeset) | `POST /api/v1/ad-creatives/batch` | billable | `campaigns:run` | Create Ad Creative Set |
|
|
30
|
+
| [`createAdCreativeSizeSet`](#op-createadcreativesizeset) | `POST /api/v1/ad-creatives/{creative_id}/size-set` | billable | `campaigns:run` | Create Ad Creative Size Set |
|
|
31
|
+
| [`createVideoAdCreative`](#op-createvideoadcreative) | `POST /api/v1/ad-creatives/video` | write | `campaigns:write` | Create Video Ad Creative |
|
|
32
|
+
| [`deleteAdCreative`](#op-deleteadcreative) | `DELETE /api/v1/ad-creatives/{creative_id}` | destructive | `campaigns:delete` | Delete Ad Creative |
|
|
33
|
+
| [`discardVideoClip`](#op-discardvideoclip) | `DELETE /api/v1/ad-creatives/video/clips/{clip_id}` | destructive | `campaigns:delete` | Discard Video Clip |
|
|
34
|
+
| [`editAdCreativeImageAtPoint`](#op-editadcreativeimageatpoint) | `POST /api/v1/ad-creatives/{creative_id}/image-edit-at-point` | billable | `campaigns:run` | Edit Ad Creative Image At Point |
|
|
35
|
+
| [`editAdCreativeImageElement`](#op-editadcreativeimageelement) | `POST /api/v1/ad-creatives/{creative_id}/image-element` | write | `campaigns:write` | Edit Ad Creative Image Element |
|
|
36
|
+
| [`enhanceVideoClipPrompt`](#op-enhancevideoclipprompt) | `POST /api/v1/ad-creatives/video/clips/prompt-enhance` | billable | `campaigns:run` | Enhance Video Clip Prompt |
|
|
37
|
+
| [`extendVideoClip`](#op-extendvideoclip) | `POST /api/v1/ad-creatives/video/clips/{clip_id}/extend` | billable | `campaigns:run` | Extend Video Clip |
|
|
38
|
+
| [`generateAdConcepts`](#op-generateadconcepts) | `POST /api/v1/ad-creatives/concepts` | billable | `campaigns:run` | Generate Ad Concepts |
|
|
39
|
+
| [`generateVideoClip`](#op-generatevideoclip) | `POST /api/v1/ad-creatives/video/clips` | billable | `campaigns:run` | Generate Video Clip |
|
|
40
|
+
| [`getAdCreative`](#op-getadcreative) | `GET /api/v1/ad-creatives/{creative_id}` | read | `campaigns:read` | Get Ad Creative |
|
|
41
|
+
| [`getAdCreativeConversation`](#op-getadcreativeconversation) | `GET /api/v1/ad-creatives/{creative_id}/conversation` | read | `campaigns:read` | Get Ad Creative Conversation |
|
|
42
|
+
| [`getAdCreativeSpecs`](#op-getadcreativespecs) | `GET /api/v1/ad-creatives/specs` | read | `campaigns:read` | Get Ad Creative Specs |
|
|
43
|
+
| [`getAdCreativeStatus`](#op-getadcreativestatus) | `GET /api/v1/ad-creatives/{creative_id}/status` | read | `campaigns:read` | Get Ad Creative Status |
|
|
44
|
+
| [`getVideoClip`](#op-getvideoclip) | `GET /api/v1/ad-creatives/video/clips/{clip_id}` | read | `campaigns:read` | Get Video Clip |
|
|
45
|
+
| [`listAdCreativeImageElements`](#op-listadcreativeimageelements) | `GET /api/v1/ad-creatives/{creative_id}/image-elements` | read | `campaigns:read` | List Ad Creative Image Elements |
|
|
46
|
+
| [`listAdCreativeRevisions`](#op-listadcreativerevisions) | `GET /api/v1/ad-creatives/{creative_id}/revisions` | read | `campaigns:read` | List Ad Creative Revisions |
|
|
47
|
+
| [`listAdCreatives`](#op-listadcreatives) | `GET /api/v1/ad-creatives` | read | `campaigns:read` | List Ad Creatives |
|
|
48
|
+
| [`listVideoAdTemplates`](#op-listvideoadtemplates) | `GET /api/v1/ad-creatives/video-templates` | read | `campaigns:read` | List Video Ad Templates |
|
|
49
|
+
| [`listVideoClips`](#op-listvideoclips) | `GET /api/v1/ad-creatives/video/clips` | read | `campaigns:read` | List Video Clips |
|
|
50
|
+
| [`moveAdCreativeToDraft`](#op-moveadcreativetodraft) | `POST /api/v1/ad-creatives/{creative_id}/move-to-draft` | write | `campaigns:write` | Move Ad Creative To Draft |
|
|
51
|
+
| [`moveAdCreativeToGallery`](#op-moveadcreativetogallery) | `POST /api/v1/ad-creatives/{creative_id}/move-to-gallery` | write | `campaigns:write` | Move Ad Creative To Gallery |
|
|
52
|
+
| [`readAdCreativeThroughPersona`](#op-readadcreativethroughpersona) | `POST /api/v1/ad-creatives/{creative_id}/persona-lens` | billable | `campaigns:run` | Read Ad Creative Through Persona |
|
|
53
|
+
| [`regenerateAdCreativeCopy`](#op-regenerateadcreativecopy) | `POST /api/v1/ad-creatives/{creative_id}/regenerate-copy` | billable | `campaigns:run` | Regenerate Ad Creative Copy |
|
|
54
|
+
| [`regenerateAdCreativeImage`](#op-regenerateadcreativeimage) | `POST /api/v1/ad-creatives/{creative_id}/regenerate-image` | billable | `campaigns:run` | Regenerate Ad Creative Image |
|
|
55
|
+
| [`regenerateVideoClip`](#op-regeneratevideoclip) | `POST /api/v1/ad-creatives/video/clips/{clip_id}/regenerate` | billable | `campaigns:run` | Regenerate Video Clip |
|
|
56
|
+
| [`reskinAdCreative`](#op-reskinadcreative) | `POST /api/v1/ad-creatives/{creative_id}/reskin` | write | `campaigns:write` | Reskin Ad Creative |
|
|
57
|
+
| [`restoreAdCreativeRevision`](#op-restoreadcreativerevision) | `POST /api/v1/ad-creatives/{creative_id}/restore-revision` | write | `campaigns:write` | Restore Ad Creative Revision |
|
|
58
|
+
| [`retryAdCreativeGeneration`](#op-retryadcreativegeneration) | `POST /api/v1/ad-creatives/{creative_id}/retry` | billable | `campaigns:run` | Retry Ad Creative Generation |
|
|
59
|
+
| [`reviewAdCreative`](#op-reviewadcreative) | `POST /api/v1/ad-creatives/{creative_id}/ai-review` | billable | `campaigns:run` | Review Ad Creative |
|
|
60
|
+
| [`rewriteAdCreativeField`](#op-rewriteadcreativefield) | `POST /api/v1/ad-creatives/{creative_id}/rewrite-field` | billable | `campaigns:run` | Rewrite Ad Creative Field |
|
|
61
|
+
| [`saveAdCreativeAsTemplate`](#op-saveadcreativeastemplate) | `POST /api/v1/ad-creatives/{creative_id}/save-as-template` | write | `campaigns:write` | Save Ad Creative As Template |
|
|
62
|
+
| [`setAdCreativeImage`](#op-setadcreativeimage) | `POST /api/v1/ad-creatives/{creative_id}/set-image` | write | `campaigns:write` | Set Ad Creative Image |
|
|
63
|
+
| [`setAdCreativeImageFocus`](#op-setadcreativeimagefocus) | `POST /api/v1/ad-creatives/{creative_id}/set-image-focus` | write | `campaigns:write` | Set Ad Creative Image Focus |
|
|
64
|
+
| [`updateAdCreative`](#op-updateadcreative) | `PATCH /api/v1/ad-creatives/{creative_id}` | write | `campaigns:write` | Update Ad Creative |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
<a id="op-applyadcreativereviewfindings"></a>
|
|
69
|
+
|
|
70
|
+
### `g8.api.adCreatives.applyAdCreativeReviewFindings(input)`
|
|
71
|
+
|
|
72
|
+
**Apply Ad Creative Review Findings**
|
|
73
|
+
|
|
74
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/ai-review/apply`
|
|
75
|
+
- operationId: `apply_ad_creative_review_findings_ad_creatives__creative_id__ai_review_apply_post` (also callable as `g8.api.call("apply_ad_creative_review_findings_ad_creatives__creative_id__ai_review_apply_post", input)`)
|
|
76
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
77
|
+
- API-key scope: `campaigns:write`
|
|
78
|
+
|
|
79
|
+
Apply review findings DETERMINISTICALLY. FREE - no model runs.
|
|
80
|
+
|
|
81
|
+
**Input**
|
|
82
|
+
|
|
83
|
+
| Field | Type | Required | Description |
|
|
84
|
+
|---|---|---|---|
|
|
85
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
86
|
+
| `body` | `ApplyFindingsRequest` | yes | Request body; fields below. |
|
|
87
|
+
|
|
88
|
+
Body fields (`ApplyFindingsRequest`):
|
|
89
|
+
|
|
90
|
+
| Field | Type | Required | Description |
|
|
91
|
+
|---|---|---|---|
|
|
92
|
+
| `body.finding_ids` | `Array<string>` | yes | |
|
|
93
|
+
|
|
94
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
95
|
+
|
|
96
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
97
|
+
|
|
98
|
+
**Example**
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
const result = await g8.api.adCreatives.applyAdCreativeReviewFindings({ path: { creative_id: "id" }, body: { finding_ids: ["id"] } });
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
<a id="op-chateditadcreative"></a>
|
|
107
|
+
|
|
108
|
+
### `g8.api.adCreatives.chatEditAdCreative(input)`
|
|
109
|
+
|
|
110
|
+
**Chat Edit Ad Creative**
|
|
111
|
+
|
|
112
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/chat-edit`
|
|
113
|
+
- operationId: `chat_edit_ad_creative_ad_creatives__creative_id__chat_edit_post` (also callable as `g8.api.call("chat_edit_ad_creative_ad_creatives__creative_id__chat_edit_post", input)`)
|
|
114
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
115
|
+
- API-key scope: `campaigns:run`
|
|
116
|
+
|
|
117
|
+
Edit the creative with a natural-language instruction. SPENDS CREDIT.
|
|
118
|
+
|
|
119
|
+
A model rewrites the copy (and, when asked, the image); the previous state
|
|
120
|
+
is snapshotted first, so `/restore-revision` can undo it.
|
|
121
|
+
|
|
122
|
+
**Input**
|
|
123
|
+
|
|
124
|
+
| Field | Type | Required | Description |
|
|
125
|
+
|---|---|---|---|
|
|
126
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
127
|
+
| `body` | `AdCreativeChatEditRequest` | yes | Request body; fields below. |
|
|
128
|
+
|
|
129
|
+
Body fields (`AdCreativeChatEditRequest`):
|
|
130
|
+
|
|
131
|
+
| Field | Type | Required | Description |
|
|
132
|
+
|---|---|---|---|
|
|
133
|
+
| `body.instruction` | `string` | yes | max length 2000 |
|
|
134
|
+
|
|
135
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
136
|
+
|
|
137
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
138
|
+
|
|
139
|
+
**Example**
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
143
|
+
const result = await g8.api.adCreatives.chatEditAdCreative({ path: { creative_id: "id" }, body: { instruction: "example" } });
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
<a id="op-continuevideoclip"></a>
|
|
149
|
+
|
|
150
|
+
### `g8.api.adCreatives.continueVideoClip(input)`
|
|
151
|
+
|
|
152
|
+
**Continue Video Clip**
|
|
153
|
+
|
|
154
|
+
- HTTP: `POST /api/v1/ad-creatives/video/clips/{clip_id}/continue`
|
|
155
|
+
- operationId: `continue_video_clip_ad_creatives_video_clips__clip_id__continue_post` (also callable as `g8.api.call("continue_video_clip_ad_creatives_video_clips__clip_id__continue_post", input)`)
|
|
156
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
157
|
+
- API-key scope: `campaigns:run`
|
|
158
|
+
|
|
159
|
+
Generate the NEXT shot from this clip's last frame, with a new prompt. SPENDS CREDIT.
|
|
160
|
+
|
|
161
|
+
**Input**
|
|
162
|
+
|
|
163
|
+
| Field | Type | Required | Description |
|
|
164
|
+
|---|---|---|---|
|
|
165
|
+
| `path.clip_id` | `string` | yes | Video clip id. |
|
|
166
|
+
| `body` | `ContinueVideoClipRequest` | yes | Request body; fields below. |
|
|
167
|
+
|
|
168
|
+
Body fields (`ContinueVideoClipRequest`):
|
|
169
|
+
|
|
170
|
+
| Field | Type | Required | Description |
|
|
171
|
+
|---|---|---|---|
|
|
172
|
+
| `body.prompt_inputs` | `VideoClipPromptInputs` | yes | |
|
|
173
|
+
| `body.duration_seconds` | `4 \| 6 \| 8` | no | default `8` |
|
|
174
|
+
| `body.prompt_final` | `string \| null` | no | max length 1000 |
|
|
175
|
+
|
|
176
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
177
|
+
|
|
178
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
179
|
+
|
|
180
|
+
**Example**
|
|
181
|
+
|
|
182
|
+
```ts
|
|
183
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
184
|
+
const result = await g8.api.adCreatives.continueVideoClip({
|
|
185
|
+
path: { clip_id: "id" },
|
|
186
|
+
body: { prompt_inputs: { subject: "Example" } },
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
<a id="op-createadcreative"></a>
|
|
193
|
+
|
|
194
|
+
### `g8.api.adCreatives.createAdCreative(input)`
|
|
195
|
+
|
|
196
|
+
**Create Ad Creative**
|
|
197
|
+
|
|
198
|
+
- HTTP: `POST /api/v1/ad-creatives`
|
|
199
|
+
- operationId: `create_ad_creative_ad_creatives_post` (also callable as `g8.api.call("create_ad_creative_ad_creatives_post", input)`)
|
|
200
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
201
|
+
- API-key scope: `campaigns:run`
|
|
202
|
+
|
|
203
|
+
Generate an ad creative. SPENDS CREDIT - a copy pass and an image pass.
|
|
204
|
+
|
|
205
|
+
ASYNCHRONOUS: the row is committed as `generating` and returned
|
|
206
|
+
immediately; the copy and the image land afterwards. Poll
|
|
207
|
+
`GET /ad-creatives/{id}` until its status settles.
|
|
208
|
+
|
|
209
|
+
`image_source: "library"` with a `library_image_id` skips the image pass
|
|
210
|
+
and is materially cheaper. `image_source: "ai"` is the default and is what
|
|
211
|
+
the cost of this call mostly is.
|
|
212
|
+
|
|
213
|
+
**Input**
|
|
214
|
+
|
|
215
|
+
| Field | Type | Required | Description |
|
|
216
|
+
|---|---|---|---|
|
|
217
|
+
| `body` | `CreateAdCreativeRequest` | yes | Request body; fields below. |
|
|
218
|
+
|
|
219
|
+
Body fields (`CreateAdCreativeRequest`):
|
|
220
|
+
|
|
221
|
+
| Field | Type | Required | Description |
|
|
222
|
+
|---|---|---|---|
|
|
223
|
+
| `body.ad_format` | `string` | yes | |
|
|
224
|
+
| `body.platform` | `string` | yes | |
|
|
225
|
+
| `body.campaign_id` | `string \| null` | no | |
|
|
226
|
+
| `body.image_source` | `string` | no | 'ai' generates an image; 'library' reuses one. default `"ai"` |
|
|
227
|
+
| `body.library_image_id` | `string \| null` | no | |
|
|
228
|
+
| `body.name` | `string \| null` | no | |
|
|
229
|
+
| `body.prompt` | `string \| null` | no | max length 2000 |
|
|
230
|
+
| `body.reference_image_ids` | `Array<string> \| null` | no | |
|
|
231
|
+
|
|
232
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
233
|
+
|
|
234
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
235
|
+
|
|
236
|
+
**Example**
|
|
237
|
+
|
|
238
|
+
```ts
|
|
239
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
240
|
+
const result = await g8.api.adCreatives.createAdCreative({ body: { ad_format: "example", platform: "example" } });
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
<a id="op-createadcreativeset"></a>
|
|
246
|
+
|
|
247
|
+
### `g8.api.adCreatives.createAdCreativeSet(input)`
|
|
248
|
+
|
|
249
|
+
**Create Ad Creative Set**
|
|
250
|
+
|
|
251
|
+
- HTTP: `POST /api/v1/ad-creatives/batch`
|
|
252
|
+
- operationId: `create_ad_creative_set_ad_creatives_batch_post` (also callable as `g8.api.call("create_ad_creative_set_ad_creatives_batch_post", input)`)
|
|
253
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
254
|
+
- API-key scope: `campaigns:run`
|
|
255
|
+
|
|
256
|
+
Generate a persona x platform matrix of creatives. SPENDS CREDIT, per cell.
|
|
257
|
+
|
|
258
|
+
Up to 24 full creatives (copy pass + image pass each) in one call - the
|
|
259
|
+
largest spend on this router. Every row is committed as `generating`
|
|
260
|
+
before any generation starts; poll each creative's `/status`.
|
|
261
|
+
|
|
262
|
+
**Input**
|
|
263
|
+
|
|
264
|
+
| Field | Type | Required | Description |
|
|
265
|
+
|---|---|---|---|
|
|
266
|
+
| `body` | `CreateAdCreativeSetRequest` | yes | Request body; fields below. |
|
|
267
|
+
|
|
268
|
+
Body fields (`CreateAdCreativeSetRequest`):
|
|
269
|
+
|
|
270
|
+
| Field | Type | Required | Description |
|
|
271
|
+
|---|---|---|---|
|
|
272
|
+
| `body.personas` | `Array<CampaignSetPersona>` | yes | min items 1, max items 6 |
|
|
273
|
+
| `body.platforms` | `Array<string>` | yes | min items 1, max items 4 |
|
|
274
|
+
| `body.brief` | `string \| null` | no | max length 2000 |
|
|
275
|
+
| `body.formats` | `Record<string, unknown> \| null` | no | Platform -> ad_format override. Omit for each platform's default. |
|
|
276
|
+
| `body.image_source` | `"ai"` | no | default `"ai"` |
|
|
277
|
+
| `body.variants_per_cell` | `integer` | no | default `1`, min 1, max 3 |
|
|
278
|
+
|
|
279
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
280
|
+
|
|
281
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
282
|
+
|
|
283
|
+
**Example**
|
|
284
|
+
|
|
285
|
+
```ts
|
|
286
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
287
|
+
const result = await g8.api.adCreatives.createAdCreativeSet({ body: { personas: [{ title: "Example" }], platforms: ["example"] } });
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
<a id="op-createadcreativesizeset"></a>
|
|
293
|
+
|
|
294
|
+
### `g8.api.adCreatives.createAdCreativeSizeSet(input)`
|
|
295
|
+
|
|
296
|
+
**Create Ad Creative Size Set**
|
|
297
|
+
|
|
298
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/size-set`
|
|
299
|
+
- operationId: `create_ad_creative_size_set_ad_creatives__creative_id__size_set_post` (also callable as `g8.api.call("create_ad_creative_size_set_ad_creatives__creative_id__size_set_post", input)`)
|
|
300
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
301
|
+
- API-key scope: `campaigns:run`
|
|
302
|
+
|
|
303
|
+
Fan one creative out into the platform's other formats. SPENDS CREDIT.
|
|
304
|
+
|
|
305
|
+
ONE PASS PER FORMAT, so the cost scales with how many you ask for. Copy is
|
|
306
|
+
locked verbatim; only the layout and the crop change. Omit `formats` and
|
|
307
|
+
you get the platform's FULL set, which is the most expensive call on this
|
|
308
|
+
router - name the formats you actually need.
|
|
309
|
+
|
|
310
|
+
Asynchronous: the rows appear immediately and fill in afterwards.
|
|
311
|
+
|
|
312
|
+
**Input**
|
|
313
|
+
|
|
314
|
+
| Field | Type | Required | Description |
|
|
315
|
+
|---|---|---|---|
|
|
316
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
317
|
+
| `body` | `SizeSetRequest \| null` | no | Request body; fields below. |
|
|
318
|
+
|
|
319
|
+
Body fields:
|
|
320
|
+
|
|
321
|
+
| Field | Type | Required | Description |
|
|
322
|
+
|---|---|---|---|
|
|
323
|
+
| `body.formats` | `Array<string> \| null` | no | max items 8 |
|
|
324
|
+
|
|
325
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
326
|
+
|
|
327
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
328
|
+
|
|
329
|
+
**Example**
|
|
330
|
+
|
|
331
|
+
```ts
|
|
332
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
333
|
+
const result = await g8.api.adCreatives.createAdCreativeSizeSet({ path: { creative_id: "id" } });
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
<a id="op-createvideoadcreative"></a>
|
|
339
|
+
|
|
340
|
+
### `g8.api.adCreatives.createVideoAdCreative(input)`
|
|
341
|
+
|
|
342
|
+
**Create Video Ad Creative**
|
|
343
|
+
|
|
344
|
+
- HTTP: `POST /api/v1/ad-creatives/video`
|
|
345
|
+
- operationId: `create_video_ad_creative_ad_creatives_video_post` (also callable as `g8.api.call("create_video_ad_creative_ad_creatives_video_post", input)`)
|
|
346
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
347
|
+
- API-key scope: `campaigns:write`
|
|
348
|
+
|
|
349
|
+
Assemble generated clips into a video ad on a template. FREE.
|
|
350
|
+
|
|
351
|
+
The footage was paid for when each clip was generated; this renders the
|
|
352
|
+
storyboard (1-5 shots) and the template's copy slots into one creative.
|
|
353
|
+
|
|
354
|
+
**Input**
|
|
355
|
+
|
|
356
|
+
| Field | Type | Required | Description |
|
|
357
|
+
|---|---|---|---|
|
|
358
|
+
| `body` | `CreateVideoCreativeRequest` | yes | Request body; fields below. |
|
|
359
|
+
|
|
360
|
+
Body fields (`CreateVideoCreativeRequest`):
|
|
361
|
+
|
|
362
|
+
| Field | Type | Required | Description |
|
|
363
|
+
|---|---|---|---|
|
|
364
|
+
| `body.storyboard` | `VideoStoryboard` | yes | |
|
|
365
|
+
| `body.template_id` | `string` | yes | min length 1, max length 40 |
|
|
366
|
+
| `body.campaign_id` | `string \| null` | no | |
|
|
367
|
+
| `body.name` | `string \| null` | no | max length 200 |
|
|
368
|
+
|
|
369
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
370
|
+
|
|
371
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
372
|
+
|
|
373
|
+
**Example**
|
|
374
|
+
|
|
375
|
+
```ts
|
|
376
|
+
const result = await g8.api.adCreatives.createVideoAdCreative({ body: { storyboard: {}, template_id: "id" } });
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
<a id="op-deleteadcreative"></a>
|
|
382
|
+
|
|
383
|
+
### `g8.api.adCreatives.deleteAdCreative(input)`
|
|
384
|
+
|
|
385
|
+
**Delete Ad Creative**
|
|
386
|
+
|
|
387
|
+
- HTTP: `DELETE /api/v1/ad-creatives/{creative_id}`
|
|
388
|
+
- operationId: `delete_ad_creative_ad_creatives__creative_id__delete` (also callable as `g8.api.call("delete_ad_creative_ad_creatives__creative_id__delete", input)`)
|
|
389
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
390
|
+
- API-key scope: `campaigns:delete`
|
|
391
|
+
|
|
392
|
+
Delete a creative and its revisions.
|
|
393
|
+
|
|
394
|
+
`ads:edit`, not `ads:delete` - the app's own gate, kept rather than
|
|
395
|
+
invented, because inventing a stricter one here would refuse callers the
|
|
396
|
+
app accepts.
|
|
397
|
+
|
|
398
|
+
Spends nothing.
|
|
399
|
+
|
|
400
|
+
**Input**
|
|
401
|
+
|
|
402
|
+
| Field | Type | Required | Description |
|
|
403
|
+
|---|---|---|---|
|
|
404
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
405
|
+
|
|
406
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
407
|
+
|
|
408
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
409
|
+
|
|
410
|
+
**Example**
|
|
411
|
+
|
|
412
|
+
```ts
|
|
413
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
414
|
+
const result = await g8.api.adCreatives.deleteAdCreative({ path: { creative_id: "id" } });
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
---
|
|
418
|
+
|
|
419
|
+
<a id="op-discardvideoclip"></a>
|
|
420
|
+
|
|
421
|
+
### `g8.api.adCreatives.discardVideoClip(input)`
|
|
422
|
+
|
|
423
|
+
**Discard Video Clip**
|
|
424
|
+
|
|
425
|
+
- HTTP: `DELETE /api/v1/ad-creatives/video/clips/{clip_id}`
|
|
426
|
+
- operationId: `discard_video_clip_ad_creatives_video_clips__clip_id__delete` (also callable as `g8.api.call("discard_video_clip_ad_creatives_video_clips__clip_id__delete", input)`)
|
|
427
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
428
|
+
- API-key scope: `campaigns:delete`
|
|
429
|
+
|
|
430
|
+
Discard a clip. FREE, and NOT a refund - the footage was already paid for.
|
|
431
|
+
|
|
432
|
+
**Input**
|
|
433
|
+
|
|
434
|
+
| Field | Type | Required | Description |
|
|
435
|
+
|---|---|---|---|
|
|
436
|
+
| `path.clip_id` | `string` | yes | Video clip id. |
|
|
437
|
+
|
|
438
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
439
|
+
|
|
440
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
441
|
+
|
|
442
|
+
**Example**
|
|
443
|
+
|
|
444
|
+
```ts
|
|
445
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
446
|
+
const result = await g8.api.adCreatives.discardVideoClip({ path: { clip_id: "id" } });
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
<a id="op-editadcreativeimageatpoint"></a>
|
|
452
|
+
|
|
453
|
+
### `g8.api.adCreatives.editAdCreativeImageAtPoint(input)`
|
|
454
|
+
|
|
455
|
+
**Edit Ad Creative Image At Point**
|
|
456
|
+
|
|
457
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/image-edit-at-point`
|
|
458
|
+
- operationId: `edit_ad_creative_image_at_point_ad_creatives__creative_id__image_edit_at_point_post` (also callable as `g8.api.call("edit_ad_creative_image_at_point_ad_creatives__creative_id__image_edit_at_point_post", input)`)
|
|
459
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
460
|
+
- API-key scope: `campaigns:run`
|
|
461
|
+
|
|
462
|
+
Pin a point on the image and say what changes there. SPENDS CREDIT.
|
|
463
|
+
|
|
464
|
+
An image model runs. `/image-element` is the free, deterministic way to
|
|
465
|
+
change TEXT in the image - reach for that first.
|
|
466
|
+
|
|
467
|
+
**Input**
|
|
468
|
+
|
|
469
|
+
| Field | Type | Required | Description |
|
|
470
|
+
|---|---|---|---|
|
|
471
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
472
|
+
| `body` | `ImagePointEditRequest` | yes | Request body; fields below. |
|
|
473
|
+
|
|
474
|
+
Body fields (`ImagePointEditRequest`):
|
|
475
|
+
|
|
476
|
+
| Field | Type | Required | Description |
|
|
477
|
+
|---|---|---|---|
|
|
478
|
+
| `body.instruction` | `string` | yes | min length 1, max length 500 |
|
|
479
|
+
| `body.x` | `number` | yes | min 0, max 100000 |
|
|
480
|
+
| `body.y` | `number` | yes | min 0, max 100000 |
|
|
481
|
+
|
|
482
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
483
|
+
|
|
484
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
485
|
+
|
|
486
|
+
**Example**
|
|
487
|
+
|
|
488
|
+
```ts
|
|
489
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
490
|
+
const result = await g8.api.adCreatives.editAdCreativeImageAtPoint({
|
|
491
|
+
path: { creative_id: "id" },
|
|
492
|
+
body: { instruction: "example", x: 0, y: 0 },
|
|
493
|
+
});
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
<a id="op-editadcreativeimageelement"></a>
|
|
499
|
+
|
|
500
|
+
### `g8.api.adCreatives.editAdCreativeImageElement(input)`
|
|
501
|
+
|
|
502
|
+
**Edit Ad Creative Image Element**
|
|
503
|
+
|
|
504
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/image-element`
|
|
505
|
+
- operationId: `edit_ad_creative_image_element_ad_creatives__creative_id__image_element_post` (also callable as `g8.api.call("edit_ad_creative_image_element_ad_creatives__creative_id__image_element_post", input)`)
|
|
506
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
507
|
+
- API-key scope: `campaigns:write`
|
|
508
|
+
|
|
509
|
+
Change one text element in the image. FREE - no model runs.
|
|
510
|
+
|
|
511
|
+
Deterministic: it rewrites the SVG. Send at least one of `text`, `fill` or
|
|
512
|
+
`font_size`; `index` comes from `GET /{id}/image-elements`.
|
|
513
|
+
|
|
514
|
+
**Input**
|
|
515
|
+
|
|
516
|
+
| Field | Type | Required | Description |
|
|
517
|
+
|---|---|---|---|
|
|
518
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
519
|
+
| `body` | `EditImageElementRequest` | yes | Request body; fields below. |
|
|
520
|
+
|
|
521
|
+
Body fields (`EditImageElementRequest`):
|
|
522
|
+
|
|
523
|
+
| Field | Type | Required | Description |
|
|
524
|
+
|---|---|---|---|
|
|
525
|
+
| `body.index` | `integer` | yes | min 0 |
|
|
526
|
+
| `body.fill` | `string \| null` | no | pattern `^#(?:[0-9a-fA-F]{3}\|[0-9a-fA-F]{4}\|[0-9a-fA-F]{6}\|[0-9a-fA-F]{8})$` |
|
|
527
|
+
| `body.font_size` | `integer \| null` | no | min 8, max 120 |
|
|
528
|
+
| `body.text` | `string \| null` | no | min length 1, max length 300 |
|
|
529
|
+
|
|
530
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
531
|
+
|
|
532
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
533
|
+
|
|
534
|
+
**Example**
|
|
535
|
+
|
|
536
|
+
```ts
|
|
537
|
+
const result = await g8.api.adCreatives.editAdCreativeImageElement({ path: { creative_id: "id" }, body: { index: 0 } });
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
---
|
|
541
|
+
|
|
542
|
+
<a id="op-enhancevideoclipprompt"></a>
|
|
543
|
+
|
|
544
|
+
### `g8.api.adCreatives.enhanceVideoClipPrompt(input)`
|
|
545
|
+
|
|
546
|
+
**Enhance Video Clip Prompt**
|
|
547
|
+
|
|
548
|
+
- HTTP: `POST /api/v1/ad-creatives/video/clips/prompt-enhance`
|
|
549
|
+
- operationId: `enhance_video_clip_prompt_ad_creatives_video_clips_prompt_enhance_post` (also callable as `g8.api.call("enhance_video_clip_prompt_ad_creatives_video_clips_prompt_enhance_post", input)`)
|
|
550
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
551
|
+
- API-key scope: `campaigns:run`
|
|
552
|
+
|
|
553
|
+
Write one generation prompt from the structured shot form. SPENDS CREDIT (small).
|
|
554
|
+
|
|
555
|
+
A model rewrites the form into the prompt `POST /ad-creatives/video/clips`
|
|
556
|
+
takes as `prompt_final`; the response carries `credits_charged`.
|
|
557
|
+
|
|
558
|
+
**Input**
|
|
559
|
+
|
|
560
|
+
| Field | Type | Required | Description |
|
|
561
|
+
|---|---|---|---|
|
|
562
|
+
| `body` | `VideoPromptEnhanceRequest` | yes | Request body; fields below. |
|
|
563
|
+
|
|
564
|
+
Body fields (`VideoPromptEnhanceRequest`):
|
|
565
|
+
|
|
566
|
+
| Field | Type | Required | Description |
|
|
567
|
+
|---|---|---|---|
|
|
568
|
+
| `body.prompt_inputs` | `VideoClipPromptInputs` | yes | |
|
|
569
|
+
|
|
570
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
571
|
+
|
|
572
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
573
|
+
|
|
574
|
+
**Example**
|
|
575
|
+
|
|
576
|
+
```ts
|
|
577
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
578
|
+
const result = await g8.api.adCreatives.enhanceVideoClipPrompt({ body: { prompt_inputs: { subject: "Example" } } });
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
---
|
|
582
|
+
|
|
583
|
+
<a id="op-extendvideoclip"></a>
|
|
584
|
+
|
|
585
|
+
### `g8.api.adCreatives.extendVideoClip(input)`
|
|
586
|
+
|
|
587
|
+
**Extend Video Clip**
|
|
588
|
+
|
|
589
|
+
- HTTP: `POST /api/v1/ad-creatives/video/clips/{clip_id}/extend`
|
|
590
|
+
- operationId: `extend_video_clip_ad_creatives_video_clips__clip_id__extend_post` (also callable as `g8.api.call("extend_video_clip_ad_creatives_video_clips__clip_id__extend_post", input)`)
|
|
591
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
592
|
+
- API-key scope: `campaigns:run`
|
|
593
|
+
|
|
594
|
+
Generate more footage continuing this clip. SPENDS CREDIT - priced per added second.
|
|
595
|
+
|
|
596
|
+
**Input**
|
|
597
|
+
|
|
598
|
+
| Field | Type | Required | Description |
|
|
599
|
+
|---|---|---|---|
|
|
600
|
+
| `path.clip_id` | `string` | yes | Video clip id. |
|
|
601
|
+
|
|
602
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
603
|
+
|
|
604
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
605
|
+
|
|
606
|
+
**Example**
|
|
607
|
+
|
|
608
|
+
```ts
|
|
609
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
610
|
+
const result = await g8.api.adCreatives.extendVideoClip({ path: { clip_id: "id" } });
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
<a id="op-generateadconcepts"></a>
|
|
616
|
+
|
|
617
|
+
### `g8.api.adCreatives.generateAdConcepts(input)`
|
|
618
|
+
|
|
619
|
+
**Generate Ad Concepts**
|
|
620
|
+
|
|
621
|
+
- HTTP: `POST /api/v1/ad-creatives/concepts`
|
|
622
|
+
- operationId: `generate_ad_concepts_ad_creatives_concepts_post` (also callable as `g8.api.call("generate_ad_concepts_ad_creatives_concepts_post", input)`)
|
|
623
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
624
|
+
- API-key scope: `campaigns:run`
|
|
625
|
+
|
|
626
|
+
Three to six creative DIRECTIONS to react to. SPENDS CREDIT - one pass.
|
|
627
|
+
|
|
628
|
+
Stateless: nothing is persisted, and no creative is generated. This is the
|
|
629
|
+
cheap step to take BEFORE `POST /ad-creatives`, which spends a copy pass
|
|
630
|
+
and an image pass per creative - reacting to four directions here costs a
|
|
631
|
+
fraction of generating four ads and discarding three.
|
|
632
|
+
|
|
633
|
+
**Input**
|
|
634
|
+
|
|
635
|
+
| Field | Type | Required | Description |
|
|
636
|
+
|---|---|---|---|
|
|
637
|
+
| `body` | `ConceptsRequest` | yes | Request body; fields below. |
|
|
638
|
+
|
|
639
|
+
Body fields (`ConceptsRequest`):
|
|
640
|
+
|
|
641
|
+
| Field | Type | Required | Description |
|
|
642
|
+
|---|---|---|---|
|
|
643
|
+
| `body.brief` | `string \| null` | no | max length 2000 |
|
|
644
|
+
| `body.count` | `integer` | no | default `4`, min 3, max 6 |
|
|
645
|
+
|
|
646
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
647
|
+
|
|
648
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
649
|
+
|
|
650
|
+
`StudioContentListPayload` fields:
|
|
651
|
+
|
|
652
|
+
| Field | Type | Required | Description |
|
|
653
|
+
|---|---|---|---|
|
|
654
|
+
| `items` | `Array<unknown>` | no | |
|
|
655
|
+
|
|
656
|
+
**Example**
|
|
657
|
+
|
|
658
|
+
```ts
|
|
659
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
660
|
+
const result = await g8.api.adCreatives.generateAdConcepts({ body: {} });
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
---
|
|
664
|
+
|
|
665
|
+
<a id="op-generatevideoclip"></a>
|
|
666
|
+
|
|
667
|
+
### `g8.api.adCreatives.generateVideoClip(input)`
|
|
668
|
+
|
|
669
|
+
**Generate Video Clip**
|
|
670
|
+
|
|
671
|
+
- HTTP: `POST /api/v1/ad-creatives/video/clips`
|
|
672
|
+
- operationId: `generate_video_clip_ad_creatives_video_clips_post` (also callable as `g8.api.call("generate_video_clip_ad_creatives_video_clips_post", input)`)
|
|
673
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
674
|
+
- API-key scope: `campaigns:run`
|
|
675
|
+
|
|
676
|
+
Generate one video clip. SPENDS CREDIT - priced per second of footage.
|
|
677
|
+
|
|
678
|
+
ASYNCHRONOUS: the clip is queued and returned at once; poll
|
|
679
|
+
`GET /ad-creatives/video/clips/{clip_id}`. An org can have only a few
|
|
680
|
+
clips generating at a time - over that cap is a 429.
|
|
681
|
+
|
|
682
|
+
**Input**
|
|
683
|
+
|
|
684
|
+
| Field | Type | Required | Description |
|
|
685
|
+
|---|---|---|---|
|
|
686
|
+
| `body` | `GenerateVideoClipRequest` | yes | Request body; fields below. |
|
|
687
|
+
|
|
688
|
+
Body fields (`GenerateVideoClipRequest`):
|
|
689
|
+
|
|
690
|
+
| Field | Type | Required | Description |
|
|
691
|
+
|---|---|---|---|
|
|
692
|
+
| `body.prompt_inputs` | `VideoClipPromptInputs` | yes | |
|
|
693
|
+
| `body.aspect_ratio` | `"16:9" \| "9:16"` | no | default `"16:9"` |
|
|
694
|
+
| `body.creative_id` | `string \| null` | no | |
|
|
695
|
+
| `body.duration_seconds` | `4 \| 6 \| 8` | no | default `8` |
|
|
696
|
+
| `body.prompt_final` | `string \| null` | no | max length 1000 |
|
|
697
|
+
| `body.reference_image_urls` | `Array<string>` | no | max items 3 |
|
|
698
|
+
| `body.start_image_url` | `string \| null` | no | max length 2000 |
|
|
699
|
+
|
|
700
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
701
|
+
|
|
702
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
703
|
+
|
|
704
|
+
**Example**
|
|
705
|
+
|
|
706
|
+
```ts
|
|
707
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
708
|
+
const result = await g8.api.adCreatives.generateVideoClip({ body: { prompt_inputs: { subject: "Example" } } });
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
---
|
|
712
|
+
|
|
713
|
+
<a id="op-getadcreative"></a>
|
|
714
|
+
|
|
715
|
+
### `g8.api.adCreatives.getAdCreative(input)`
|
|
716
|
+
|
|
717
|
+
**Get Ad Creative**
|
|
718
|
+
|
|
719
|
+
- HTTP: `GET /api/v1/ad-creatives/{creative_id}`
|
|
720
|
+
- operationId: `get_ad_creative_ad_creatives__creative_id__get` (also callable as `g8.api.call("get_ad_creative_ad_creatives__creative_id__get", input)`)
|
|
721
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
722
|
+
- API-key scope: `campaigns:read`
|
|
723
|
+
|
|
724
|
+
One creative, with its copy, its image and its generation status. FREE.
|
|
725
|
+
|
|
726
|
+
**Input**
|
|
727
|
+
|
|
728
|
+
| Field | Type | Required | Description |
|
|
729
|
+
|---|---|---|---|
|
|
730
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
731
|
+
|
|
732
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
733
|
+
|
|
734
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
735
|
+
|
|
736
|
+
**Example**
|
|
737
|
+
|
|
738
|
+
```ts
|
|
739
|
+
const result = await g8.api.adCreatives.getAdCreative({ path: { creative_id: "id" } });
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
<a id="op-getadcreativeconversation"></a>
|
|
745
|
+
|
|
746
|
+
### `g8.api.adCreatives.getAdCreativeConversation(input)`
|
|
747
|
+
|
|
748
|
+
**Get Ad Creative Conversation**
|
|
749
|
+
|
|
750
|
+
- HTTP: `GET /api/v1/ad-creatives/{creative_id}/conversation`
|
|
751
|
+
- operationId: `get_ad_creative_conversation_ad_creatives__creative_id__conversation_get` (also callable as `g8.api.call("get_ad_creative_conversation_ad_creatives__creative_id__conversation_get", input)`)
|
|
752
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
753
|
+
- API-key scope: `campaigns:read`
|
|
754
|
+
|
|
755
|
+
The chat-edit conversation recorded against this creative. FREE.
|
|
756
|
+
|
|
757
|
+
**Input**
|
|
758
|
+
|
|
759
|
+
| Field | Type | Required | Description |
|
|
760
|
+
|---|---|---|---|
|
|
761
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
762
|
+
|
|
763
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
764
|
+
|
|
765
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
766
|
+
|
|
767
|
+
**Example**
|
|
768
|
+
|
|
769
|
+
```ts
|
|
770
|
+
const result = await g8.api.adCreatives.getAdCreativeConversation({ path: { creative_id: "id" } });
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
---
|
|
774
|
+
|
|
775
|
+
<a id="op-getadcreativespecs"></a>
|
|
776
|
+
|
|
777
|
+
### `g8.api.adCreatives.getAdCreativeSpecs(input?)`
|
|
778
|
+
|
|
779
|
+
**Get Ad Creative Specs**
|
|
780
|
+
|
|
781
|
+
- HTTP: `GET /api/v1/ad-creatives/specs`
|
|
782
|
+
- operationId: `get_ad_creative_specs_ad_creatives_specs_get` (also callable as `g8.api.call("get_ad_creative_specs_ad_creatives_specs_get", input)`)
|
|
783
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
784
|
+
- API-key scope: `campaigns:read`
|
|
785
|
+
|
|
786
|
+
Every platform and ad format the generator supports. FREE.
|
|
787
|
+
|
|
788
|
+
The SOURCE of the `platform` / `ad_format` values `POST /ad-creatives`
|
|
789
|
+
accepts, and of the `formats` list `/size-set` takes. Read it first: an
|
|
790
|
+
invented format is rejected inside the service, after the request has
|
|
791
|
+
already been accepted.
|
|
792
|
+
|
|
793
|
+
**Input**: none.
|
|
794
|
+
|
|
795
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
796
|
+
|
|
797
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
798
|
+
|
|
799
|
+
**Example**
|
|
800
|
+
|
|
801
|
+
```ts
|
|
802
|
+
const result = await g8.api.adCreatives.getAdCreativeSpecs();
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
---
|
|
806
|
+
|
|
807
|
+
<a id="op-getadcreativestatus"></a>
|
|
808
|
+
|
|
809
|
+
### `g8.api.adCreatives.getAdCreativeStatus(input)`
|
|
810
|
+
|
|
811
|
+
**Get Ad Creative Status**
|
|
812
|
+
|
|
813
|
+
- HTTP: `GET /api/v1/ad-creatives/{creative_id}/status`
|
|
814
|
+
- operationId: `get_ad_creative_status_ad_creatives__creative_id__status_get` (also callable as `g8.api.call("get_ad_creative_status_ad_creatives__creative_id__status_get", input)`)
|
|
815
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
816
|
+
- API-key scope: `campaigns:read`
|
|
817
|
+
|
|
818
|
+
Just the generation status of one creative. FREE - the cheap poll target.
|
|
819
|
+
|
|
820
|
+
**Input**
|
|
821
|
+
|
|
822
|
+
| Field | Type | Required | Description |
|
|
823
|
+
|---|---|---|---|
|
|
824
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
825
|
+
|
|
826
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
827
|
+
|
|
828
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
829
|
+
|
|
830
|
+
**Example**
|
|
831
|
+
|
|
832
|
+
```ts
|
|
833
|
+
const result = await g8.api.adCreatives.getAdCreativeStatus({ path: { creative_id: "id" } });
|
|
834
|
+
```
|
|
835
|
+
|
|
836
|
+
---
|
|
837
|
+
|
|
838
|
+
<a id="op-getvideoclip"></a>
|
|
839
|
+
|
|
840
|
+
### `g8.api.adCreatives.getVideoClip(input)`
|
|
841
|
+
|
|
842
|
+
**Get Video Clip**
|
|
843
|
+
|
|
844
|
+
- HTTP: `GET /api/v1/ad-creatives/video/clips/{clip_id}`
|
|
845
|
+
- operationId: `get_video_clip_ad_creatives_video_clips__clip_id__get` (also callable as `g8.api.call("get_video_clip_ad_creatives_video_clips__clip_id__get", input)`)
|
|
846
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
847
|
+
- API-key scope: `campaigns:read`
|
|
848
|
+
|
|
849
|
+
One clip and its generation status. FREE - the poll target for clip generation.
|
|
850
|
+
|
|
851
|
+
**Input**
|
|
852
|
+
|
|
853
|
+
| Field | Type | Required | Description |
|
|
854
|
+
|---|---|---|---|
|
|
855
|
+
| `path.clip_id` | `string` | yes | Video clip id. |
|
|
856
|
+
|
|
857
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
858
|
+
|
|
859
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
860
|
+
|
|
861
|
+
**Example**
|
|
862
|
+
|
|
863
|
+
```ts
|
|
864
|
+
const result = await g8.api.adCreatives.getVideoClip({ path: { clip_id: "id" } });
|
|
865
|
+
```
|
|
866
|
+
|
|
867
|
+
---
|
|
868
|
+
|
|
869
|
+
<a id="op-listadcreativeimageelements"></a>
|
|
870
|
+
|
|
871
|
+
### `g8.api.adCreatives.listAdCreativeImageElements(input)`
|
|
872
|
+
|
|
873
|
+
**List Ad Creative Image Elements**
|
|
874
|
+
|
|
875
|
+
- HTTP: `GET /api/v1/ad-creatives/{creative_id}/image-elements`
|
|
876
|
+
- operationId: `list_ad_creative_image_elements_ad_creatives__creative_id__image_elements_get` (also callable as `g8.api.call("list_ad_creative_image_elements_ad_creatives__creative_id__image_elements_get", input)`)
|
|
877
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
878
|
+
- API-key scope: `campaigns:read`
|
|
879
|
+
|
|
880
|
+
Every editable text element inside the image, with its geometry. FREE.
|
|
881
|
+
|
|
882
|
+
The SOURCE of the `index` that `POST /{id}/image-element` takes. The
|
|
883
|
+
indices are positional and a regenerate reshuffles them, so re-read this
|
|
884
|
+
after any call that changes the image.
|
|
885
|
+
|
|
886
|
+
**Input**
|
|
887
|
+
|
|
888
|
+
| Field | Type | Required | Description |
|
|
889
|
+
|---|---|---|---|
|
|
890
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
891
|
+
|
|
892
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
893
|
+
|
|
894
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
895
|
+
|
|
896
|
+
`StudioContentListPayload` fields:
|
|
897
|
+
|
|
898
|
+
| Field | Type | Required | Description |
|
|
899
|
+
|---|---|---|---|
|
|
900
|
+
| `items` | `Array<unknown>` | no | |
|
|
901
|
+
|
|
902
|
+
**Example**
|
|
903
|
+
|
|
904
|
+
```ts
|
|
905
|
+
const result = await g8.api.adCreatives.listAdCreativeImageElements({ path: { creative_id: "id" } });
|
|
906
|
+
```
|
|
907
|
+
|
|
908
|
+
---
|
|
909
|
+
|
|
910
|
+
<a id="op-listadcreativerevisions"></a>
|
|
911
|
+
|
|
912
|
+
### `g8.api.adCreatives.listAdCreativeRevisions(input)`
|
|
913
|
+
|
|
914
|
+
**List Ad Creative Revisions**
|
|
915
|
+
|
|
916
|
+
- HTTP: `GET /api/v1/ad-creatives/{creative_id}/revisions`
|
|
917
|
+
- operationId: `list_ad_creative_revisions_ad_creatives__creative_id__revisions_get` (also callable as `g8.api.call("list_ad_creative_revisions_ad_creatives__creative_id__revisions_get", input)`)
|
|
918
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
919
|
+
- API-key scope: `campaigns:read`
|
|
920
|
+
|
|
921
|
+
The creative's snapshots. FREE - the `index` values restore takes.
|
|
922
|
+
|
|
923
|
+
**Input**
|
|
924
|
+
|
|
925
|
+
| Field | Type | Required | Description |
|
|
926
|
+
|---|---|---|---|
|
|
927
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
928
|
+
|
|
929
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
930
|
+
|
|
931
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
932
|
+
|
|
933
|
+
`StudioContentListPayload` fields:
|
|
934
|
+
|
|
935
|
+
| Field | Type | Required | Description |
|
|
936
|
+
|---|---|---|---|
|
|
937
|
+
| `items` | `Array<unknown>` | no | |
|
|
938
|
+
|
|
939
|
+
**Example**
|
|
940
|
+
|
|
941
|
+
```ts
|
|
942
|
+
const result = await g8.api.adCreatives.listAdCreativeRevisions({ path: { creative_id: "id" } });
|
|
943
|
+
```
|
|
944
|
+
|
|
945
|
+
---
|
|
946
|
+
|
|
947
|
+
<a id="op-listadcreatives"></a>
|
|
948
|
+
|
|
949
|
+
### `g8.api.adCreatives.listAdCreatives(input?)`
|
|
950
|
+
|
|
951
|
+
**List Ad Creatives**
|
|
952
|
+
|
|
953
|
+
- HTTP: `GET /api/v1/ad-creatives`
|
|
954
|
+
- operationId: `list_ad_creatives_ad_creatives_get` (also callable as `g8.api.call("list_ad_creatives_ad_creatives_get", input)`)
|
|
955
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
956
|
+
- API-key scope: `campaigns:read`
|
|
957
|
+
|
|
958
|
+
The org's ad creatives. FREE.
|
|
959
|
+
|
|
960
|
+
`templates=true` switches the collection entirely: it returns the reusable
|
|
961
|
+
templates, not a filtered view of the working creatives. The two sets do
|
|
962
|
+
not overlap.
|
|
963
|
+
|
|
964
|
+
**Input**
|
|
965
|
+
|
|
966
|
+
| Field | Type | Required | Description |
|
|
967
|
+
|---|---|---|---|
|
|
968
|
+
| `query.status` | `string \| null` | no | Filter by status. |
|
|
969
|
+
| `query.platform` | `string \| null` | no | Filter to one platform. |
|
|
970
|
+
| `query.ad_format` | `string \| null` | no | Filter to one format - landscape, square, portrait, ... |
|
|
971
|
+
| `query.templates` | `boolean` | no | List reusable TEMPLATES instead of working creatives. default `false` |
|
|
972
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
973
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
974
|
+
|
|
975
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
976
|
+
|
|
977
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
978
|
+
|
|
979
|
+
`StudioContentListPayload` fields:
|
|
980
|
+
|
|
981
|
+
| Field | Type | Required | Description |
|
|
982
|
+
|---|---|---|---|
|
|
983
|
+
| `items` | `Array<unknown>` | no | |
|
|
984
|
+
|
|
985
|
+
**Example**
|
|
986
|
+
|
|
987
|
+
```ts
|
|
988
|
+
const result = await g8.api.adCreatives.listAdCreatives();
|
|
989
|
+
```
|
|
990
|
+
|
|
991
|
+
---
|
|
992
|
+
|
|
993
|
+
<a id="op-listvideoadtemplates"></a>
|
|
994
|
+
|
|
995
|
+
### `g8.api.adCreatives.listVideoAdTemplates(input?)`
|
|
996
|
+
|
|
997
|
+
**List Video Ad Templates**
|
|
998
|
+
|
|
999
|
+
- HTTP: `GET /api/v1/ad-creatives/video-templates`
|
|
1000
|
+
- operationId: `list_video_ad_templates_ad_creatives_video_templates_get` (also callable as `g8.api.call("list_video_ad_templates_ad_creatives_video_templates_get", input)`)
|
|
1001
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1002
|
+
- API-key scope: `campaigns:read`
|
|
1003
|
+
|
|
1004
|
+
The video ad templates. FREE - the valid `template_id` values for `POST /ad-creatives/video`.
|
|
1005
|
+
|
|
1006
|
+
**Input**: none.
|
|
1007
|
+
|
|
1008
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1009
|
+
|
|
1010
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1011
|
+
|
|
1012
|
+
`StudioContentListPayload` fields:
|
|
1013
|
+
|
|
1014
|
+
| Field | Type | Required | Description |
|
|
1015
|
+
|---|---|---|---|
|
|
1016
|
+
| `items` | `Array<unknown>` | no | |
|
|
1017
|
+
|
|
1018
|
+
**Example**
|
|
1019
|
+
|
|
1020
|
+
```ts
|
|
1021
|
+
const result = await g8.api.adCreatives.listVideoAdTemplates();
|
|
1022
|
+
```
|
|
1023
|
+
|
|
1024
|
+
---
|
|
1025
|
+
|
|
1026
|
+
<a id="op-listvideoclips"></a>
|
|
1027
|
+
|
|
1028
|
+
### `g8.api.adCreatives.listVideoClips(input?)`
|
|
1029
|
+
|
|
1030
|
+
**List Video Clips**
|
|
1031
|
+
|
|
1032
|
+
- HTTP: `GET /api/v1/ad-creatives/video/clips`
|
|
1033
|
+
- operationId: `list_video_clips_ad_creatives_video_clips_get` (also callable as `g8.api.call("list_video_clips_ad_creatives_video_clips_get", input)`)
|
|
1034
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1035
|
+
- API-key scope: `campaigns:read`
|
|
1036
|
+
|
|
1037
|
+
The org's generated video clips. FREE.
|
|
1038
|
+
|
|
1039
|
+
**Input**
|
|
1040
|
+
|
|
1041
|
+
| Field | Type | Required | Description |
|
|
1042
|
+
|---|---|---|---|
|
|
1043
|
+
| `query.creative_id` | `string \| null` | no | Only the clips attached to this creative. |
|
|
1044
|
+
| `query.include_discarded` | `boolean` | no | Include clips you discarded. default `false` |
|
|
1045
|
+
|
|
1046
|
+
**Returns** `ApiResponse_StudioContentListPayload_`: the envelope `{ data: StudioContentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1047
|
+
|
|
1048
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1049
|
+
|
|
1050
|
+
`StudioContentListPayload` fields:
|
|
1051
|
+
|
|
1052
|
+
| Field | Type | Required | Description |
|
|
1053
|
+
|---|---|---|---|
|
|
1054
|
+
| `items` | `Array<unknown>` | no | |
|
|
1055
|
+
|
|
1056
|
+
**Example**
|
|
1057
|
+
|
|
1058
|
+
```ts
|
|
1059
|
+
const result = await g8.api.adCreatives.listVideoClips();
|
|
1060
|
+
```
|
|
1061
|
+
|
|
1062
|
+
---
|
|
1063
|
+
|
|
1064
|
+
<a id="op-moveadcreativetodraft"></a>
|
|
1065
|
+
|
|
1066
|
+
### `g8.api.adCreatives.moveAdCreativeToDraft(input)`
|
|
1067
|
+
|
|
1068
|
+
**Move Ad Creative To Draft**
|
|
1069
|
+
|
|
1070
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/move-to-draft`
|
|
1071
|
+
- operationId: `move_ad_creative_to_draft_ad_creatives__creative_id__move_to_draft_post` (also callable as `g8.api.call("move_ad_creative_to_draft_ad_creatives__creative_id__move_to_draft_post", input)`)
|
|
1072
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1073
|
+
- API-key scope: `campaigns:write`
|
|
1074
|
+
|
|
1075
|
+
Take the creative back out of the gallery. Inverse of move-to-gallery.
|
|
1076
|
+
|
|
1077
|
+
Spends nothing.
|
|
1078
|
+
|
|
1079
|
+
**Input**
|
|
1080
|
+
|
|
1081
|
+
| Field | Type | Required | Description |
|
|
1082
|
+
|---|---|---|---|
|
|
1083
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1084
|
+
|
|
1085
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1086
|
+
|
|
1087
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1088
|
+
|
|
1089
|
+
**Example**
|
|
1090
|
+
|
|
1091
|
+
```ts
|
|
1092
|
+
const result = await g8.api.adCreatives.moveAdCreativeToDraft({ path: { creative_id: "id" } });
|
|
1093
|
+
```
|
|
1094
|
+
|
|
1095
|
+
---
|
|
1096
|
+
|
|
1097
|
+
<a id="op-moveadcreativetogallery"></a>
|
|
1098
|
+
|
|
1099
|
+
### `g8.api.adCreatives.moveAdCreativeToGallery(input)`
|
|
1100
|
+
|
|
1101
|
+
**Move Ad Creative To Gallery**
|
|
1102
|
+
|
|
1103
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/move-to-gallery`
|
|
1104
|
+
- operationId: `move_ad_creative_to_gallery_ad_creatives__creative_id__move_to_gallery_post` (also callable as `g8.api.call("move_ad_creative_to_gallery_ad_creatives__creative_id__move_to_gallery_post", input)`)
|
|
1105
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1106
|
+
- API-key scope: `campaigns:write`
|
|
1107
|
+
|
|
1108
|
+
Move the creative out of drafts and into the GALLERY.
|
|
1109
|
+
|
|
1110
|
+
`ads:launch`, which the app's own permission table marks CRITICAL - the
|
|
1111
|
+
gallery is what the ad-platform surface picks from, so this is the step
|
|
1112
|
+
that makes a creative eligible to go live and start spending the
|
|
1113
|
+
customer's advertising budget. Everything else on this router is
|
|
1114
|
+
`ads:view` / `ads:create` / `ads:edit`.
|
|
1115
|
+
|
|
1116
|
+
`/move-to-draft` is the inverse and needs only `ads:edit`, matching the
|
|
1117
|
+
app: taking a creative back out of the gallery is not the consequential
|
|
1118
|
+
direction.
|
|
1119
|
+
|
|
1120
|
+
Spends nothing.
|
|
1121
|
+
|
|
1122
|
+
**Input**
|
|
1123
|
+
|
|
1124
|
+
| Field | Type | Required | Description |
|
|
1125
|
+
|---|---|---|---|
|
|
1126
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1127
|
+
|
|
1128
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1129
|
+
|
|
1130
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1131
|
+
|
|
1132
|
+
**Example**
|
|
1133
|
+
|
|
1134
|
+
```ts
|
|
1135
|
+
const result = await g8.api.adCreatives.moveAdCreativeToGallery({ path: { creative_id: "id" } });
|
|
1136
|
+
```
|
|
1137
|
+
|
|
1138
|
+
---
|
|
1139
|
+
|
|
1140
|
+
<a id="op-readadcreativethroughpersona"></a>
|
|
1141
|
+
|
|
1142
|
+
### `g8.api.adCreatives.readAdCreativeThroughPersona(input)`
|
|
1143
|
+
|
|
1144
|
+
**Read Ad Creative Through Persona**
|
|
1145
|
+
|
|
1146
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/persona-lens`
|
|
1147
|
+
- operationId: `read_ad_creative_through_persona_ad_creatives__creative_id__persona_lens_post` (also callable as `g8.api.call("read_ad_creative_through_persona_ad_creatives__creative_id__persona_lens_post", input)`)
|
|
1148
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1149
|
+
- API-key scope: `campaigns:run`
|
|
1150
|
+
|
|
1151
|
+
Critique the ad through a buyer persona's eyes. SPENDS CREDIT.
|
|
1152
|
+
|
|
1153
|
+
READ-ONLY against the creative - it returns a critique and changes
|
|
1154
|
+
nothing - but a model runs, so it still costs. That is why it is not
|
|
1155
|
+
tiered as a read.
|
|
1156
|
+
|
|
1157
|
+
**Input**
|
|
1158
|
+
|
|
1159
|
+
| Field | Type | Required | Description |
|
|
1160
|
+
|---|---|---|---|
|
|
1161
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1162
|
+
| `body` | `PersonaLensRequest` | yes | Request body; fields below. |
|
|
1163
|
+
|
|
1164
|
+
Body fields (`PersonaLensRequest`):
|
|
1165
|
+
|
|
1166
|
+
| Field | Type | Required | Description |
|
|
1167
|
+
|---|---|---|---|
|
|
1168
|
+
| `body.persona` | `CampaignSetPersona` | yes | |
|
|
1169
|
+
|
|
1170
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1171
|
+
|
|
1172
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1173
|
+
|
|
1174
|
+
**Example**
|
|
1175
|
+
|
|
1176
|
+
```ts
|
|
1177
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1178
|
+
const result = await g8.api.adCreatives.readAdCreativeThroughPersona({
|
|
1179
|
+
path: { creative_id: "id" },
|
|
1180
|
+
body: { persona: { title: "Example" } },
|
|
1181
|
+
});
|
|
1182
|
+
```
|
|
1183
|
+
|
|
1184
|
+
---
|
|
1185
|
+
|
|
1186
|
+
<a id="op-regenerateadcreativecopy"></a>
|
|
1187
|
+
|
|
1188
|
+
### `g8.api.adCreatives.regenerateAdCreativeCopy(input)`
|
|
1189
|
+
|
|
1190
|
+
**Regenerate Ad Creative Copy**
|
|
1191
|
+
|
|
1192
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/regenerate-copy`
|
|
1193
|
+
- operationId: `regenerate_ad_creative_copy_ad_creatives__creative_id__regenerate_copy_post` (also callable as `g8.api.call("regenerate_ad_creative_copy_ad_creatives__creative_id__regenerate_copy_post", input)`)
|
|
1194
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1195
|
+
- API-key scope: `campaigns:run`
|
|
1196
|
+
|
|
1197
|
+
Regenerate ALL the copy. SPENDS CREDIT, and DISCARDS the current text.
|
|
1198
|
+
|
|
1199
|
+
There is no instruction to steer it - it re-runs the original prompt. Use
|
|
1200
|
+
`/rewrite-field` to change one field with direction, or `PATCH` to set the
|
|
1201
|
+
words yourself for nothing.
|
|
1202
|
+
|
|
1203
|
+
**Input**
|
|
1204
|
+
|
|
1205
|
+
| Field | Type | Required | Description |
|
|
1206
|
+
|---|---|---|---|
|
|
1207
|
+
| `path.creative_id` | `string` | yes | Ad creative 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
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1217
|
+
const result = await g8.api.adCreatives.regenerateAdCreativeCopy({ path: { creative_id: "id" } });
|
|
1218
|
+
```
|
|
1219
|
+
|
|
1220
|
+
---
|
|
1221
|
+
|
|
1222
|
+
<a id="op-regenerateadcreativeimage"></a>
|
|
1223
|
+
|
|
1224
|
+
### `g8.api.adCreatives.regenerateAdCreativeImage(input)`
|
|
1225
|
+
|
|
1226
|
+
**Regenerate Ad Creative Image**
|
|
1227
|
+
|
|
1228
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/regenerate-image`
|
|
1229
|
+
- operationId: `regenerate_ad_creative_image_ad_creatives__creative_id__regenerate_image_post` (also callable as `g8.api.call("regenerate_ad_creative_image_ad_creatives__creative_id__regenerate_image_post", input)`)
|
|
1230
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1231
|
+
- API-key scope: `campaigns:run`
|
|
1232
|
+
|
|
1233
|
+
Regenerate the image. SPENDS CREDIT - a full image pass.
|
|
1234
|
+
|
|
1235
|
+
The previous image is snapshotted into the revision list first, so it is
|
|
1236
|
+
recoverable through `/restore-revision`.
|
|
1237
|
+
|
|
1238
|
+
**Input**
|
|
1239
|
+
|
|
1240
|
+
| Field | Type | Required | Description |
|
|
1241
|
+
|---|---|---|---|
|
|
1242
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1243
|
+
|
|
1244
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1245
|
+
|
|
1246
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1247
|
+
|
|
1248
|
+
**Example**
|
|
1249
|
+
|
|
1250
|
+
```ts
|
|
1251
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1252
|
+
const result = await g8.api.adCreatives.regenerateAdCreativeImage({ path: { creative_id: "id" } });
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
---
|
|
1256
|
+
|
|
1257
|
+
<a id="op-regeneratevideoclip"></a>
|
|
1258
|
+
|
|
1259
|
+
### `g8.api.adCreatives.regenerateVideoClip(input)`
|
|
1260
|
+
|
|
1261
|
+
**Regenerate Video Clip**
|
|
1262
|
+
|
|
1263
|
+
- HTTP: `POST /api/v1/ad-creatives/video/clips/{clip_id}/regenerate`
|
|
1264
|
+
- operationId: `regenerate_video_clip_ad_creatives_video_clips__clip_id__regenerate_post` (also callable as `g8.api.call("regenerate_video_clip_ad_creatives_video_clips__clip_id__regenerate_post", input)`)
|
|
1265
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1266
|
+
- API-key scope: `campaigns:run`
|
|
1267
|
+
|
|
1268
|
+
Generate the clip again from the same prompt. SPENDS CREDIT - a full new generation.
|
|
1269
|
+
|
|
1270
|
+
**Input**
|
|
1271
|
+
|
|
1272
|
+
| Field | Type | Required | Description |
|
|
1273
|
+
|---|---|---|---|
|
|
1274
|
+
| `path.clip_id` | `string` | yes | Video clip id. |
|
|
1275
|
+
|
|
1276
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1277
|
+
|
|
1278
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1279
|
+
|
|
1280
|
+
**Example**
|
|
1281
|
+
|
|
1282
|
+
```ts
|
|
1283
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1284
|
+
const result = await g8.api.adCreatives.regenerateVideoClip({ path: { clip_id: "id" } });
|
|
1285
|
+
```
|
|
1286
|
+
|
|
1287
|
+
---
|
|
1288
|
+
|
|
1289
|
+
<a id="op-reskinadcreative"></a>
|
|
1290
|
+
|
|
1291
|
+
### `g8.api.adCreatives.reskinAdCreative(input)`
|
|
1292
|
+
|
|
1293
|
+
**Reskin Ad Creative**
|
|
1294
|
+
|
|
1295
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/reskin`
|
|
1296
|
+
- operationId: `reskin_ad_creative_ad_creatives__creative_id__reskin_post` (also callable as `g8.api.call("reskin_ad_creative_ad_creatives__creative_id__reskin_post", input)`)
|
|
1297
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1298
|
+
- API-key scope: `campaigns:write`
|
|
1299
|
+
|
|
1300
|
+
Swap the creative's palette. FREE - deterministic colour replacement.
|
|
1301
|
+
|
|
1302
|
+
Brand colours only. Nothing is regenerated, so the layout and the copy are
|
|
1303
|
+
byte-identical afterwards.
|
|
1304
|
+
|
|
1305
|
+
**Input**
|
|
1306
|
+
|
|
1307
|
+
| Field | Type | Required | Description |
|
|
1308
|
+
|---|---|---|---|
|
|
1309
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1310
|
+
| `body` | `ReskinRequest` | yes | Request body; fields below. |
|
|
1311
|
+
|
|
1312
|
+
Body fields (`ReskinRequest`):
|
|
1313
|
+
|
|
1314
|
+
| Field | Type | Required | Description |
|
|
1315
|
+
|---|---|---|---|
|
|
1316
|
+
| `body.swaps` | `Array<ColorSwap>` | yes | min items 1, max items 8 |
|
|
1317
|
+
|
|
1318
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1319
|
+
|
|
1320
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1321
|
+
|
|
1322
|
+
**Example**
|
|
1323
|
+
|
|
1324
|
+
```ts
|
|
1325
|
+
const result = await g8.api.adCreatives.reskinAdCreative({
|
|
1326
|
+
path: { creative_id: "id" },
|
|
1327
|
+
body: { swaps: [{ from_color: "example", to_color: "example" }] },
|
|
1328
|
+
});
|
|
1329
|
+
```
|
|
1330
|
+
|
|
1331
|
+
---
|
|
1332
|
+
|
|
1333
|
+
<a id="op-restoreadcreativerevision"></a>
|
|
1334
|
+
|
|
1335
|
+
### `g8.api.adCreatives.restoreAdCreativeRevision(input)`
|
|
1336
|
+
|
|
1337
|
+
**Restore Ad Creative Revision**
|
|
1338
|
+
|
|
1339
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/restore-revision`
|
|
1340
|
+
- operationId: `restore_ad_creative_revision_ad_creatives__creative_id__restore_revision_post` (also callable as `g8.api.call("restore_ad_creative_revision_ad_creatives__creative_id__restore_revision_post", input)`)
|
|
1341
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1342
|
+
- API-key scope: `campaigns:write`
|
|
1343
|
+
|
|
1344
|
+
Roll the creative back to a snapshot. FREE, and REVERSIBLE.
|
|
1345
|
+
|
|
1346
|
+
The restore is itself snapshotted first, so restoring the wrong revision
|
|
1347
|
+
is undone by restoring the one this call just created.
|
|
1348
|
+
|
|
1349
|
+
**Input**
|
|
1350
|
+
|
|
1351
|
+
| Field | Type | Required | Description |
|
|
1352
|
+
|---|---|---|---|
|
|
1353
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1354
|
+
| `body` | `RestoreRevisionRequest` | yes | Request body; fields below. |
|
|
1355
|
+
|
|
1356
|
+
Body fields (`RestoreRevisionRequest`):
|
|
1357
|
+
|
|
1358
|
+
| Field | Type | Required | Description |
|
|
1359
|
+
|---|---|---|---|
|
|
1360
|
+
| `body.index` | `integer` | yes | min 0 |
|
|
1361
|
+
|
|
1362
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1363
|
+
|
|
1364
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1365
|
+
|
|
1366
|
+
**Example**
|
|
1367
|
+
|
|
1368
|
+
```ts
|
|
1369
|
+
const result = await g8.api.adCreatives.restoreAdCreativeRevision({ path: { creative_id: "id" }, body: { index: 0 } });
|
|
1370
|
+
```
|
|
1371
|
+
|
|
1372
|
+
---
|
|
1373
|
+
|
|
1374
|
+
<a id="op-retryadcreativegeneration"></a>
|
|
1375
|
+
|
|
1376
|
+
### `g8.api.adCreatives.retryAdCreativeGeneration(input)`
|
|
1377
|
+
|
|
1378
|
+
**Retry Ad Creative Generation**
|
|
1379
|
+
|
|
1380
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/retry`
|
|
1381
|
+
- operationId: `retry_ad_creative_generation_ad_creatives__creative_id__retry_post` (also callable as `g8.api.call("retry_ad_creative_generation_ad_creatives__creative_id__retry_post", input)`)
|
|
1382
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1383
|
+
- API-key scope: `campaigns:run`
|
|
1384
|
+
|
|
1385
|
+
Re-run a FAILED generation. SPENDS CREDIT - the copy and image passes run again.
|
|
1386
|
+
|
|
1387
|
+
**Input**
|
|
1388
|
+
|
|
1389
|
+
| Field | Type | Required | Description |
|
|
1390
|
+
|---|---|---|---|
|
|
1391
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1392
|
+
|
|
1393
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1394
|
+
|
|
1395
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1396
|
+
|
|
1397
|
+
**Example**
|
|
1398
|
+
|
|
1399
|
+
```ts
|
|
1400
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1401
|
+
const result = await g8.api.adCreatives.retryAdCreativeGeneration({ path: { creative_id: "id" } });
|
|
1402
|
+
```
|
|
1403
|
+
|
|
1404
|
+
---
|
|
1405
|
+
|
|
1406
|
+
<a id="op-reviewadcreative"></a>
|
|
1407
|
+
|
|
1408
|
+
### `g8.api.adCreatives.reviewAdCreative(input)`
|
|
1409
|
+
|
|
1410
|
+
**Review Ad Creative**
|
|
1411
|
+
|
|
1412
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/ai-review`
|
|
1413
|
+
- operationId: `review_ad_creative_ad_creatives__creative_id__ai_review_post` (also callable as `g8.api.call("review_ad_creative_ad_creatives__creative_id__ai_review_post", input)`)
|
|
1414
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1415
|
+
- API-key scope: `campaigns:run`
|
|
1416
|
+
|
|
1417
|
+
Review the creative and return findings. SPENDS CREDIT.
|
|
1418
|
+
|
|
1419
|
+
`deep` defaults FALSE here and TRUE on the landing-page review. That is
|
|
1420
|
+
the app's own asymmetry and it is preserved rather than smoothed over -
|
|
1421
|
+
the two passes cost differently, and quietly changing either default would
|
|
1422
|
+
make the same call behave differently through the API than in Studio.
|
|
1423
|
+
|
|
1424
|
+
**Input**
|
|
1425
|
+
|
|
1426
|
+
| Field | Type | Required | Description |
|
|
1427
|
+
|---|---|---|---|
|
|
1428
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1429
|
+
| `body` | `AdAIReviewRequest \| null` | no | Request body; fields below. |
|
|
1430
|
+
|
|
1431
|
+
Body fields:
|
|
1432
|
+
|
|
1433
|
+
| Field | Type | Required | Description |
|
|
1434
|
+
|---|---|---|---|
|
|
1435
|
+
| `body.deep` | `boolean` | no | default `false` |
|
|
1436
|
+
|
|
1437
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1438
|
+
|
|
1439
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1440
|
+
|
|
1441
|
+
**Example**
|
|
1442
|
+
|
|
1443
|
+
```ts
|
|
1444
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1445
|
+
const result = await g8.api.adCreatives.reviewAdCreative({ path: { creative_id: "id" } });
|
|
1446
|
+
```
|
|
1447
|
+
|
|
1448
|
+
---
|
|
1449
|
+
|
|
1450
|
+
<a id="op-rewriteadcreativefield"></a>
|
|
1451
|
+
|
|
1452
|
+
### `g8.api.adCreatives.rewriteAdCreativeField(input)`
|
|
1453
|
+
|
|
1454
|
+
**Rewrite Ad Creative Field**
|
|
1455
|
+
|
|
1456
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/rewrite-field`
|
|
1457
|
+
- operationId: `rewrite_ad_creative_field_ad_creatives__creative_id__rewrite_field_post` (also callable as `g8.api.call("rewrite_ad_creative_field_ad_creatives__creative_id__rewrite_field_post", input)`)
|
|
1458
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1459
|
+
- API-key scope: `campaigns:run`
|
|
1460
|
+
|
|
1461
|
+
Rewrite ONE copy field with an instruction. SPENDS CREDIT.
|
|
1462
|
+
|
|
1463
|
+
The cheap, steerable alternative to `/regenerate-copy`: it touches one
|
|
1464
|
+
field and leaves the rest alone.
|
|
1465
|
+
|
|
1466
|
+
**Input**
|
|
1467
|
+
|
|
1468
|
+
| Field | Type | Required | Description |
|
|
1469
|
+
|---|---|---|---|
|
|
1470
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1471
|
+
| `body` | `RewriteFieldRequest` | yes | Request body; fields below. |
|
|
1472
|
+
|
|
1473
|
+
Body fields (`RewriteFieldRequest`):
|
|
1474
|
+
|
|
1475
|
+
| Field | Type | Required | Description |
|
|
1476
|
+
|---|---|---|---|
|
|
1477
|
+
| `body.field` | `string` | yes | max length 64 |
|
|
1478
|
+
| `body.instruction` | `string` | yes | max length 2000 |
|
|
1479
|
+
|
|
1480
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1481
|
+
|
|
1482
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1483
|
+
|
|
1484
|
+
**Example**
|
|
1485
|
+
|
|
1486
|
+
```ts
|
|
1487
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1488
|
+
const result = await g8.api.adCreatives.rewriteAdCreativeField({
|
|
1489
|
+
path: { creative_id: "id" },
|
|
1490
|
+
body: { field: "example", instruction: "example" },
|
|
1491
|
+
});
|
|
1492
|
+
```
|
|
1493
|
+
|
|
1494
|
+
---
|
|
1495
|
+
|
|
1496
|
+
<a id="op-saveadcreativeastemplate"></a>
|
|
1497
|
+
|
|
1498
|
+
### `g8.api.adCreatives.saveAdCreativeAsTemplate(input)`
|
|
1499
|
+
|
|
1500
|
+
**Save Ad Creative As Template**
|
|
1501
|
+
|
|
1502
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/save-as-template`
|
|
1503
|
+
- operationId: `save_ad_creative_as_template_ad_creatives__creative_id__save_as_template_post` (also callable as `g8.api.call("save_ad_creative_as_template_ad_creatives__creative_id__save_as_template_post", input)`)
|
|
1504
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1505
|
+
- API-key scope: `campaigns:write`
|
|
1506
|
+
|
|
1507
|
+
Clone a finished creative as a reusable template. FREE.
|
|
1508
|
+
|
|
1509
|
+
A COPY - the original creative is untouched, and the template appears in
|
|
1510
|
+
`GET /ad-creatives?templates=true` rather than in the main list.
|
|
1511
|
+
|
|
1512
|
+
**Input**
|
|
1513
|
+
|
|
1514
|
+
| Field | Type | Required | Description |
|
|
1515
|
+
|---|---|---|---|
|
|
1516
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1517
|
+
|
|
1518
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1519
|
+
|
|
1520
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1521
|
+
|
|
1522
|
+
**Example**
|
|
1523
|
+
|
|
1524
|
+
```ts
|
|
1525
|
+
const result = await g8.api.adCreatives.saveAdCreativeAsTemplate({ path: { creative_id: "id" } });
|
|
1526
|
+
```
|
|
1527
|
+
|
|
1528
|
+
---
|
|
1529
|
+
|
|
1530
|
+
<a id="op-setadcreativeimage"></a>
|
|
1531
|
+
|
|
1532
|
+
### `g8.api.adCreatives.setAdCreativeImage(input)`
|
|
1533
|
+
|
|
1534
|
+
**Set Ad Creative Image**
|
|
1535
|
+
|
|
1536
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/set-image`
|
|
1537
|
+
- operationId: `set_ad_creative_image_ad_creatives__creative_id__set_image_post` (also callable as `g8.api.call("set_ad_creative_image_ad_creatives__creative_id__set_image_post", input)`)
|
|
1538
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1539
|
+
- API-key scope: `campaigns:write`
|
|
1540
|
+
|
|
1541
|
+
Point the creative at an image already in the library. FREE.
|
|
1542
|
+
|
|
1543
|
+
The API-shaped alternative to the multipart upload route: put the file in
|
|
1544
|
+
the image library, then reference it here by id.
|
|
1545
|
+
|
|
1546
|
+
**Input**
|
|
1547
|
+
|
|
1548
|
+
| Field | Type | Required | Description |
|
|
1549
|
+
|---|---|---|---|
|
|
1550
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1551
|
+
| `body` | `SetImageRequest` | yes | Request body; fields below. |
|
|
1552
|
+
|
|
1553
|
+
Body fields (`SetImageRequest`):
|
|
1554
|
+
|
|
1555
|
+
| Field | Type | Required | Description |
|
|
1556
|
+
|---|---|---|---|
|
|
1557
|
+
| `body.library_image_id` | `string` | yes | |
|
|
1558
|
+
|
|
1559
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1560
|
+
|
|
1561
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1562
|
+
|
|
1563
|
+
**Example**
|
|
1564
|
+
|
|
1565
|
+
```ts
|
|
1566
|
+
const result = await g8.api.adCreatives.setAdCreativeImage({ path: { creative_id: "id" }, body: { library_image_id: "id" } });
|
|
1567
|
+
```
|
|
1568
|
+
|
|
1569
|
+
---
|
|
1570
|
+
|
|
1571
|
+
<a id="op-setadcreativeimagefocus"></a>
|
|
1572
|
+
|
|
1573
|
+
### `g8.api.adCreatives.setAdCreativeImageFocus(input)`
|
|
1574
|
+
|
|
1575
|
+
**Set Ad Creative Image Focus**
|
|
1576
|
+
|
|
1577
|
+
- HTTP: `POST /api/v1/ad-creatives/{creative_id}/set-image-focus`
|
|
1578
|
+
- operationId: `set_ad_creative_image_focus_ad_creatives__creative_id__set_image_focus_post` (also callable as `g8.api.call("set_ad_creative_image_focus_ad_creatives__creative_id__set_image_focus_post", input)`)
|
|
1579
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1580
|
+
- API-key scope: `campaigns:write`
|
|
1581
|
+
|
|
1582
|
+
Move the crop focal point. FREE.
|
|
1583
|
+
|
|
1584
|
+
0-1 in each axis, 0.5/0.5 being the centre. It decides what survives the
|
|
1585
|
+
crop in every OTHER format the creative is rendered at.
|
|
1586
|
+
|
|
1587
|
+
**Input**
|
|
1588
|
+
|
|
1589
|
+
| Field | Type | Required | Description |
|
|
1590
|
+
|---|---|---|---|
|
|
1591
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1592
|
+
| `body` | `SetImageFocusRequest` | yes | Request body; fields below. |
|
|
1593
|
+
|
|
1594
|
+
Body fields (`SetImageFocusRequest`):
|
|
1595
|
+
|
|
1596
|
+
| Field | Type | Required | Description |
|
|
1597
|
+
|---|---|---|---|
|
|
1598
|
+
| `body.focus_x` | `number` | no | default `0.5` |
|
|
1599
|
+
| `body.focus_y` | `number` | no | default `0.5` |
|
|
1600
|
+
|
|
1601
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1602
|
+
|
|
1603
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1604
|
+
|
|
1605
|
+
**Example**
|
|
1606
|
+
|
|
1607
|
+
```ts
|
|
1608
|
+
const result = await g8.api.adCreatives.setAdCreativeImageFocus({ path: { creative_id: "id" }, body: {} });
|
|
1609
|
+
```
|
|
1610
|
+
|
|
1611
|
+
---
|
|
1612
|
+
|
|
1613
|
+
<a id="op-updateadcreative"></a>
|
|
1614
|
+
|
|
1615
|
+
### `g8.api.adCreatives.updateAdCreative(input)`
|
|
1616
|
+
|
|
1617
|
+
**Update Ad Creative**
|
|
1618
|
+
|
|
1619
|
+
- HTTP: `PATCH /api/v1/ad-creatives/{creative_id}`
|
|
1620
|
+
- operationId: `update_ad_creative_ad_creatives__creative_id__patch` (also callable as `g8.api.call("update_ad_creative_ad_creatives__creative_id__patch", input)`)
|
|
1621
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1622
|
+
- API-key scope: `campaigns:write`
|
|
1623
|
+
|
|
1624
|
+
Edit the copy by hand. FREE - no model runs.
|
|
1625
|
+
|
|
1626
|
+
Use this rather than `/rewrite-field` when you already know the words.
|
|
1627
|
+
|
|
1628
|
+
**Input**
|
|
1629
|
+
|
|
1630
|
+
| Field | Type | Required | Description |
|
|
1631
|
+
|---|---|---|---|
|
|
1632
|
+
| `path.creative_id` | `string` | yes | Ad creative id. |
|
|
1633
|
+
| `body` | `UpdateAdCreativeRequest` | yes | Request body; fields below. |
|
|
1634
|
+
|
|
1635
|
+
Body fields (`UpdateAdCreativeRequest`):
|
|
1636
|
+
|
|
1637
|
+
| Field | Type | Required | Description |
|
|
1638
|
+
|---|---|---|---|
|
|
1639
|
+
| `body.cta` | `string \| null` | no | |
|
|
1640
|
+
| `body.description` | `string \| null` | no | |
|
|
1641
|
+
| `body.headline` | `string \| null` | no | |
|
|
1642
|
+
| `body.name` | `string \| null` | no | |
|
|
1643
|
+
| `body.primary_text` | `string \| null` | no | |
|
|
1644
|
+
|
|
1645
|
+
**Returns** `ApiResponse_StudioContentPayload_`: the envelope `{ data: StudioContentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1646
|
+
|
|
1647
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1648
|
+
|
|
1649
|
+
**Example**
|
|
1650
|
+
|
|
1651
|
+
```ts
|
|
1652
|
+
const result = await g8.api.adCreatives.updateAdCreative({ path: { creative_id: "id" }, body: {} });
|
|
1653
|
+
```
|
|
1654
|
+
|
|
1655
|
+
---
|
|
1656
|
+
|
|
1657
|
+
## Referenced types
|
|
1658
|
+
|
|
1659
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
1660
|
+
|
|
1661
|
+
<a id="type-campaignsetpersona"></a>
|
|
1662
|
+
|
|
1663
|
+
### `CampaignSetPersona`
|
|
1664
|
+
|
|
1665
|
+
A buyer persona, as the lens pass needs to see it.
|
|
1666
|
+
|
|
1667
|
+
| Field | Type | Required | Description |
|
|
1668
|
+
|---|---|---|---|
|
|
1669
|
+
| `title` | `string` | yes | min length 1, max length 120 |
|
|
1670
|
+
| `id` | `string \| null` | no | |
|
|
1671
|
+
| `summary` | `string \| null` | no | max length 600 |
|
|
1672
|
+
|
|
1673
|
+
<a id="type-colorswap"></a>
|
|
1674
|
+
|
|
1675
|
+
### `ColorSwap`
|
|
1676
|
+
|
|
1677
|
+
One colour replaced by another, both as hex.
|
|
1678
|
+
|
|
1679
|
+
| Field | Type | Required | Description |
|
|
1680
|
+
|---|---|---|---|
|
|
1681
|
+
| `from_color` | `string` | yes | pattern `^#(?:[0-9a-fA-F]{3}\|[0-9a-fA-F]{4}\|[0-9a-fA-F]{6}\|[0-9a-fA-F]{8})$` |
|
|
1682
|
+
| `to_color` | `string` | yes | pattern `^#(?:[0-9a-fA-F]{3}\|[0-9a-fA-F]{4}\|[0-9a-fA-F]{6}\|[0-9a-fA-F]{8})$` |
|
|
1683
|
+
|
|
1684
|
+
<a id="type-videoclippromptinputs"></a>
|
|
1685
|
+
|
|
1686
|
+
### `VideoClipPromptInputs`
|
|
1687
|
+
|
|
1688
|
+
The structured shot description. `subject` is the only required field.
|
|
1689
|
+
|
|
1690
|
+
| Field | Type | Required | Description |
|
|
1691
|
+
|---|---|---|---|
|
|
1692
|
+
| `subject` | `string` | yes | min length 3, max length 500 |
|
|
1693
|
+
| `camera` | `string \| null` | no | max length 40 |
|
|
1694
|
+
| `lighting` | `string \| null` | no | max length 120 |
|
|
1695
|
+
| `negative` | `string \| null` | no | max length 300 |
|
|
1696
|
+
| `setting` | `string \| null` | no | max length 300 |
|
|
1697
|
+
| `style` | `string \| null` | no | max length 40 |
|
|
1698
|
+
|
|
1699
|
+
<a id="type-videostoryboard"></a>
|
|
1700
|
+
|
|
1701
|
+
### `VideoStoryboard`
|
|
1702
|
+
|
|
1703
|
+
The ordered shots (1-5) and the copy for the template's text slots.
|
|
1704
|
+
|
|
1705
|
+
| Field | Type | Required | Description |
|
|
1706
|
+
|---|---|---|---|
|
|
1707
|
+
| `copy` | `Record<string, string>` | no | Copy slot id (headline, subline, cta, ...) -> text. |
|
|
1708
|
+
| `shots` | `Array<VideoShot>` | no | max items 5 |
|