NativeAds Headless API (1.0.0)
Download OpenAPI specification:Download
The headless REST API for programmatic creative generation. Authenticate with a per-user API key (Authorization: Bearer nak_...). This reference lists only the endpoints an API key may call; generation endpoints are asynchronous (submit returns an id, then poll).
Initiate file upload
Get presigned URLs for secure direct-to-storage uploads
Authorizations:
Request Body schema: application/jsonrequired
| brandId required | string <uuid> |
| categoryId | string <uuid> |
required | Array of objects |
Responses
Request samples
- Payload
{- "brandId": "0e9bcbb3-096e-49f9-aeea-7a13a201eff5",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0",
- "files": [
- {
- "fileName": "string",
- "fileType": "image/jpeg",
- "fileSize": 524288000,
- "isLogo": true,
- "dimension": {
- "width": 1024,
- "height": 1024
}
}
]
}Response samples
- 201
- 400
- 401
- 429
{- "uploads": [
- {
- "uploadId": "ef523ba8-509e-47af-8e2c-5fa751596497",
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "expires": "2019-08-24T14:15:22Z"
}
]
}Confirm successful upload
Marks upload as complete and triggers asset processing
Authorizations:
Request Body schema: application/jsonrequired
| uploadId required | string <uuid> |
| categoryId | string <uuid> Optional category ID to assign the asset to |
Responses
Request samples
- Payload
{- "uploadId": "ef523ba8-509e-47af-8e2c-5fa751596497",
- "categoryId": "337f5e5d-288b-40d5-be14-901cc3acacc0"
}Response samples
- 200
- 400
- 404
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "status": "uploading",
- "url": "string",
- "thumbnailUrl": "string",
- "metadata": {
- "fileName": "logo-dark.png",
- "fileType": "image/jpeg",
- "fileSize": 0,
- "type": "image",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "duration": "string",
- "description": "string"
}, - "tags": [
- "string"
], - "autoGeneratedTags": [
- "string"
], - "usedInCampaigns": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "assetQualityTags": [
- {
- "level": "ok",
- "reasonCode": "low-quality-scores",
- "reason": "Image appears blurry due to low resolution.",
- "recommendation": "Upload higher resolution image (Above 1000 pixels)."
}
], - "qualityAssessment": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "status": "processing"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "version": 0
}Cancel an in-progress upload
Cancels an upload and cleans up any temporary resources
Authorizations:
path Parameters
| uploadId required | string <uuid> Unique identifier of the upload to cancel |
Responses
Response samples
- 200
- 404
{- "success": true,
- "message": "Upload cancelled successfully"
}Response samples
- 200
- 404
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "status": "uploading",
- "url": "string",
- "thumbnailUrl": "string",
- "metadata": {
- "fileName": "logo-dark.png",
- "fileType": "image/jpeg",
- "fileSize": 0,
- "type": "image",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "duration": "string",
- "description": "string"
}, - "tags": [
- "string"
], - "autoGeneratedTags": [
- "string"
], - "usedInCampaigns": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "assetQualityTags": [
- {
- "level": "ok",
- "reasonCode": "low-quality-scores",
- "reason": "Image appears blurry due to low resolution.",
- "recommendation": "Upload higher resolution image (Above 1000 pixels)."
}
], - "qualityAssessment": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "status": "processing"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "version": 0
}List brand assets
Retrieve assets with filtering and pagination
Authorizations:
path Parameters
| brandId required | string <uuid> |
query Parameters
| type | string Enum: "image" "video" "document" |
| status | string Enum: "processing" "complete" "failed" |
| tags | Array of strings |
| campaignId | string <uuid> |
| page | integer Default: 1 |
| limit | integer <= 100 Default: 20 |
| sort | string Default: "-createdAt" Enum: "createdAt" "-createdAt" "fileName" "-fileName" |
Responses
Response samples
- 200
- 400
- 404
{- "categories": [
- {
- "id": "general",
- "name": "string",
- "assets": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "status": "uploading",
- "url": "string",
- "thumbnailUrl": "string",
- "metadata": {
- "fileName": "logo-dark.png",
- "fileType": "image/jpeg",
- "fileSize": 0,
- "type": "image",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "duration": "string",
- "description": "string"
}, - "tags": [
- "string"
], - "autoGeneratedTags": [
- "string"
], - "usedInCampaigns": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "assetQualityTags": [
- {
- "level": "ok",
- "reasonCode": "low-quality-scores",
- "reason": "Image appears blurry due to low resolution.",
- "recommendation": "Upload higher resolution image (Above 1000 pixels)."
}
], - "qualityAssessment": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "status": "processing"
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "version": 0
}
]
}
]
}Create a new brand
Authorizations:
Request Body schema: application/jsonrequired
Details of the brand to be created
| name required | string [ 1 .. 100 ] characters |
| industry required | string [ 1 .. 50 ] characters |
| description required | string [ 10 .. 280 ] characters |
| mission required | string <= 1000 characters |
| values required | Array of strings <= 10 items [ items <= 50 characters ] |
| tone required | Array of strings[ items <= 5 items ] Items Enum: "Professional" "Casual" "Friendly" "Authoritative" "Playful" "Innovative" "Traditional" "Luxurious" |
| voice required | Array of strings <= 5 items [ items <= 50 characters ] |
| logoAssetId | string or null <uuid> ID of an existing asset to be used as the brand's logo, should be a logo asset. |
Responses
Request samples
- Payload
{- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAssetId": "123e4567-e89b-12d3-a456-426614174000"
}Response samples
- 201
- 400
- 401
- 403
- 422
- 429
- 500
- 503
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "organizationId": "123e4567-e89b-12d3-a456-426614174000",
- "organizationName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "brandDnaStatus": "none"
}Retrieve a list of brands
Authorizations:
query Parameters
| all_organizations | boolean Default: false Set to 'true' to retrieve brands from all organizations. This is an admin-only parameter. Requests from non-admin users with this parameter will result in a 403 Forbidden error. |
| page | integer >= 1 Default: 1 |
| limit | integer [ 1 .. 100 ] Default: 20 |
| sort | string Default: "-createdAt" Enum: "name" "-name" "createdAt" "-createdAt" |
| industry | string |
Responses
Response samples
- 200
- 400
- 401
- 403
- 429
- 500
{- "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "organizationId": "123e4567-e89b-12d3-a456-426614174000",
- "organizationName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "brandDnaStatus": "none"
}
], - "pagination": {
- "total": 0,
- "pages": 0,
- "currentPage": 0,
- "limit": 0
},
}Retrieve a specific brand
Authorizations:
path Parameters
| brandId required | string <uuid> Unique identifier of the brand |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "organizationId": "123e4567-e89b-12d3-a456-426614174000",
- "organizationName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "brandDnaStatus": "none"
}Update a specific brand
Authorizations:
path Parameters
| brandId required | string <uuid> Unique identifier of the brand |
header Parameters
| If-Match required | string ETag from previous get/update |
Request Body schema: application/jsonrequired
| name | string or null [ 1 .. 100 ] characters |
| industry | string or null [ 1 .. 50 ] characters |
| description | string or null [ 10 .. 280 ] characters |
| mission | string or null <= 1000 characters |
| values | Array of strings or null <= 10 items [ items <= 50 characters ] |
| tone | Array of strings or null[ items <= 5 items ] Enum: "Professional" "Casual" "Friendly" "Authoritative" "Playful" "Innovative" "Traditional" "Luxurious" |
| voice | Array of strings or null <= 5 items [ items <= 50 characters ] |
| logoAssetId | string or null <uuid> ID of an existing asset to update the brand's logo. Send null to disassociate logo. |
Responses
Request samples
- Payload
{- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAssetId": "123e4567-e89b-12d3-a456-426614174000"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 412
- 422
- 429
- 500
{- "id": "123e4567-e89b-12d3-a456-426614174000",
- "name": "Acme Corporation",
- "industry": "Technology",
- "description": "Leading provider of innovative cloud solutions",
- "mission": "To accelerate the world's transition to sustainable technology",
- "values": [
- "Innovation",
- "Sustainability",
- "Customer Focus"
], - "tone": [
- "Professional",
- "Innovative"
], - "voice": [
- "Clear",
- "Confident",
- "Expert"
], - "logoAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "organizationId": "123e4567-e89b-12d3-a456-426614174000",
- "organizationName": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "brandDnaStatus": "none"
}Get Brand DNA status and data
Returns the current Brand DNA extraction status and the merged Brand DNA data for a brand. If no PDFs have been uploaded, status will be 'none'.
Authorizations:
path Parameters
| brandId required | string <uuid> |
Responses
Response samples
- 200
- 401
- 404
{- "status": "success",
- "data": {
- "brandId": "0e9bcbb3-096e-49f9-aeea-7a13a201eff5",
- "status": "none",
- "version": 0,
- "brandDna": { },
- "sourceAssetIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
}
}List Brand DNA versions for a brand
Returns all versions for the brand, newest first. Each item carries the preview slice but not the full DNA payload.
Authorizations:
path Parameters
| brandId required | string <uuid> |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "status": "success",
- "data": [
- {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Create a new Brand DNA version
Create a new version with one or more source assets/URLs. Returns the version in pending state; the orchestrator picks up the workflow trigger row and runs per-source extractors plus the merger asynchronously.
Authorizations:
path Parameters
| brandId required | string <uuid> |
Request Body schema: application/jsonrequired
| name | string <= 200 characters Optional human-readable label |
| assetIds | Array of strings <uuid> <= 20 items [ items <uuid > ] Asset IDs to feed into per-source extractors (PDF, image, or video) |
| urls | Array of strings <uri> <= 20 items [ items <uri > ] Website URLs to feed into the web extractor |
Responses
Request samples
- Payload
{- "name": "string",
- "assetIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
}Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Get the currently active Brand DNA version
Returns the active version detail. When the active version is mid-rerun
(status=pending or extracting), responds 200 with dna: null. Returns 404
when no version has ever been activated for the brand.
Authorizations:
path Parameters
| brandId required | string <uuid> |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "sources": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "pdf",
- "label": "string",
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "url": "string",
- "pageCount": 0,
- "status": "queued",
- "progressNote": "string",
- "errorReason": "string"
}
], - "dna": { }
}
}Get a specific Brand DNA version
Returns the full version detail including sources and (when ready) the canonical DNA payload.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "sources": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "type": "pdf",
- "label": "string",
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "url": "string",
- "pageCount": 0,
- "status": "queued",
- "progressNote": "string",
- "errorReason": "string"
}
], - "dna": { }
}
}Update a Brand DNA version (rename and/or edit DNA payload)
Optimistic-locked update via updatedAt. Setting dna overwrites the canonical
S3 payload and recomputes the preview slice; name updates metadata only.
At least one of name or dna must be provided. Confidence score and
missing fields are immutable from this endpoint.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Request Body schema: application/jsonrequired
| name | string <= 200 characters |
object Full canonical Brand DNA payload (snake_case). Overwrites the existing s3_key blob. | |
| updatedAt required | string <date-time> Concurrency token; the previously-returned updatedAt for this version |
Responses
Request samples
- Payload
{- "name": "string",
- "dna": { },
- "updatedAt": "2019-08-24T14:15:22Z"
}Response samples
- 200
- 400
- 401
- 403
- 404
- 409
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Delete a Brand DNA version
Hard-deletes a non-active version, including its sources (CASCADE) and S3 artifacts. Deleting the active version is forbidden; activate another version first.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Responses
Response samples
- 401
- 403
- 404
- 409
- 429
- 500
{- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}Activate a Brand DNA version
Marks the version active and mirrors its s3_key, version_number, and status to Brands.brand_dna_s3_key/brand_dna_version/brand_dna_status so downstream modal consumers pick up the new payload. Idempotent on an already-active version.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Responses
Response samples
- 200
- 401
- 403
- 404
- 409
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Cancel an in-flight Brand DNA extraction
Signals workflow cancellation and deletes the version row. Only valid while the version is pending or extracting. Best-effort cleans S3 partials.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Responses
Response samples
- 401
- 403
- 404
- 409
- 429
- 500
{- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}Re-run extraction for a Brand DNA version
Replaces the version's source set with the supplied assetIds and urls, resets status to pending, and queues a fresh extraction. The version retains its versionNumber and is_active flag. Returns 202 Accepted.
Authorizations:
path Parameters
| brandId required | string <uuid> |
| versionId required | string <uuid> |
Request Body schema: application/jsonrequired
| assetIds | Array of strings <uuid> <= 20 items [ items <uuid > ] |
| urls | Array of strings <uri> <= 20 items [ items <uri > ] |
Responses
Request samples
- Payload
{- "assetIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
}Response samples
- 202
- 400
- 401
- 403
- 404
- 409
- 429
- 500
{- "status": "success",
- "data": {
- "versionId": "14707576-2549-4848-82ed-f68f8a1b47c7",
- "versionNumber": 1,
- "name": "string",
- "isActive": true,
- "status": "pending",
- "confidenceScore": 1,
- "missingFields": [
- "string"
], - "preview": {
- "colorHexes": [
- "#1a8a3a",
- "#fff8e7",
- "#3a3a3a",
- "#c00000",
- "#a3c293"
], - "typographyShort": "Bold sans-serif headlines paired with serif body copy",
- "toneShort": "Warm, family-oriented, confident",
- "topValues": [
- "Quality",
- "Family",
- "Tradition"
], - "sourceCounts": {
- "pdf": 0,
- "image": 0,
- "video": 0,
- "url": 0
}
}, - "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z"
}
}Create scene forge request
Generate a scene with products, optional environment, and blending prompt. This is an asynchronous operation that creates 4 initial variations. Returns 202 Accepted. Poll the GET endpoint to check generation status.
Authorizations:
path Parameters
| brandId required | string <uuid> Example: 223e4567-e89b-12d3-a456-426614174000 Brand context for the scene forge |
Request Body schema: application/jsonrequired
| blendingPrompt required | string [ 1 .. 2500 ] characters Scene composition prompt (original or enhanced) |
| promptIsEnhanced required | boolean Whether the prompt has been AI-enhanced. Set to true only when the current prompt text exactly matches an accepted enhancement result. Undo and manual edits set this to false. |
| partner | string (Partner) Enum: "default" "walmart" "chewy" Partner (retail-media network) slug. |
| theme | string or null <= 500 characters Theme from preview (when promptIsEnhanced=true and preview was accepted) |
| aspectRatio | string or null Enum: "1:1" "2:3" "3:2" "3:4" "4:3" "9:16" "16:9" "21:9" Target aspect ratio for generation (optional) |
| productAssetIds | Array of strings <uuid> <= 5 items [ items <uuid > ] Array of product asset UUIDs (max 5 products) |
| environmentAssetId | string or null <uuid> Optional environment asset UUID (from environment generation or uploaded) |
| useBrandDna | boolean or null Whether to apply Brand DNA to scene generation (defaults to true if omitted) |
Responses
Request samples
- Payload
{- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "aspectRatio": "16:9",
- "productAssetIds": [
- "550e8400-e29b-41d4-a716-446655440000",
- "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
], - "environmentAssetId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}Response samples
- 202
- 400
- 401
- 403
- 404
- 422
- 429
- 500
{- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "aspectRatio": "1:1",
- "theme": "Product Display Scene",
- "productAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "environmentAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "status": "pending",
- "variations": [
- {
- "generatedImageId": "423e4567-e89b-12d3-a456-426614174000",
- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "status": "pending",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "asset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "width": 0,
- "height": 0,
- "liked": false,
- "disliked": false,
- "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate variation",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:02:00Z",
- "failedAt": "2024-01-01T00:02:00Z",
- "warnings": [
- {
- "code": "HARDSPEC_ASPECT_MISMATCH",
- "message": "not compatible with chewy, use creative with chewy template to fix, or resize.",
- "severity": "warning",
- "layerId": "string",
- "field": "string"
}
]
}
], - "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate scene from inputs",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:10:00Z",
- "failedAt": "2024-01-01T00:10:00Z",
- "useBrandDna": true
}List scene forges for brand
Retrieve a paginated list of scene forges for the specified brand. Results can be filtered by status and sorted by creation or update time.
Authorizations:
path Parameters
| brandId required | string <uuid> Example: 223e4567-e89b-12d3-a456-426614174000 Brand identifier |
query Parameters
| partner | string (PartnerFilter) Enum: "all" "default" "walmart" "chewy" Example: partner=all Partner list filter. Omit for the default bucket only; "all" returns every partner; otherwise a single partner slug. |
| page | integer >= 1 Default: 1 Example: page=1 Page number (1-indexed) |
| limit | integer [ 1 .. 100 ] Default: 20 Example: limit=20 Number of items per page |
| sortBy | string Default: "createdAt" Enum: "createdAt" "updatedAt" Example: sortBy=createdAt Field to sort by |
| sortOrder | string Default: "desc" Enum: "asc" "desc" Example: sortOrder=desc Sort direction |
| status | string (GenerationStatus) Enum: "pending" "processing" "completed" "failed" Example: status=completed Filter by generation status |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "data": [
- {
- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "aspectRatio": "1:1",
- "theme": "Product Display Scene",
- "productAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "environmentAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "status": "pending",
- "variations": [
- {
- "generatedImageId": "423e4567-e89b-12d3-a456-426614174000",
- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "status": "pending",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "asset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "width": 0,
- "height": 0,
- "liked": false,
- "disliked": false,
- "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate variation",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:02:00Z",
- "failedAt": "2024-01-01T00:02:00Z",
- "warnings": [
- {
- "code": "HARDSPEC_ASPECT_MISMATCH",
- "message": "not compatible with chewy, use creative with chewy template to fix, or resize.",
- "severity": "warning",
- "layerId": "string",
- "field": "string"
}
]
}
], - "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate scene from inputs",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:10:00Z",
- "failedAt": "2024-01-01T00:10:00Z",
- "useBrandDna": true
}
], - "pagination": {
- "currentPage": 0,
- "totalPages": 0,
- "totalItems": 0,
- "itemsPerPage": 0
}
}Get scene forge by ID
Retrieve scene forge details including all generated variations. Use this endpoint to poll for completion status after creating a scene forge.
Authorizations:
path Parameters
| id required | string <uuid> Example: 323e4567-e89b-12d3-a456-426614174000 Scene forge identifier |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "aspectRatio": "1:1",
- "theme": "Product Display Scene",
- "productAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "environmentAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "status": "pending",
- "variations": [
- {
- "generatedImageId": "423e4567-e89b-12d3-a456-426614174000",
- "sceneForgeId": "323e4567-e89b-12d3-a456-426614174000",
- "status": "pending",
- "blendingPrompt": "Products displayed on a marble countertop with natural lighting",
- "asset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "width": 0,
- "height": 0,
- "liked": false,
- "disliked": false,
- "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate variation",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:02:00Z",
- "failedAt": "2024-01-01T00:02:00Z",
- "warnings": [
- {
- "code": "HARDSPEC_ASPECT_MISMATCH",
- "message": "not compatible with chewy, use creative with chewy template to fix, or resize.",
- "severity": "warning",
- "layerId": "string",
- "field": "string"
}
]
}
], - "errorCode": "GENERATION_FAILED",
- "errorMessage": "Failed to generate scene from inputs",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:10:00Z",
- "failedAt": "2024-01-01T00:10:00Z",
- "useBrandDna": true
}Create prompt enhancement request
Request AI enhancement of a prompt for Scene Forge generation. This is an asynchronous operation that returns 202 Accepted. Poll the GET endpoint to check enhancement status and retrieve results.
Authorizations:
path Parameters
| brandId required | string <uuid> Example: 223e4567-e89b-12d3-a456-426614174000 Brand context for the enhancement |
Request Body schema: application/jsonrequired
| originalPrompt required | string [ 1 .. 2500 ] characters Original prompt text to be enhanced |
| productAssetIds | Array of strings <uuid> <= 5 items [ items <uuid > ] Array of product asset UUIDs (max 5 products) |
| environmentAssetId | string or null <uuid> Optional environment asset UUID |
| useBrandDna | boolean or null Whether to apply Brand DNA to prompt enhancement (defaults to true if omitted) |
| partner | string (Partner) Enum: "default" "walmart" "chewy" Partner (retail-media network) slug. |
Responses
Request samples
- Payload
{- "originalPrompt": "A modern kitchen with stainless steel appliances",
- "productAssetIds": [
- "550e8400-e29b-41d4-a716-446655440000"
], - "environmentAssetId": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}Response samples
- 202
- 400
- 401
- 403
- 404
- 429
- 500
{- "promptEnhancementId": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "originalPrompt": "A modern kitchen with stainless steel appliances",
- "optimizedPrompt": "A sleek, contemporary kitchen featuring premium stainless steel appliances, marble countertops, and soft natural lighting from large windows",
- "theme": "Modern Elegance",
- "status": "pending",
- "errorCode": "ENHANCEMENT_FAILED",
- "errorMessage": "Failed to enhance prompt",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:00:30Z",
- "failedAt": "2024-01-01T00:00:30Z",
- "useBrandDna": true,
- "partner": "default",
- "warnings": [
- {
- "code": "HARDSPEC_ASPECT_MISMATCH",
- "message": "not compatible with chewy, use creative with chewy template to fix, or resize.",
- "severity": "warning",
- "layerId": "string",
- "field": "string"
}
]
}Get prompt enhancement by ID
Retrieve prompt enhancement details and status. Use this endpoint to poll for completion status after creating a prompt enhancement request. Returns both originalPrompt and optimizedPrompt to support frontend Undo functionality.
Authorizations:
path Parameters
| brandId required | string <uuid> Example: 223e4567-e89b-12d3-a456-426614174000 Brand context |
| id required | string <uuid> Example: 123e4567-e89b-12d3-a456-426614174000 Prompt enhancement identifier |
Responses
Response samples
- 200
- 401
- 403
- 404
- 429
- 500
{- "promptEnhancementId": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "originalPrompt": "A modern kitchen with stainless steel appliances",
- "optimizedPrompt": "A sleek, contemporary kitchen featuring premium stainless steel appliances, marble countertops, and soft natural lighting from large windows",
- "theme": "Modern Elegance",
- "status": "pending",
- "errorCode": "ENHANCEMENT_FAILED",
- "errorMessage": "Failed to enhance prompt",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:00:30Z",
- "failedAt": "2024-01-01T00:00:30Z",
- "useBrandDna": true,
- "partner": "default",
- "warnings": [
- {
- "code": "HARDSPEC_ASPECT_MISMATCH",
- "message": "not compatible with chewy, use creative with chewy template to fix, or resize.",
- "severity": "warning",
- "layerId": "string",
- "field": "string"
}
]
}Submit Video Generation Job
Creates a new Video Generation Group and triggers the asynchronous generation of videos variations. It generates a video for every combination of the provided prompts and dimensions, using the specified source asset.
Authorizations:
path Parameters
| brandId required | string <uuid> The unique identifier of the brand. |
Request Body schema: application/jsonrequired
| startImageAssetId required | string <uuid> The ID of the original source asset of the image that will be used as the video start frame. |
| endImageAssetId | string <uuid> The ID of the asset to use as the video end frame. Optional. Not supported by all models. |
| intermediateImageAssetIds | Array of strings <uuid> [ 1 .. 5 ] items [ items <uuid > ] Ordered intermediate frame assets for the optimized model. Optional (omit for none). Order is temporal. Per-duration min/max enforced server-side. Rejected for non-optimized models. |
| userPrompts required | Array of strings non-empty [ items [ 1 .. 1000 ] characters ] One or more text prompts describing the desired context/environment. |
required | object (Dimension) |
| enableAudio | boolean Default: false Whether to generate audio for the video. Defaults to false. |
| model | string Default: "veo-3.1" Enum: "veo-3.1" "veo-3.1-fast" "kling-v3-pro" "kling-v3-omni-pro" "grok-imagine-video" "seedance-1.5-pro" "seedance-2.0-pro" "pixverse-v6" "optimized" The AI model to use for video generation. Defaults to |
| duration | integer >= 1 Desired video duration in seconds. Optional; when omitted the backend falls back to a per-model default. Backend currently does not enforce a per-model allow-list. |
| promptIsEnhanced | boolean Default: false Whether the prompt was enhanced via the prompt enhancement preview flow. |
| useBrandDna | boolean Default: false Whether to apply Brand DNA to inline prompt enhancement during video generation. Defaults to false. |
| partner | string (Partner) Enum: "default" "walmart" "chewy" Partner (retail-media network) slug. |
Responses
Request samples
- Payload
{- "startImageAssetId": "123e4567-e89b-12d3-a456-426614174000",
- "userPrompts": [
- "Product on a beach at sunset, dramatic lighting",
- "Product floating in space among nebulae"
], - "dimension": {
- "width": 1024,
- "height": 1024
}, - "enableAudio": false
}Response samples
- 202
- 400
- 401
- 403
- 404
- 429
- 500
{- "data": [
- {
- "generatedVideosGroupId": "acaa63fb-d603-472f-95fb-9cc2a8783970",
- "sourceAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "endFrameAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "intermediateFrameAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "status": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "prompt": "string",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "enableAudio": false,
- "useBrandDna": true,
- "model": "veo-3.1",
- "duration": 1,
- "variations": [
- {
- "generatedVideoId": "f4108892-9401-4171-aace-d5e8b95b1497",
- "assetId": "987e6543-e21b-12d3-a456-426614174999",
- "status": "pending",
- "prompt": "string",
- "width": 0,
- "height": 0,
- "enableAudio": false,
- "model": "veo-3.1",
- "duration": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "generatedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}
], - "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}
], - "pagination": {
- "currentPage": 0,
- "totalPages": 0,
- "totalItems": 0,
- "itemsPerPage": 0
}
}List Generated Video Groups
Retrieves a paginated list of all generated videos groups created by the user/brand, suitable for the gallery view. Each group includes its source asset info, parameters, and the generated video variations with their current status.
Authorizations:
path Parameters
| brandId required | string <uuid> The unique identifier of the brand. |
query Parameters
| partner | string (PartnerFilter) Enum: "all" "default" "walmart" "chewy" Example: partner=all Partner list filter. Omit for the default bucket only; "all" returns every partner; otherwise a single partner slug. |
| page | integer >= 1 Default: 1 Page number for pagination. |
| limit | integer [ 1 .. 100 ] Default: 20 Number of items per page. |
| sortBy | string Default: "createdAt" Value: "createdAt" Field to sort by. |
| sortOrder | string Default: "desc" Enum: "asc" "desc" Sort order. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "data": [
- {
- "generatedVideosGroupId": "acaa63fb-d603-472f-95fb-9cc2a8783970",
- "sourceAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "endFrameAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "intermediateFrameAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "status": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "prompt": "string",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "enableAudio": false,
- "useBrandDna": true,
- "model": "veo-3.1",
- "duration": 1,
- "variations": [
- {
- "generatedVideoId": "f4108892-9401-4171-aace-d5e8b95b1497",
- "assetId": "987e6543-e21b-12d3-a456-426614174999",
- "status": "pending",
- "prompt": "string",
- "width": 0,
- "height": 0,
- "enableAudio": false,
- "model": "veo-3.1",
- "duration": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "generatedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}
], - "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}
], - "pagination": {
- "currentPage": 0,
- "totalPages": 0,
- "totalItems": 0,
- "itemsPerPage": 0
}
}Get Generated Videos Group Details
Retrieves the details of a specific generated videos group, including the status of all its generated variations. Poll this endpoint after submitting a video generation job to track progress.
Authorizations:
path Parameters
| generatedVideosGroupId required | string <uuid> The unique identifier of the generated videos group. |
Responses
Response samples
- 200
- 400
- 401
- 403
- 404
- 429
- 500
{- "generatedVideosGroupId": "acaa63fb-d603-472f-95fb-9cc2a8783970",
- "sourceAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "endFrameAsset": {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}, - "intermediateFrameAssets": [
- {
- "assetId": "9179b887-04ef-4ce5-ab3a-b5bbd39ea3c8",
- "assetType": "image",
}
], - "status": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "completedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "prompt": "string",
- "dimension": {
- "width": 1024,
- "height": 1024
}, - "enableAudio": false,
- "useBrandDna": true,
- "model": "veo-3.1",
- "duration": 1,
- "variations": [
- {
- "generatedVideoId": "f4108892-9401-4171-aace-d5e8b95b1497",
- "assetId": "987e6543-e21b-12d3-a456-426614174999",
- "status": "pending",
- "prompt": "string",
- "width": 0,
- "height": 0,
- "enableAudio": false,
- "model": "veo-3.1",
- "duration": 0,
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "generatedAt": "2019-08-24T14:15:22Z",
- "failedAt": "2019-08-24T14:15:22Z",
- "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}
], - "error": {
- "error": {
- "code": "INVALID_REQUEST",
- "message": "Invalid input data provided",
- "details": null
}, - "requestId": "d385ab22-0f51-4b97-9ecd-b8ff3fd4fcb6"
}
}Create an image-to-video prompt enhancement preview
Creates a prompt enhancement preview request for image-to-video generation. The enhancement workflow will refine the provided prompt using AI, taking into account the start frame image, aspect ratio, and target video model, and return an optimized version suitable for video generation.
Authorizations:
path Parameters
| brandId required | string <uuid> The unique identifier of the brand. |
Request Body schema: application/jsonrequired
| startFrameAssetId required | string <uuid> ID of the start frame image asset. |
| endFrameAssetId | string <uuid> ID of the end frame image asset. Optional. |
| intermediateFrameAssetIds | Array of strings <uuid> [ 1 .. 5 ] items [ items <uuid > ] Ordered intermediate frame assets for optimized-model enhancement. Optional. Fed to the enhancer alongside start/end. Rejected for non-optimized models. (No per-duration min/max enforced here — preview is exploratory; see generation rules.) |
| originalPrompt required | string [ 1 .. 2500 ] characters The text prompt to enhance for video generation. |
| aspectRatio required | string Enum: "16:9" "9:16" The target aspect ratio for the video. |
| model required | string Enum: "veo-3.1" "veo-3.1-fast" "kling-v3-pro" "kling-v3-omni-pro" "grok-imagine-video" "seedance-1.5-pro" "seedance-2.0-pro" "pixverse-v6" "optimized" The target video generation model. |
| duration | integer >= 1 Target video duration (s). Lets the enhancer detect the long-video (>8s) ClipForge case. |
| enableAudio | boolean Default: false Whether audio is enabled -- controls audio guidance in prompt enhancement. Defaults to false. |
| useBrandDna | boolean Default: false Whether to apply Brand DNA to prompt enhancement. Defaults to false. FE sends explicitly based on Brand DNA toggle state. |
Responses
Request samples
- Payload
{- "startFrameAssetId": "550e8400-e29b-41d4-a716-446655440000",
- "endFrameAssetId": "660e8400-e29b-41d4-a716-446655440001",
- "originalPrompt": "The product slowly rotates on a marble countertop with soft natural lighting",
- "aspectRatio": "16:9",
- "model": "veo-3.1"
}Response samples
- 202
- 400
- 401
- 403
- 404
- 500
{- "promptEnhancementId": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "startFrameAssetId": "550e8400-e29b-41d4-a716-446655440000",
- "endFrameAssetId": "93aa28e6-7ae6-4083-af4d-58f3411b4df6",
- "intermediateFrameAssetIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "originalPrompt": "The product slowly rotates on a marble countertop with soft natural lighting",
- "aspectRatio": "16:9",
- "model": "veo-3.1",
- "duration": 1,
- "enhancedPrompt": "A premium skincare product elegantly rotates on a polished Calacatta marble countertop, bathed in warm diffused golden-hour light filtering through sheer curtains, with subtle reflections dancing across the marble surface...",
- "status": "pending",
- "errorCode": "ENHANCEMENT_FAILED",
- "errorMessage": "Failed to enhance prompt due to content policy violation",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:00:30Z",
- "failedAt": "2024-01-01T00:00:30Z",
- "enableAudio": true,
- "useBrandDna": true
}Get image-to-video prompt enhancement status and results
Retrieves the status and results of a prompt enhancement request. Poll this endpoint until status is 'completed' or 'failed'.
Authorizations:
path Parameters
| brandId required | string <uuid> The unique identifier of the brand. |
| id required | string <uuid> The prompt enhancement ID. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 500
{- "promptEnhancementId": "123e4567-e89b-12d3-a456-426614174000",
- "brandId": "223e4567-e89b-12d3-a456-426614174000",
- "startFrameAssetId": "550e8400-e29b-41d4-a716-446655440000",
- "endFrameAssetId": "93aa28e6-7ae6-4083-af4d-58f3411b4df6",
- "intermediateFrameAssetIds": [
- "497f6eca-6276-4993-bfeb-53cbbbba6f08"
], - "originalPrompt": "The product slowly rotates on a marble countertop with soft natural lighting",
- "aspectRatio": "16:9",
- "model": "veo-3.1",
- "duration": 1,
- "enhancedPrompt": "A premium skincare product elegantly rotates on a polished Calacatta marble countertop, bathed in warm diffused golden-hour light filtering through sheer curtains, with subtle reflections dancing across the marble surface...",
- "status": "pending",
- "errorCode": "ENHANCEMENT_FAILED",
- "errorMessage": "Failed to enhance prompt due to content policy violation",
- "createdAt": "2024-01-01T00:00:00Z",
- "updatedAt": "2024-01-01T00:00:00Z",
- "completedAt": "2024-01-01T00:00:30Z",
- "failedAt": "2024-01-01T00:00:30Z",
- "enableAudio": true,
- "useBrandDna": true
}Get feature usage status
Retrieve usage status for all managed features. Returns current usage counts, limits, remaining quota, and reset timing for the current organization.
Features are grouped by source (plan or override) and include cap information for each cap type (e.g., generation, training).
Authorizations:
Responses
Response samples
- 200
- 401
- 500
{- "status": "success",
- "data": {
- "pools": {
- "property1": {
- "usage": 23,
- "cap": 1000,
- "remaining": 977,
- "unlimited": false
}, - "property2": {
- "usage": 23,
- "cap": 1000,
- "remaining": 977,
- "unlimited": false
}
}, - "threshold_alert": {
- "pool": "images",
- "threshold": "10_percent"
}, - "billing_period": {
- "start": "2025-12-01T00:00:00Z",
- "end": "2025-12-31T23:59:59Z"
}, - "plan_slug": "pro"
}
}