Mutations

All available GraphQL mutations for creating, updating, and deleting data.

addFashionModelToLibrary

Add a fashion model to your team's library (quota dependent)

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  addFashionModelToLibrary(id: "value") {
    # Add your fields here
  }
}

addPatternRevisionToDesignerInstance

Select a PatternRevision for use on a Designer Instance. Idempotent.

Returns: DesignerInstance!

Arguments:

  • designerInstanceId (UUID!) required
  • patternRevisionId (UUID!) required

Example:

mutation {
  addPatternRevisionToDesignerInstance(designerInstanceId: "value", patternRevisionId: "value") {
    # Add your fields here
  }
}

addSingleShotToGroupShot

Add a single shot to a group shot (max 3)

Returns: GroupShotSingleShot!

Arguments:

  • groupShotId (UUID!) required
  • campaignImageId (UUID!) required

Example:

mutation {
  addSingleShotToGroupShot(groupShotId: "value", campaignImageId: "value") {
    # Add your fields here
  }
}

addSkillToBatch

Add a skill to a batch

Returns: Batch!

Arguments:

  • batchId (UUID!) required
  • skillId (UUID!) required

Example:

mutation {
  addSkillToBatch(batchId: "value", skillId: "value") {
    # Add your fields here
  }
}

archiveProductStudioPerspective

Archive a product studio perspective (soft hide from default list)

Returns: ProductStudioPerspective!

Arguments:

  • id (UUID!) required

Example:

mutation {
  archiveProductStudioPerspective(id: "value") {
    # Add your fields here
  }
}

assignCampaignImageToCampaign

Assign an existing campaign image to a campaign

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required
  • campaignId (UUID!) required

Example:

mutation {
  assignCampaignImageToCampaign(campaignImageId: "value", campaignId: "value") {
    # Add your fields here
  }
}

clearCampaignImageFashionModel

Clear fashion model from a campaign image

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required

Example:

mutation {
  clearCampaignImageFashionModel(campaignImageId: "value") {
    # Add your fields here
  }
}

clearCampaignImageShootingLocation

Clear shooting location revision from a campaign image

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required

Example:

mutation {
  clearCampaignImageShootingLocation(campaignImageId: "value") {
    # Add your fields here
  }
}

createBatch

Create a new batch

Returns: Batch!

Arguments:

  • instructions (String)

Example:

mutation {
  createBatch(instructions: "example") {
    # Add your fields here
  }
}

createBillingPortalSession

Create a Stripe Customer Portal session for invoice and billing management.

Returns: CreateBillingPortalSessionResponse!

Arguments:

  • returnUrl (String!) required

Example:

mutation {
  createBillingPortalSession(returnUrl: "example") {
    # Add your fields here
  }
}

createBrandMemory

Returns: BrandMemory!

Arguments:

  • brandName (String!) required
  • brandIdentity (String!) required
  • fashionModelInstructions (String)
  • photoStyleInstructions (String)
  • targetGroupInstructions (String)

Example:

mutation {
  createBrandMemory(brandName: "example", brandIdentity: "example", fashionModelInstructions: "example", photoStyleInstructions: "example", targetGroupInstructions: "example") {
    # Add your fields here
  }
}

createCampaign

Create a new campaign

Returns: Campaign!

Arguments:

  • name (String!) required
  • shootingLocationRevisionId (UUID)

Example:

mutation {
  createCampaign(name: "example", shootingLocationRevisionId: "value") {
    # Add your fields here
  }
}

createCampaignImage

Create a new campaign image, optionally assigned to a campaign

Returns: CampaignImage!

Arguments:

  • title (String!) required
  • prompt (String)
  • campaignId (UUID)
  • aspectRatio (AspectRatio)

Example:

mutation {
  createCampaignImage(title: "example", prompt: "example", campaignId: "value", aspectRatio: "value") {
    # Add your fields here
  }
}

createCampaignImageResource

Create a resource with pre-analyzed content

Returns: CampaignImageResource!

Arguments:

  • campaignImageId (UUID!) required
  • name (String!) required
  • content (String!) required
  • purpose (String!) required

Example:

mutation {
  createCampaignImageResource(campaignImageId: "value", name: "example", content: "example", purpose: "example") {
    # Add your fields here
  }
}

createDesignerInstance

Create a new Designer Instance

Returns: DesignerInstance!

Arguments:

  • title (String!) required

Example:

mutation {
  createDesignerInstance(title: "example") {
    # Add your fields here
  }
}

createFashionModelCasting

Create a new fashion model casting session

Returns: FashionModelCasting!

Arguments:

  • gender (FashionModelGender!) required
  • prompt (String!) required

Example:

mutation {
  createFashionModelCasting(gender: "value", prompt: "example") {
    # Add your fields here
  }
}

createFashionModelFromCastingResult

Create a fashion model from a selected casting result

Returns: FashionModel!

Arguments:

  • castingResultId (UUID!) required
  • modelName (String!) required
  • gender (FashionModelGender!) required

Example:

mutation {
  createFashionModelFromCastingResult(castingResultId: "value", modelName: "example", gender: "value") {
    # Add your fields here
  }
}

createGroupShot

Create a new group shot within a campaign

Returns: GroupShot!

Arguments:

  • campaignId (UUID!) required
  • shootingLocationRevisionId (UUID)
  • prompt (String)
  • aspectRatio (AspectRatio)

Example:

mutation {
  createGroupShot(campaignId: "value", shootingLocationRevisionId: "value", prompt: "example", aspectRatio: "value") {
    # Add your fields here
  }
}

createOnboardingSampleData

Create initial sample data for onboarding (idempotent)

Returns: OnboardingSampleDataResult!

Example:

mutation {
  createOnboardingSampleData {
    # Add your fields here
  }
}

createPattern

Create a new Pattern (shop-level, scoped to the current team).

Returns: Pattern!

Arguments:

  • name (String!) required
  • repeatHorizontal (Boolean)
  • repeatVertical (Boolean)

Example:

mutation {
  createPattern(name: "example", repeatHorizontal: true, repeatVertical: true) {
    # Add your fields here
  }
}

createProductSpotlight

Returns: ProductSpotlight!

Arguments:

  • productId (String!) required
  • productTitle (String!) required
  • productImage (String!) required
  • productImageId (String!) required
  • pickerResult (String!) required
  • status (ContentGenerationStatus!) required
  • variant (String)
  • sceneSuggestions ([String!])
  • objectType (String)
  • userPrompt (String)
  • optimizedPrompt (String)
  • title (String)
  • subtitle (String)
  • ctaText (String)

Example:

mutation {
  createProductSpotlight(productId: "example", productTitle: "example", productImage: "example", productImageId: "example", pickerResult: "example", status: "value", variant: "example", sceneSuggestions: "example", objectType: "example", userPrompt: "example", optimizedPrompt: "example", title: "example", subtitle: "example", ctaText: "example") {
    # Add your fields here
  }
}

createProductStudio

Create a new ProductStudio session

Returns: ProductStudio!

Example:

mutation {
  createProductStudio {
    # Add your fields here
  }
}

createProductStudioPerspective

Create a new product studio perspective

Returns: ProductStudioPerspective!

Arguments:

  • name (String!) required
  • prompt (String!) required
  • acceptedViewTypes ([ViewType!])
  • aspectRatio (AspectRatio)
  • backgroundHexColor (String) - Optional 6-character hex color for the studio backdrop (e.g. 'ff0077'). Pass null to clear.
  • isProductOnly (Boolean) - When true, generates product-only pack shots without a fashion model.
  • useHeroOnly (Boolean) - When true, generation uses only inputs marked as hero. Use for fabric samples and similar focused shots.
  • aiModel (AiModel) - Which AI model renders this perspective. Defaults to GEMINI_3_PRO if omitted.

Example:

mutation {
  createProductStudioPerspective(name: "example", prompt: "example", acceptedViewTypes: "value", aspectRatio: "value", backgroundHexColor: "example", isProductOnly: true, useHeroOnly: true, aiModel: "value") {
    # Add your fields here
  }
}

createProductStudioSetting

Returns: ProductStudioSetting!

Arguments:

  • instructions (String)
  • scanInstructions (String)

Example:

mutation {
  createProductStudioSetting(instructions: "example", scanInstructions: "example") {
    # Add your fields here
  }
}

createProductStudioStylingResource

Create styling instructions for a ProductStudio session and perspective

Returns: ProductStudioStylingResource!

Arguments:

  • productStudioId (UUID!) required
  • productStudioPerspectiveId (UUID!) required
  • stylingInstructions (String!) required

Example:

mutation {
  createProductStudioStylingResource(productStudioId: "value", productStudioPerspectiveId: "value", stylingInstructions: "example") {
    # Add your fields here
  }
}

createProductVideo

Returns: ProductVideo!

Arguments:

  • productId (String)
  • productTitle (String)
  • productImage (String)
  • productImageId (String)
  • videoUrl (String)
  • status (ContentGenerationStatus!) required
  • prompt (String)

Example:

mutation {
  createProductVideo(productId: "example", productTitle: "example", productImage: "example", productImageId: "example", videoUrl: "example", status: "value", prompt: "example") {
    # Add your fields here
  }
}

createShootingLocation

Create a new shootingLocation

Returns: ShootingLocation!

Arguments:

  • title (String!) required

Example:

mutation {
  createShootingLocation(title: "example") {
    # Add your fields here
  }
}

createShopifyTopUpCharge

Create a Shopify one-time charge to top up the team's credit balance.

Returns: CreateShopifyTopUpChargeResponse!

Arguments:

  • amountCents (Int!) required
  • returnUrl (String!) required

Example:

mutation {
  createShopifyTopUpCharge(amountCents: 1, returnUrl: "example") {
    # Add your fields here
  }
}

createSkill

Create a new skill for the current team

Returns: Skill!

Arguments:

  • title (String!) required
  • body (String!) required

Example:

mutation {
  createSkill(title: "example", body: "example") {
    # Add your fields here
  }
}

createTopUpCheckoutSession

Create a Stripe Checkout session to top up the team's credit balance with VAT-compliant invoicing.

Returns: CreateTopUpCheckoutSessionResponse!

Arguments:

  • amountCents (Int!) required
  • returnUrl (String!) required

Example:

mutation {
  createTopUpCheckoutSession(amountCents: 1, returnUrl: "example") {
    # Add your fields here
  }
}

createTopUpIntent

[Deprecated] Create a raw Stripe PaymentIntent. Use createTopUpCheckoutSession instead.

Returns: CreateTopUpIntentResponse!

Arguments:

  • amountCents (Int!) required

Example:

mutation {
  createTopUpIntent(amountCents: 1) {
    # Add your fields here
  }
}

deleteBatch

Delete a batch and all its children

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteBatch(id: "value") {
    # Add your fields here
  }
}

deleteBatchInputImage

Delete an uploaded input image from a batch (also removes from R2)

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteBatchInputImage(id: "value") {
    # Add your fields here
  }
}

deleteCampaign

Delete a campaign and all its children

Returns: Campaign!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteCampaign(id: "value") {
    # Add your fields here
  }
}

deleteCampaignImage

Delete a campaign image

Returns: CampaignImage!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteCampaignImage(id: "value") {
    # Add your fields here
  }
}

deleteDesignerInstance

Delete a Designer Instance and all its resources and revisions

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteDesignerInstance(id: "value") {
    # Add your fields here
  }
}

deleteDesignerInstanceResource

Delete an inspiration resource (upload happens via REST POST /api/designer-instances/resources)

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteDesignerInstanceResource(id: "value") {
    # Add your fields here
  }
}

deleteDesignerRevision

Delete a Designer Instance Revision

Returns: Boolean!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  deleteDesignerRevision(revisionId: "value") {
    # Add your fields here
  }
}

deleteDesignerRevisionMeasurement

Delete a Designer Revision Measurement record (and any in-flight annotation tasks via cascade).

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteDesignerRevisionMeasurement(id: "value") {
    # Add your fields here
  }
}

deleteFashionModel

Delete a fashion model

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteFashionModel(id: "value") {
    # Add your fields here
  }
}

deleteFashionModelRevision

Delete a fashion model revision

Returns: Boolean!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  deleteFashionModelRevision(revisionId: "value") {
    # Add your fields here
  }
}

deleteGroupShot

Delete a group shot

Returns: GroupShot!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteGroupShot(id: "value") {
    # Add your fields here
  }
}

deletePattern

Delete a Pattern and all its revisions.

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deletePattern(id: "value") {
    # Add your fields here
  }
}

deletePatternInputReference

Delete a pattern-level input reference. Does not affect revisions that already froze it into their snapshot.

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deletePatternInputReference(id: "value") {
    # Add your fields here
  }
}

deletePatternRevision

Delete a PatternRevision.

Returns: Boolean!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  deletePatternRevision(revisionId: "value") {
    # Add your fields here
  }
}

deleteProductSpotlight

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteProductSpotlight(id: "value") {
    # Add your fields here
  }
}

deleteProductStudio

Delete a ProductStudio session

Returns: ProductStudio!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteProductStudio(id: "value") {
    # Add your fields here
  }
}

deleteProductStudioPerspective

Delete a product studio perspective

Returns: ProductStudioPerspective!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteProductStudioPerspective(id: "value") {
    # Add your fields here
  }
}

deleteProductVideo

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteProductVideo(id: "value") {
    # Add your fields here
  }
}

deleteShootingLocation

Delete a shootingLocation

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteShootingLocation(id: "value") {
    # Add your fields here
  }
}

deleteShootingLocationRevision

Delete a shooting location revision

Returns: Boolean!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  deleteShootingLocationRevision(revisionId: "value") {
    # Add your fields here
  }
}

deleteSkill

Delete a skill

Returns: Boolean!

Arguments:

  • id (UUID!) required

Example:

mutation {
  deleteSkill(id: "value") {
    # Add your fields here
  }
}

executeBatch

Execute a batch — triggers generation on draft ProductStudios and CampaignImages

Returns: Batch!

Arguments:

  • id (UUID!) required

Example:

mutation {
  executeBatch(id: "value") {
    # Add your fields here
  }
}

generateBrandMemory

Returns: BrandMemory!

Arguments:

  • storeName (String!) required

Example:

mutation {
  generateBrandMemory(storeName: "example") {
    # Add your fields here
  }
}

generateCampaignImages

Generate images for a campaign image with optional feedback

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required
  • feedback (String)

Example:

mutation {
  generateCampaignImages(campaignImageId: "value", feedback: "example") {
    # Add your fields here
  }
}

generateDesignerRevision

Generate a new Designer Instance Revision. v2 contract: pass only FRONT and BACK slots; backend owns FRONT_FLAT and BACK_FLAT. Requires a non-empty description on the instance.

Returns: DesignerInstanceRevision!

Arguments:

  • designerInstanceId (UUID!) required
  • baseRevisionId (UUID)
  • userRequest (String!) required
  • intentTag (String)
  • slots ([DesignerSlotInputArg!]!) required

Example:

mutation {
  generateDesignerRevision(designerInstanceId: "value", baseRevisionId: "value", userRequest: "example", intentTag: "example", slots: "value") {
    # Add your fields here
  }
}

generateFashionModelCastingImages

Trigger async image generation for a fashion model casting

Returns: FashionModelCasting!

Arguments:

  • castingId (UUID!) required
  • useBrandIdentity (Boolean)
  • optimizedPrompt (String)

Example:

mutation {
  generateFashionModelCastingImages(castingId: "value", useBrandIdentity: true, optimizedPrompt: "example") {
    # Add your fields here
  }
}

generateFashionModelResources

Auto-generate resources by analyzing portrait, creates a new revision

Returns: FashionModelRevision!

Arguments:

  • fashionModelId (UUID!) required

Example:

mutation {
  generateFashionModelResources(fashionModelId: "value") {
    # Add your fields here
  }
}

generateFashionModelRevision

Generate a new revision from an existing one. Takes sourceRevisionId (not fashionModelId) because the user iterates from a specific revision whose portrait is used as the reference image.

Returns: FashionModelRevision!

Arguments:

  • sourceRevisionId (UUID!) required
  • userInput (String!) required
  • resources (FashionModelResourceInput!) required

Example:

mutation {
  generateFashionModelRevision(sourceRevisionId: "value", userInput: "example", resources: "value") {
    # Add your fields here
  }
}

generateGroupShot

Trigger group shot generation pipeline (Phase 1 renders + Phase 2 composite)

Returns: GroupShot!

Arguments:

  • groupShotId (UUID!) required

Example:

mutation {
  generateGroupShot(groupShotId: "value") {
    # Add your fields here
  }
}

generateImages

Generate a new shooting location revision. Takes shootingLocationId because the first revision is created by this mutation (text-to-image, no prior revision needed as reference).

Returns: ShootingLocationRevision!

Arguments:

  • shootingLocationId (UUID!) required
  • resources (ShootingLocationResourceInput!) required
  • userInput (String)

Example:

mutation {
  generateImages(shootingLocationId: "value", resources: "value", userInput: "example") {
    # Add your fields here
  }
}

generatePatternRevision

Generate a new PatternRevision via Fal. Agent composes the prompt; backend does not inspect it.

Returns: PatternRevision!

Arguments:

  • patternId (UUID!) required
  • baseRevisionId (UUID)
  • userInput (String)
  • prompt (String!) required
  • inputs ([PatternRevisionInputArg!]!) required

Example:

mutation {
  generatePatternRevision(patternId: "value", baseRevisionId: "value", userInput: "example", prompt: "example", inputs: "value") {
    # Add your fields here
  }
}

generateProductSpotlightImage

Returns: ProductSpotlight!

Arguments:

  • id (UUID!) required

Example:

mutation {
  generateProductSpotlightImage(id: "value") {
    # Add your fields here
  }
}

generateProductVideo

Returns: ProductVideo!

Arguments:

  • id (UUID!) required
  • prompt (String)
  • modelType (VideoModelType)

Example:

mutation {
  generateProductVideo(id: "value", prompt: "example", modelType: "value") {
    # Add your fields here
  }
}

generateThemeContent

@deprecated. Creates a creative brief based on the selected theme bubble.

Returns: ProductSpotlight!

Arguments:

  • id (UUID!) required
  • theme (String!) required

Example:

mutation {
  generateThemeContent(id: "value", theme: "example") {
    # Add your fields here
  }
}

generateVideoButtons

Generate interactive buttons for a product video using Gemini AI

Returns: ProductVideo!

Arguments:

  • id (UUID!) required

Example:

mutation {
  generateVideoButtons(id: "value") {
    # Add your fields here
  }
}

hideCampaignImageResult

Hide a campaign image result (soft delete)

Returns: CampaignImageResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  hideCampaignImageResult(id: "value") {
    # Add your fields here
  }
}

hideGroupShotResult

Hide a group shot result (soft delete)

Returns: GroupShotResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  hideGroupShotResult(id: "value") {
    # Add your fields here
  }
}

hideProductStudioOutput

Hide a product studio output (soft delete)

Returns: ProductStudioOutput!

Arguments:

  • id (UUID!) required

Example:

mutation {
  hideProductStudioOutput(id: "value") {
    # Add your fields here
  }
}

materializePlan

Create draft ProductStudios and CampaignImages from grouped plan inputs

Returns: MaterializePlanResult!

Arguments:

  • batchId (UUID!) required
  • studioItems ([PlanStudioItemInput!]!) required
  • campaignItems ([PlanCampaignItemInput!]!) required
  • replaceExisting (Boolean)

Example:

mutation {
  materializePlan(batchId: "value", studioItems: "value", campaignItems: "value", replaceExisting: true) {
    # Add your fields here
  }
}

publishSpotlightToStorefront

Returns: ProductSpotlight!

Arguments:

  • id (UUID!) required

Example:

mutation {
  publishSpotlightToStorefront(id: "value") {
    # Add your fields here
  }
}

releaseCampaignImageResult

Release a campaign image result. Quota relevant

Returns: CampaignImageResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releaseCampaignImageResult(id: "value") {
    # Add your fields here
  }
}

releaseDesignerRevision

Release a completed designer revision. Quota relevant.

Returns: DesignerInstanceRevision!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releaseDesignerRevision(id: "value") {
    # Add your fields here
  }
}

releaseGroupShotResult

Release a group shot result. Quota relevant

Returns: GroupShotResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releaseGroupShotResult(id: "value") {
    # Add your fields here
  }
}

releasePatternRevision

Release a completed pattern revision. Quota relevant.

Returns: PatternRevision!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releasePatternRevision(id: "value") {
    # Add your fields here
  }
}

releaseProductStudioOutput

Release a product studio output

Returns: ProductStudioOutput!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releaseProductStudioOutput(id: "value") {
    # Add your fields here
  }
}

releaseProductVideo

Release a product video. Quota relevant.

Returns: ProductVideo!

Arguments:

  • id (UUID!) required

Example:

mutation {
  releaseProductVideo(id: "value") {
    # Add your fields here
  }
}

removeCampaignImageProduct

Remove a product from a campaign image

Returns: CampaignImageProduct!

Arguments:

  • id (UUID!) required

Example:

mutation {
  removeCampaignImageProduct(id: "value") {
    # Add your fields here
  }
}

removeCampaignImageResource

Remove a resource from a campaign image

Returns: CampaignImageResource!

Arguments:

  • id (UUID!) required

Example:

mutation {
  removeCampaignImageResource(id: "value") {
    # Add your fields here
  }
}

removePatternRevisionFromDesignerInstance

Remove a selected PatternRevision from a Designer Instance.

Returns: DesignerInstance!

Arguments:

  • designerInstanceId (UUID!) required
  • patternRevisionId (UUID!) required

Example:

mutation {
  removePatternRevisionFromDesignerInstance(designerInstanceId: "value", patternRevisionId: "value") {
    # Add your fields here
  }
}

removeProductStudioInput

Remove an input from a ProductStudio session

Returns: ProductStudioInput!

Arguments:

  • id (UUID!) required

Example:

mutation {
  removeProductStudioInput(id: "value") {
    # Add your fields here
  }
}

removeProductStudioStylingResource

Remove styling instructions from a ProductStudio session

Returns: ProductStudioStylingResource!

Arguments:

  • id (UUID!) required

Example:

mutation {
  removeProductStudioStylingResource(id: "value") {
    # Add your fields here
  }
}

removeSingleShotFromGroupShot

Remove a single shot from a group shot

Returns: GroupShot!

Arguments:

  • groupShotId (UUID!) required
  • campaignImageId (UUID!) required

Example:

mutation {
  removeSingleShotFromGroupShot(groupShotId: "value", campaignImageId: "value") {
    # Add your fields here
  }
}

removeSkillFromBatch

Remove a skill from a batch

Returns: Batch!

Arguments:

  • batchId (UUID!) required
  • skillId (UUID!) required

Example:

mutation {
  removeSkillFromBatch(batchId: "value", skillId: "value") {
    # Add your fields here
  }
}

restoreCampaignImageResult

Restore a hidden campaign image result

Returns: CampaignImageResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  restoreCampaignImageResult(id: "value") {
    # Add your fields here
  }
}

restoreGroupShotResult

Restore a hidden group shot result

Returns: GroupShotResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  restoreGroupShotResult(id: "value") {
    # Add your fields here
  }
}

restoreProductStudioOutput

Restore a hidden product studio output

Returns: ProductStudioOutput!

Arguments:

  • id (UUID!) required

Example:

mutation {
  restoreProductStudioOutput(id: "value") {
    # Add your fields here
  }
}

restoreProductStudioPerspective

Restore an archived product studio perspective

Returns: ProductStudioPerspective!

Arguments:

  • id (UUID!) required

Example:

mutation {
  restoreProductStudioPerspective(id: "value") {
    # Add your fields here
  }
}

setCampaignImageFashionModel

Set fashion model for a campaign image

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required
  • fashionModelRevisionId (UUID!) required

Example:

mutation {
  setCampaignImageFashionModel(campaignImageId: "value", fashionModelRevisionId: "value") {
    # Add your fields here
  }
}

setCampaignImageProducts

Set products for a campaign image with smart merging

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required
  • products ([CampaignImageProductInput!]!) required

Example:

mutation {
  setCampaignImageProducts(campaignImageId: "value", products: "value") {
    # Add your fields here
  }
}

setCampaignImageShootingLocation

Set shooting location revision for a campaign image

Returns: CampaignImage!

Arguments:

  • campaignImageId (UUID!) required
  • shootingLocationRevisionId (UUID!) required

Example:

mutation {
  setCampaignImageShootingLocation(campaignImageId: "value", shootingLocationRevisionId: "value") {
    # Add your fields here
  }
}

startProductStudioFlow

Start the AI generation flow for a ProductStudio session with optional perspective

Returns: ProductStudio!

Arguments:

  • id (UUID!) required
  • productStudioPerspectiveId (UUID!) required

Example:

mutation {
  startProductStudioFlow(id: "value", productStudioPerspectiveId: "value") {
    # Add your fields here
  }
}

toggleCampaignImageResultFavorite

Toggle favorite status on a campaign image result

Returns: CampaignImageResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  toggleCampaignImageResultFavorite(id: "value") {
    # Add your fields here
  }
}

toggleDesignerRevisionFavorite

Toggle favorite on a Designer Instance Revision

Returns: DesignerInstanceRevision!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  toggleDesignerRevisionFavorite(revisionId: "value") {
    # Add your fields here
  }
}

toggleFashionModelRevisionFavorite

Toggle favorite status on a fashion model revision

Returns: FashionModelRevision!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  toggleFashionModelRevisionFavorite(revisionId: "value") {
    # Add your fields here
  }
}

toggleGroupShotResultFavorite

Toggle favorite status on a group shot result

Returns: GroupShotResult!

Arguments:

  • id (UUID!) required

Example:

mutation {
  toggleGroupShotResultFavorite(id: "value") {
    # Add your fields here
  }
}

togglePatternRevisionFavorite

Toggle favorite on a PatternRevision.

Returns: PatternRevision!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  togglePatternRevisionFavorite(revisionId: "value") {
    # Add your fields here
  }
}

toggleProductStudioOutputFavorite

Toggle favorite status on a product studio output

Returns: ProductStudioOutput!

Arguments:

  • id (UUID!) required

Example:

mutation {
  toggleProductStudioOutputFavorite(id: "value") {
    # Add your fields here
  }
}

toggleShootingLocationRevisionFavorite

Toggle favorite status on a shooting location revision

Returns: ShootingLocationRevision!

Arguments:

  • revisionId (UUID!) required

Example:

mutation {
  toggleShootingLocationRevisionFavorite(revisionId: "value") {
    # Add your fields here
  }
}

updateBatch

Update a batch

Returns: Batch!

Arguments:

  • id (UUID!) required
  • instructions (String)
  • status (BatchStatus)

Example:

mutation {
  updateBatch(id: "value", instructions: "example", status: "value") {
    # Add your fields here
  }
}

updateBatchInputImage

Update a batch input image (e.g. correct the detected view type)

Returns: BatchInputImage!

Arguments:

  • id (UUID!) required
  • viewType (ViewType)

Example:

mutation {
  updateBatchInputImage(id: "value", viewType: "value") {
    # Add your fields here
  }
}

updateBrandMemory

Returns: BrandMemory!

Arguments:

  • id (UUID!) required
  • brandName (String!) required
  • brandIdentity (String!) required
  • fashionModelInstructions (String)
  • photoStyleInstructions (String)
  • targetGroupInstructions (String)

Example:

mutation {
  updateBrandMemory(id: "value", brandName: "example", brandIdentity: "example", fashionModelInstructions: "example", photoStyleInstructions: "example", targetGroupInstructions: "example") {
    # Add your fields here
  }
}

updateCampaign

Update an existing campaign

Returns: Campaign!

Arguments:

  • id (UUID!) required
  • name (String)
  • shootingLocationRevisionId (UUID)

Example:

mutation {
  updateCampaign(id: "value", name: "example", shootingLocationRevisionId: "value") {
    # Add your fields here
  }
}

updateCampaignImage

Update an existing campaign image

Returns: CampaignImage!

Arguments:

  • id (UUID!) required
  • title (String)
  • aspectRatio (AspectRatio)

Example:

mutation {
  updateCampaignImage(id: "value", title: "example", aspectRatio: "value") {
    # Add your fields here
  }
}

updateCampaignImageResource

Update an existing campaign image resource

Returns: CampaignImageResource!

Arguments:

  • id (UUID!) required
  • name (String)
  • content (String)
  • purpose (String)

Example:

mutation {
  updateCampaignImageResource(id: "value", name: "example", content: "example", purpose: "example") {
    # Add your fields here
  }
}

updateCampaignSetting

Updates which AI models are enabled for Campaign generation. Both enabled = mixed mode. At least one must stay enabled.

Returns: CampaignSetting!

Arguments:

  • useGptImage2 (Boolean!) required
  • useGemini3Pro (Boolean!) required

Example:

mutation {
  updateCampaignSetting(useGptImage2: true, useGemini3Pro: true) {
    # Add your fields here
  }
}

updateDesignerInstance

Update a Designer Instance (title or chosen fashion model)

Returns: DesignerInstance!

Arguments:

  • id (UUID!) required
  • title (String)
  • fashionModelRevisionId (UUID)

Example:

mutation {
  updateDesignerInstance(id: "value", title: "example", fashionModelRevisionId: "value") {
    # Add your fields here
  }
}

updateDesignerInstanceDescription

Set the garment description that anchors every generation prompt for this instance.

Returns: DesignerInstance!

Arguments:

  • id (UUID!) required
  • description (String!) required

Example:

mutation {
  updateDesignerInstanceDescription(id: "value", description: "example") {
    # Add your fields here
  }
}

updateDesignerRevisionLabel

Update the label on a Designer Instance Revision

Returns: DesignerInstanceRevision!

Arguments:

  • revisionId (UUID!) required
  • label (String)

Example:

mutation {
  updateDesignerRevisionLabel(revisionId: "value", label: "example") {
    # Add your fields here
  }
}

updateDesignerRevisionMeasurement

Manually overwrite the structured measurements for a Designer Revision Measurement. Re-fires the annotation pass (front + back).

Returns: DesignerRevisionMeasurement!

Arguments:

  • id (UUID!) required
  • front ([DesignerMeasurementInputArg!]!) required
  • back ([DesignerMeasurementInputArg!]!) required

Example:

mutation {
  updateDesignerRevisionMeasurement(id: "value", front: "value", back: "value") {
    # Add your fields here
  }
}

updateFashionModel

Update an existing fashion model

Returns: FashionModel!

Arguments:

  • id (UUID!) required
  • name (String)

Example:

mutation {
  updateFashionModel(id: "value", name: "example") {
    # Add your fields here
  }
}

updateFashionModelRevisionLabel

Update the label on a fashion model revision

Returns: FashionModelRevision!

Arguments:

  • revisionId (UUID!) required
  • label (String)

Example:

mutation {
  updateFashionModelRevisionLabel(revisionId: "value", label: "example") {
    # Add your fields here
  }
}

updateGroupShot

Update a group shot

Returns: GroupShot!

Arguments:

  • id (UUID!) required
  • shootingLocationRevisionId (UUID)
  • prompt (String)
  • aspectRatio (AspectRatio)

Example:

mutation {
  updateGroupShot(id: "value", shootingLocationRevisionId: "value", prompt: "example", aspectRatio: "value") {
    # Add your fields here
  }
}

updatePattern

Update a Pattern's name or repeatability flags.

Returns: Pattern!

Arguments:

  • id (UUID!) required
  • name (String)
  • repeatHorizontal (Boolean)
  • repeatVertical (Boolean)

Example:

mutation {
  updatePattern(id: "value", name: "example", repeatHorizontal: true, repeatVertical: true) {
    # Add your fields here
  }
}

updatePatternInputReference

Rename a pattern-level input reference.

Returns: PatternInputReference!

Arguments:

  • id (UUID!) required
  • label (String!) required

Example:

mutation {
  updatePatternInputReference(id: "value", label: "example") {
    # Add your fields here
  }
}

updatePatternRevisionLabel

Update the label on a PatternRevision.

Returns: PatternRevision!

Arguments:

  • revisionId (UUID!) required
  • label (String)

Example:

mutation {
  updatePatternRevisionLabel(revisionId: "value", label: "example") {
    # Add your fields here
  }
}

updateProductSpotlight

Returns: ProductSpotlight!

Arguments:

  • id (UUID!) required
  • productId (String)
  • productTitle (String)
  • productImage (String)
  • productImageId (String)
  • pickerResult (String)
  • status (ContentGenerationStatus)
  • variant (String)
  • sceneSuggestions ([String!])
  • objectType (String)
  • userPrompt (String)
  • optimizedPrompt (String)
  • sceneImage (String)
  • tryonImage (String)
  • errorMessage (String)
  • title (String)
  • subtitle (String)
  • ctaText (String)

Example:

mutation {
  updateProductSpotlight(id: "value", productId: "example", productTitle: "example", productImage: "example", productImageId: "example", pickerResult: "example", status: "value", variant: "example", sceneSuggestions: "example", objectType: "example", userPrompt: "example", optimizedPrompt: "example", sceneImage: "example", tryonImage: "example", errorMessage: "example", title: "example", subtitle: "example", ctaText: "example") {
    # Add your fields here
  }
}

updateProductStudio

Update a ProductStudio session

Returns: ProductStudio!

Arguments:

  • id (UUID!) required
  • title (String)
  • fashionModelRevisionId (UUID)

Example:

mutation {
  updateProductStudio(id: "value", title: "example", fashionModelRevisionId: "value") {
    # Add your fields here
  }
}

updateProductStudioInput

Update metadata for a ProductStudio input (all fields optional)

Returns: ProductStudioInput!

Arguments:

  • id (UUID!) required
  • productTitle (String)
  • productDescription (String)
  • productDetailPrompt (String)
  • viewType (ViewType)
  • productId (String)
  • isHero (Boolean) - Marks this input as a focus / hero product. Perspectives with useHeroOnly=true filter generation down to hero inputs only.

Example:

mutation {
  updateProductStudioInput(id: "value", productTitle: "example", productDescription: "example", productDetailPrompt: "example", viewType: "value", productId: "example", isHero: true) {
    # Add your fields here
  }
}

updateProductStudioPerspective

Update an existing product studio perspective

Returns: ProductStudioPerspective!

Arguments:

  • id (UUID!) required
  • name (String!) required
  • prompt (String!) required
  • acceptedViewTypes ([ViewType!])
  • aspectRatio (AspectRatio)
  • backgroundHexColor (String) - Optional 6-character hex color for the studio backdrop (e.g. 'ff0077'). Pass null to clear.
  • isProductOnly (Boolean) - When true, generates product-only pack shots without a fashion model.
  • useHeroOnly (Boolean) - When true, generation uses only inputs marked as hero. Use for fabric samples and similar focused shots.
  • aiModel (AiModel) - Which AI model renders this perspective. Omit to leave unchanged.

Example:

mutation {
  updateProductStudioPerspective(id: "value", name: "example", prompt: "example", acceptedViewTypes: "value", aspectRatio: "value", backgroundHexColor: "example", isProductOnly: true, useHeroOnly: true, aiModel: "value") {
    # Add your fields here
  }
}

updateProductStudioSetting

Returns: ProductStudioSetting!

Arguments:

  • id (UUID!) required
  • instructions (String)
  • scanInstructions (String)

Example:

mutation {
  updateProductStudioSetting(id: "value", instructions: "example", scanInstructions: "example") {
    # Add your fields here
  }
}

updateProductStudioStylingResource

Update styling instructions for a ProductStudio resource

Returns: ProductStudioStylingResource!

Arguments:

  • id (UUID!) required
  • stylingInstructions (String!) required

Example:

mutation {
  updateProductStudioStylingResource(id: "value", stylingInstructions: "example") {
    # Add your fields here
  }
}

updateProductVideo

Returns: ProductVideo!

Arguments:

  • id (UUID!) required
  • productId (String)
  • productTitle (String)
  • productImage (String)
  • productImageId (String)
  • videoUrl (String)
  • status (ContentGenerationStatus)
  • prompt (String)
  • modelType (VideoModelType)

Example:

mutation {
  updateProductVideo(id: "value", productId: "example", productTitle: "example", productImage: "example", productImageId: "example", videoUrl: "example", status: "value", prompt: "example", modelType: "value") {
    # Add your fields here
  }
}

updateShootingLocation

Update an existing shootingLocation

Returns: ShootingLocation!

Arguments:

  • id (UUID!) required
  • title (String)

Example:

mutation {
  updateShootingLocation(id: "value", title: "example") {
    # Add your fields here
  }
}

updateShootingLocationRevisionLabel

Update the label on a shooting location revision

Returns: ShootingLocationRevision!

Arguments:

  • revisionId (UUID!) required
  • label (String)

Example:

mutation {
  updateShootingLocationRevisionLabel(revisionId: "value", label: "example") {
    # Add your fields here
  }
}

updateSkill

Update an existing skill

Returns: Skill!

Arguments:

  • id (UUID!) required
  • title (String)
  • body (String)

Example:

mutation {
  updateSkill(id: "value", title: "example", body: "example") {
    # Add your fields here
  }
}

updateSpotlightBasedOnBrief

Returns: ProductSpotlight!

Arguments:

  • id (UUID!) required

Example:

mutation {
  updateSpotlightBasedOnBrief(id: "value") {
    # Add your fields here
  }
}

uploadProductVideoToShopify

Upload a generated product video to Shopify and attach it to the product

Returns: ProductVideo!

Arguments:

  • id (UUID!) required
  • videoName (String)

Example:

mutation {
  uploadProductVideoToShopify(id: "value", videoName: "example") {
    # Add your fields here
  }
}