---
title: "Generates spritesheet from text (Roles: user)"
method: POST
path: "/games/generate/sprite-image"
tags: ["Gamestorming"]
---

# Generates spritesheet from text (Roles: user)

`POST /games/generate/sprite-image`

## Request body

- GenerateNewPayload
  - `request_id` string
  - `model` string
  - `descriptions` string[]
  - `game_ids` string[]
  - `search_images` integer
  - `image_type` string
  - `context` string
  - `art_style` string
  - `perspective` string
  - `components` GeneratedText[]
    - `id` string
    - `request_id` string
    - `image` GameImage
      - `tags` string[]
      - `id` string
      - `image_id` string
      - `url` string
      - `type` string
      - `final_score` number, float
      - `nsfw_prob` number, float
      - `similarity` number, float
      - `width` integer
      - `height` integer
      - `game_id` string
      - `hosted_filename` string
      - `icon` boolean
      - `targetSize` integer
      - `seed` integer
      - `embedded` boolean
      - `analysed` boolean
      - `image` string
      - `image_type` string
      - `prompt` string
      - `motion_prompt` string
      - `request_id` string
      - `hints` string[]
      - `selected_genres` string[]
      - `selected_colors` string[]
      - `selected_style` string
      - `selected_perspective` string
      - `is_safe` boolean
      - `platform` string
      - `loading` boolean
      - `original_hints` string[]
      - `genres` string[]
      - `edit_mask` string
      - `edit_mode` string
      - `camera_rotation` integer
      - `camera_elevation` integer
      - `edit_mask_pil_image` PILImage
        - `format` string
        - `format_description` string
      - `pil_image` PILImage
        - `format` string
        - `format_description` string
      - `nsfw` number, float
      - `pose` SpritePose
        - `animation_prompt` string — Animation description for the sprite pose
        - `margin_ratio` number, float — Margin ratio for the sprite animation
        - `margin_ratio_mode` string
        - `name` string — Name of the sprite pose
        - `prompt` string — Prompt description for the sprite pose
    - `images` GameImage[]
      - `tags` string[]
      - `id` string
      - `image_id` string
      - `url` string
      - `type` string
      - `final_score` number, float
      - `nsfw_prob` number, float
      - `similarity` number, float
      - `width` integer
      - `height` integer
      - `game_id` string
      - `hosted_filename` string
      - `icon` boolean
      - `targetSize` integer
      - `seed` integer
      - `embedded` boolean
      - `analysed` boolean
      - `image` string
      - `image_type` string
      - `prompt` string
      - `motion_prompt` string
      - `request_id` string
      - `hints` string[]
      - `selected_genres` string[]
      - `selected_colors` string[]
      - `selected_style` string
      - `selected_perspective` string
      - `is_safe` boolean
      - `platform` string
      - `loading` boolean
      - `original_hints` string[]
      - `genres` string[]
      - `edit_mask` string
      - `edit_mode` string
      - `camera_rotation` integer
      - `camera_elevation` integer
      - `edit_mask_pil_image` PILImage
        - `format` string
        - `format_description` string
      - `pil_image` PILImage
        - `format` string
        - `format_description` string
      - `nsfw` number, float
      - `pose` SpritePose
        - `animation_prompt` string — Animation description for the sprite pose
        - `margin_ratio` number, float — Margin ratio for the sprite animation
        - `margin_ratio_mode` string
        - `name` string — Name of the sprite pose
        - `prompt` string — Prompt description for the sprite pose
    - `context_keywords` string[]
    - `text` string
    - `title` string
    - `type` string
    - `image_prompt` string
    - `final_score` number, float
  - `generations` GeneratedGame[]
    - `tags` string[]
    - `id` string
    - `title` string
    - `summary` string
    - `text_raw` string
    - `genres` string[]
    - `keywords` string[]
    - `description` string
    - `description_raw` string
    - `description_annotations` Annotation[]
      - `start` integer
      - `end` integer
      - `label` string
      - `text` string
      - `label_probs` object
        - `feature` number, float
        - `junk` number, float
        - `mechanic` number, float
        - `theme` number, float
    - `search_results` GenerationsSearchResult
      - `similar_games` SimilarGame[]
        - `id` string
        - `similarity` number, float
    - `images` PrometheusGameImage[]
      - `game_id` string
      - `hash` integer
      - `id` string
      - `origin` string
      - `similarity` number, float
    - `screenshots` GameImage[]
      - `tags` string[]
      - `id` string
      - `image_id` string
      - `url` string
      - `type` string
      - `final_score` number, float
      - `nsfw_prob` number, float
      - `similarity` number, float
      - `width` integer
      - `height` integer
      - `game_id` string
      - `hosted_filename` string
      - `icon` boolean
      - `targetSize` integer
      - `seed` integer
      - `embedded` boolean
      - `analysed` boolean
      - `image` string
      - `image_type` string
      - `prompt` string
      - `motion_prompt` string
      - `request_id` string
      - `hints` string[]
      - `selected_genres` string[]
      - `selected_colors` string[]
      - `selected_style` string
      - `selected_perspective` string
      - `is_safe` boolean
      - `platform` string
      - `loading` boolean
      - `original_hints` string[]
      - `genres` string[]
      - `edit_mask` string
      - `edit_mode` string
      - `camera_rotation` integer
      - `camera_elevation` integer
      - `edit_mask_pil_image` PILImage
        - `format` string
        - `format_description` string
      - `pil_image` PILImage
        - `format` string
        - `format_description` string
      - `nsfw` number, float
      - `pose` SpritePose
        - `animation_prompt` string — Animation description for the sprite pose
        - `margin_ratio` number, float — Margin ratio for the sprite animation
        - `margin_ratio_mode` string
        - `name` string — Name of the sprite pose
        - `prompt` string — Prompt description for the sprite pose
    - `image` GameImage
      - `tags` string[]
      - `id` string
      - `image_id` string
      - `url` string
      - `type` string
      - `final_score` number, float
      - `nsfw_prob` number, float
      - `similarity` number, float
      - `width` integer
      - `height` integer
      - `game_id` string
      - `hosted_filename` string
      - `icon` boolean
      - `targetSize` integer
      - `seed` integer
      - `embedded` boolean
      - `analysed` boolean
      - `image` string
      - `image_type` string
      - `prompt` string
      - `motion_prompt` string
      - `request_id` string
      - `hints` string[]
      - `selected_genres` string[]
      - `selected_colors` string[]
      - `selected_style` string
      - `selected_perspective` string
      - `is_safe` boolean
      - `platform` string
      - `loading` boolean
      - `original_hints` string[]
      - `genres` string[]
      - `edit_mask` string
      - `edit_mode` string
      - `camera_rotation` integer
      - `camera_elevation` integer
      - `edit_mask_pil_image` PILImage
        - `format` string
        - `format_description` string
      - `pil_image` PILImage
        - `format` string
        - `format_description` string
      - `nsfw` number, float
      - `pose` SpritePose
        - `animation_prompt` string — Animation description for the sprite pose
        - `margin_ratio` number, float — Margin ratio for the sprite animation
        - `margin_ratio_mode` string
        - `name` string — Name of the sprite pose
        - `prompt` string — Prompt description for the sprite pose
    - `blending` string[]
    - `blended_games` Game[]
      - `_id` string
      - `id` string
      - `source_id` string
      - `title` string
      - `short_description` string
      - `short_description_clean` string
      - `summary` string
      - `description` string
      - `description_clean` string
      - `description_annotations` Annotation[]
        - `start` integer
        - `end` integer
        - `label` string
        - `text` string
        - `label_probs` object
          - `feature` number, float
          - `junk` number, float
          - `mechanic` number, float
          - `theme` number, float
      - `user_rating_count` integer
      - `user_rating` number, float
      - `developers` string[]
      - `urls` string[]
      - `release_date` integer
      - `update_date` integer
      - `icon` GameImage
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `header` GameImage
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `videos` MediaElement[]
        - `type` string
        - `url` string
      - `screenshots` GameImage[]
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `url` string[]
      - `actual_genres` string[]
      - `predicted_genres` string[]
      - `augmented_genres` string[]
      - `source` string
      - `price` string
      - `platforms` string[]
      - `keywords` string[]
      - `game_modes` string[]
      - `genres` string[]
      - `advisory_rating` string
    - `platform` string
    - `perspective` string
    - `platforms` string[]
    - `sentence` string
    - `punchline` string
    - `art_style` string
    - `quality_score` number, float
    - `uniqueness_score` number, float
    - `final_score` number, float
    - `hints` string[]
    - `request_id` string
    - `prompt` string
    - `selected_genres` string[]
    - `mechanics` GeneratedText[]
      - `id` string
      - `request_id` string
      - `image` GameImage
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `images` GameImage[]
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `context_keywords` string[]
      - `text` string
      - `title` string
      - `type` string
      - `image_prompt` string
      - `final_score` number, float
    - `step_choices` StepValue[]
      - `step` string
      - `description` string
      - `value` string
      - `score` LudoScore
        - `metrics` LudoScoreMetric[]
          - `_max_similarity` number, double
          - `_min_similarity` number, double
          - `description` string
          - `key` string
          - `name` string
          - `score` number, double
          - `supporting_games_title` string
          - `supporting_games` string[]
          - `core_metric` boolean
          - `plotly_plot` PlotlyPlot
            - `data` PlotlyPlotData[]
              - …
            - `layout` PlotlyPlotData
              - …
          - `insights` LudoScoreInsight[]
            - `tag` string
            - `text` string
        - `params` string
        - `score_text` string
        - `score_unit` string
        - `score` number, double
        - `timestamp` integer
        - `country` string
        - `sources` string[]
        - `version` string
        - `badge` LudoScoreBadge
          - `description` string
          - `icon_url` string
          - `key` string
          - `name` string
        - `insights` LudoScoreInsight[]
          - `tag` string
          - `text` string
    - `score` LudoScore
      - `metrics` LudoScoreMetric[]
        - `_max_similarity` number, double
        - `_min_similarity` number, double
        - `description` string
        - `key` string
        - `name` string
        - `score` number, double
        - `supporting_games_title` string
        - `supporting_games` string[]
        - `core_metric` boolean
        - `plotly_plot` PlotlyPlot
          - `data` PlotlyPlotData[]
            - `mode` string
          - `layout` PlotlyPlotData
            - `mode` string
        - `insights` LudoScoreInsight[]
          - `tag` string
          - `text` string
      - `params` string
      - `score_text` string
      - `score_unit` string
      - `score` number, double
      - `timestamp` integer
      - `country` string
      - `sources` string[]
      - `version` string
      - `badge` LudoScoreBadge
        - `description` string
        - `icon_url` string
        - `key` string
        - `name` string
      - `insights` LudoScoreInsight[]
        - `tag` string
        - `text` string
    - `image_prompt` string
  - `hints` string[]
  - `gdds` GDD3[]
    - `project_id` string
    - `title` string
    - `elements` GDDElement[]
      - `id` string, uuid, required
      - `type` string, required
      - `title` string
      - `sub_title` string
      - `text` string
      - `mod_date` integer
      - `media` GDDMedia[]
        - `id` string, required
        - `type` 'image' | 'three_d_asset' | 'video' | 'spritesheet' | 'game_id' | 'audio', required
        - `uploaded` boolean
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `three_d_asset` ThreeDAsset
          - `tags` string[]
          - `asset` AssetGeneration
            - `id` string
            - `rigged` boolean — True once the model carries a skeleton and skin weights (set by rig-model). Gates the animation flow and the re-rig guard.
            - `seed` integer
            - `images_b64` string[]
            - `params_encrypted` string
            - `request_id` string
            - `video_b64` string
            - `mesh_video_b64` string
            - `snapshots_b64` string[]
            - `model_b64` string
            - `binary_data_b64` string
            - `voxels_b64` string
            - `mask_snapshots_b64` string[]
            - `depth_snapshots_b64` string[]
            - `normal_snapshots_b64` string[]
            - `generation_parameters` ThreeDGenerationParameters
              - …
          - `image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `animations` Animation3DClip[] — Accepted text-driven animation clips attached to this 3D model. Hydrated onto the history entry when listing 3D generations so the frontend can render the clip selector / management modal. Clips are stored in the Animation3DClip collection, not embedded.
            - `_id` string, required
            - `user_id` string, required
            - `model_asset_id` string, required — Parent 3D asset id (the GenerationHistory _id, which for three_d_asset equals image.id).
            - `clip_name` string
            - `prompt` string
            - `preset_id` string — Set when the clip came from the preset library (retargeting) rather than a text prompt.
            - `mode` 'rot_trans' | 'rot_only'
            - `seed` integer
            - `glb_url` string — Uploaded animation-only GLB (skeleton + one clip, no mesh). May be gzip-compressed like model GLBs.
            - `preview_url` string — Uploaded mp4 preview of the clip playing on the model.
            - `accepted` boolean — Whether this clip is baked into the model's downloadable full GLB. Every generated clip is persisted (so the frontend never loses them); `accepted` is the separate opt-in that controls download inclusion.
            - `motion` number, float
            - `fit_rmse` number, float
            - `date` integer
            - `deleted` boolean
        - `video` GeneratedVideo
          - `tags` string[]
          - `id` string
          - `original_prompt` string
          - `prompt` string
          - `url` string
          - `image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `seed` integer
          - `duration` number, float
          - `has_audio` boolean
          - `model` string
        - `spritesheet` Spritesheet
          - `tags` string[]
          - `id` string
          - `audio_b64` string
          - `duration` number, float
          - `start_timestamp` number
          - `end_timestamp` number
          - `num_frames` number
          - `max_num_frames` number
          - `margin_ratio` number
          - `margin_ratio_horizontal` number, float
          - `margin_ratio_vertical` number, float
          - `margin_ratio_mode` string
          - `target_frame_size` number
          - `loop` boolean
          - `bad_loop` boolean
          - `out_of_frame` boolean
          - `crop` boolean
          - `original_prompt` string
          - `motion_prompt` string
          - `prompt` string
          - `seed` number
          - `sprite_sheet` PILImage
            - `format` string
            - `format_description` string
          - `sprite_sheet_b64` string
          - `sprite_sheet_raw_b64` string
          - `video` GeneratedVideo
            - `tags` string[]
            - `id` string
            - `original_prompt` string
            - `prompt` string
            - `url` string
            - `image` GameImage
              - …
            - `pil_image` PILImage
              - …
            - `seed` integer
            - `duration` number, float
            - `has_audio` boolean
            - `model` string
          - `preview_video_b64` string
          - `first_frame_b64` string
          - `last_frame_b64` string
          - `image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `middle_image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `final_image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `has_audio` boolean
          - `is_edited` boolean — True when this spritesheet was produced by an edit (prompt, outpaint, or fix_loop) — the whole animation was re-rendered, so frames may drift from the original.
          - `label` string
          - `preview_scale` number, float
          - `pack_alignment` PackAlignment
            - `description` string
            - `sizeHeightPx` number, float
            - `groundOffset` number, float
            - `horizontalOffset` number, float
        - `audio` GeneratedAudio
          - `tags` string[]
          - `id` string
          - `audio_b64` string
          - `original_prompt` string
          - `original_text` string
          - `prompt` string
          - `text` string
          - `sample_url` string
          - `seed` integer
          - `type` string
          - `loop` boolean
          - `duration` number, float
          - `voice_preset` VoicePreset
            - `id` string
            - `language` string
            - `emotion` string
        - `placeholder` GDDPlaceholder
          - `id` string, uuid
          - `type` string
        - `game_id` string
        - `loading` boolean
      - `loading` integer
      - `pending` boolean
      - `collapsed` boolean
      - `country` string
    - `icon` GDDMedia
      - `id` string, required
      - `type` 'image' | 'three_d_asset' | 'video' | 'spritesheet' | 'game_id' | 'audio', required
      - `uploaded` boolean
      - `image` GameImage
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `three_d_asset` ThreeDAsset
        - `tags` string[]
        - `asset` AssetGeneration
          - `id` string
          - `rigged` boolean — True once the model carries a skeleton and skin weights (set by rig-model). Gates the animation flow and the re-rig guard.
          - `seed` integer
          - `images_b64` string[]
          - `params_encrypted` string
          - `request_id` string
          - `video_b64` string
          - `mesh_video_b64` string
          - `snapshots_b64` string[]
          - `model_b64` string
          - `binary_data_b64` string
          - `voxels_b64` string
          - `mask_snapshots_b64` string[]
          - `depth_snapshots_b64` string[]
          - `normal_snapshots_b64` string[]
          - `generation_parameters` ThreeDGenerationParameters
            - `target_num_faces` integer
            - `dynamic_simplification` number, float
            - `remeshing` string
            - `texture_size` integer
            - `texture_type` string
            - `render_format` string
            - `render_video` boolean
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `animations` Animation3DClip[] — Accepted text-driven animation clips attached to this 3D model. Hydrated onto the history entry when listing 3D generations so the frontend can render the clip selector / management modal. Clips are stored in the Animation3DClip collection, not embedded.
          - `_id` string, required
          - `user_id` string, required
          - `model_asset_id` string, required — Parent 3D asset id (the GenerationHistory _id, which for three_d_asset equals image.id).
          - `clip_name` string
          - `prompt` string
          - `preset_id` string — Set when the clip came from the preset library (retargeting) rather than a text prompt.
          - `mode` 'rot_trans' | 'rot_only'
          - `seed` integer
          - `glb_url` string — Uploaded animation-only GLB (skeleton + one clip, no mesh). May be gzip-compressed like model GLBs.
          - `preview_url` string — Uploaded mp4 preview of the clip playing on the model.
          - `accepted` boolean — Whether this clip is baked into the model's downloadable full GLB. Every generated clip is persisted (so the frontend never loses them); `accepted` is the separate opt-in that controls download inclusion.
          - `motion` number, float
          - `fit_rmse` number, float
          - `date` integer
          - `deleted` boolean
      - `video` GeneratedVideo
        - `tags` string[]
        - `id` string
        - `original_prompt` string
        - `prompt` string
        - `url` string
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `seed` integer
        - `duration` number, float
        - `has_audio` boolean
        - `model` string
      - `spritesheet` Spritesheet
        - `tags` string[]
        - `id` string
        - `audio_b64` string
        - `duration` number, float
        - `start_timestamp` number
        - `end_timestamp` number
        - `num_frames` number
        - `max_num_frames` number
        - `margin_ratio` number
        - `margin_ratio_horizontal` number, float
        - `margin_ratio_vertical` number, float
        - `margin_ratio_mode` string
        - `target_frame_size` number
        - `loop` boolean
        - `bad_loop` boolean
        - `out_of_frame` boolean
        - `crop` boolean
        - `original_prompt` string
        - `motion_prompt` string
        - `prompt` string
        - `seed` number
        - `sprite_sheet` PILImage
          - `format` string
          - `format_description` string
        - `sprite_sheet_b64` string
        - `sprite_sheet_raw_b64` string
        - `video` GeneratedVideo
          - `tags` string[]
          - `id` string
          - `original_prompt` string
          - `prompt` string
          - `url` string
          - `image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `seed` integer
          - `duration` number, float
          - `has_audio` boolean
          - `model` string
        - `preview_video_b64` string
        - `first_frame_b64` string
        - `last_frame_b64` string
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `middle_image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `final_image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `has_audio` boolean
        - `is_edited` boolean — True when this spritesheet was produced by an edit (prompt, outpaint, or fix_loop) — the whole animation was re-rendered, so frames may drift from the original.
        - `label` string
        - `preview_scale` number, float
        - `pack_alignment` PackAlignment
          - `description` string
          - `sizeHeightPx` number, float
          - `groundOffset` number, float
          - `horizontalOffset` number, float
      - `audio` GeneratedAudio
        - `tags` string[]
        - `id` string
        - `audio_b64` string
        - `original_prompt` string
        - `original_text` string
        - `prompt` string
        - `text` string
        - `sample_url` string
        - `seed` integer
        - `type` string
        - `loop` boolean
        - `duration` number, float
        - `voice_preset` VoicePreset
          - `id` string
          - `language` string
          - `emotion` string
      - `placeholder` GDDPlaceholder
        - `id` string, uuid
        - `type` string
      - `game_id` string
      - `loading` boolean
    - `header` GDDMedia
      - `id` string, required
      - `type` 'image' | 'three_d_asset' | 'video' | 'spritesheet' | 'game_id' | 'audio', required
      - `uploaded` boolean
      - `image` GameImage
        - `tags` string[]
        - `id` string
        - `image_id` string
        - `url` string
        - `type` string
        - `final_score` number, float
        - `nsfw_prob` number, float
        - `similarity` number, float
        - `width` integer
        - `height` integer
        - `game_id` string
        - `hosted_filename` string
        - `icon` boolean
        - `targetSize` integer
        - `seed` integer
        - `embedded` boolean
        - `analysed` boolean
        - `image` string
        - `image_type` string
        - `prompt` string
        - `motion_prompt` string
        - `request_id` string
        - `hints` string[]
        - `selected_genres` string[]
        - `selected_colors` string[]
        - `selected_style` string
        - `selected_perspective` string
        - `is_safe` boolean
        - `platform` string
        - `loading` boolean
        - `original_hints` string[]
        - `genres` string[]
        - `edit_mask` string
        - `edit_mode` string
        - `camera_rotation` integer
        - `camera_elevation` integer
        - `edit_mask_pil_image` PILImage
          - `format` string
          - `format_description` string
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `nsfw` number, float
        - `pose` SpritePose
          - `animation_prompt` string — Animation description for the sprite pose
          - `margin_ratio` number, float — Margin ratio for the sprite animation
          - `margin_ratio_mode` string
          - `name` string — Name of the sprite pose
          - `prompt` string — Prompt description for the sprite pose
      - `three_d_asset` ThreeDAsset
        - `tags` string[]
        - `asset` AssetGeneration
          - `id` string
          - `rigged` boolean — True once the model carries a skeleton and skin weights (set by rig-model). Gates the animation flow and the re-rig guard.
          - `seed` integer
          - `images_b64` string[]
          - `params_encrypted` string
          - `request_id` string
          - `video_b64` string
          - `mesh_video_b64` string
          - `snapshots_b64` string[]
          - `model_b64` string
          - `binary_data_b64` string
          - `voxels_b64` string
          - `mask_snapshots_b64` string[]
          - `depth_snapshots_b64` string[]
          - `normal_snapshots_b64` string[]
          - `generation_parameters` ThreeDGenerationParameters
            - `target_num_faces` integer
            - `dynamic_simplification` number, float
            - `remeshing` string
            - `texture_size` integer
            - `texture_type` string
            - `render_format` string
            - `render_video` boolean
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `animations` Animation3DClip[] — Accepted text-driven animation clips attached to this 3D model. Hydrated onto the history entry when listing 3D generations so the frontend can render the clip selector / management modal. Clips are stored in the Animation3DClip collection, not embedded.
          - `_id` string, required
          - `user_id` string, required
          - `model_asset_id` string, required — Parent 3D asset id (the GenerationHistory _id, which for three_d_asset equals image.id).
          - `clip_name` string
          - `prompt` string
          - `preset_id` string — Set when the clip came from the preset library (retargeting) rather than a text prompt.
          - `mode` 'rot_trans' | 'rot_only'
          - `seed` integer
          - `glb_url` string — Uploaded animation-only GLB (skeleton + one clip, no mesh). May be gzip-compressed like model GLBs.
          - `preview_url` string — Uploaded mp4 preview of the clip playing on the model.
          - `accepted` boolean — Whether this clip is baked into the model's downloadable full GLB. Every generated clip is persisted (so the frontend never loses them); `accepted` is the separate opt-in that controls download inclusion.
          - `motion` number, float
          - `fit_rmse` number, float
          - `date` integer
          - `deleted` boolean
      - `video` GeneratedVideo
        - `tags` string[]
        - `id` string
        - `original_prompt` string
        - `prompt` string
        - `url` string
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
        - `pil_image` PILImage
          - `format` string
          - `format_description` string
        - `seed` integer
        - `duration` number, float
        - `has_audio` boolean
        - `model` string
      - `spritesheet` Spritesheet
        - `tags` string[]
        - `id` string
        - `audio_b64` string
        - `duration` number, float
        - `start_timestamp` number
        - `end_timestamp` number
        - `num_frames` number
        - `max_num_frames` number
        - `margin_ratio` number
        - `margin_ratio_horizontal` number, float
        - `margin_ratio_vertical` number, float
        - `margin_ratio_mode` string
        - `target_frame_size` number
        - `loop` boolean
        - `bad_loop` boolean
        - `out_of_frame` boolean
        - `crop` boolean
        - `original_prompt` string
        - `motion_prompt` string
        - `prompt` string
        - `seed` number
        - `sprite_sheet` PILImage
          - `format` string
          - `format_description` string
        - `sprite_sheet_b64` string
        - `sprite_sheet_raw_b64` string
        - `video` GeneratedVideo
          - `tags` string[]
          - `id` string
          - `original_prompt` string
          - `prompt` string
          - `url` string
          - `image` GameImage
            - `tags` string[]
            - `id` string
            - `image_id` string
            - `url` string
            - `type` string
            - `final_score` number, float
            - `nsfw_prob` number, float
            - `similarity` number, float
            - `width` integer
            - `height` integer
            - `game_id` string
            - `hosted_filename` string
            - `icon` boolean
            - `targetSize` integer
            - `seed` integer
            - `embedded` boolean
            - `analysed` boolean
            - `image` string
            - `image_type` string
            - `prompt` string
            - `motion_prompt` string
            - `request_id` string
            - `hints` string[]
            - `selected_genres` string[]
            - `selected_colors` string[]
            - `selected_style` string
            - `selected_perspective` string
            - `is_safe` boolean
            - `platform` string
            - `loading` boolean
            - `original_hints` string[]
            - `genres` string[]
            - `edit_mask` string
            - `edit_mode` string
            - `camera_rotation` integer
            - `camera_elevation` integer
            - `edit_mask_pil_image` PILImage
              - …
            - `pil_image` PILImage
              - …
            - `nsfw` number, float
            - `pose` SpritePose
              - …
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `seed` integer
          - `duration` number, float
          - `has_audio` boolean
          - `model` string
        - `preview_video_b64` string
        - `first_frame_b64` string
        - `last_frame_b64` string
        - `image` GameImage
          - `tags` string[]
          - `id` string
          - `image_id` string
          - `url` string
          - `type` string
          - `final_score` number, float
          - `nsfw_prob` number, float
          - `similarity` number, float
          - `width` integer
          - `height` integer
          - `game_id` string
          - `hosted_filename` string
          - `icon` boolean
          - `targetSize` integer
          - `seed` integer
          - `embedded` boolean
          - `analysed` boolean
          - `image` string
          - `image_type` string
          - `prompt` string
          - `motion_prompt` string
          - `request_id` string
          - `hints` string[]
          - `selected_genres` string[]
          - `selected_colors` string[]
          - `selected_style` string
          - `selected_perspective` string
          - `is_safe` boolean
          - `platform` string
          - `loading` boolean
          - `original_hints` string[]
          - `genres` string[]
          - `edit_mask` string
          - `edit_mode` string
          - `camera_rotation` integer
          - `camera_elevation` integer
          - `edit_mask_pil_image` PILImage
            - `format` string
            - `format_description` string
          - `pil_image` PILImage
            - `format` string
            - `format_description` string
          - `nsfw` number, float
          - `pose` SpritePose
            - `animation_prompt` string — Animation description for the sprite pose
            - `margin_ratio` number, float — Margin ratio for the sprite animation
            - `margin_ratio_mode` string
            - `name` string — Name of the sprite pose
            - `prompt` string — Prompt description for the sprite pose
- … truncated; see the full OpenAPI document linked below

## Response `200`

Success

- Spritesheet[]
  - `tags` string[]
  - `id` string
  - `audio_b64` string
  - `duration` number, float
  - `start_timestamp` number
  - `end_timestamp` number
  - `num_frames` number
  - `max_num_frames` number
  - `margin_ratio` number
  - `margin_ratio_horizontal` number, float
  - `margin_ratio_vertical` number, float
  - `margin_ratio_mode` string
  - `target_frame_size` number
  - `loop` boolean
  - `bad_loop` boolean
  - `out_of_frame` boolean
  - `crop` boolean
  - `original_prompt` string
  - `motion_prompt` string
  - `prompt` string
  - `seed` number
  - `sprite_sheet` PILImage
    - `format` string
    - `format_description` string
  - `sprite_sheet_b64` string
  - `sprite_sheet_raw_b64` string
  - `video` GeneratedVideo
    - `tags` string[]
    - `id` string
    - `original_prompt` string
    - `prompt` string
    - `url` string
    - `image` GameImage
      - `tags` string[]
      - `id` string
      - `image_id` string
      - `url` string
      - `type` string
      - `final_score` number, float
      - `nsfw_prob` number, float
      - `similarity` number, float
      - `width` integer
      - `height` integer
      - `game_id` string
      - `hosted_filename` string
      - `icon` boolean
      - `targetSize` integer
      - `seed` integer
      - `embedded` boolean
      - `analysed` boolean
      - `image` string
      - `image_type` string
      - `prompt` string
      - `motion_prompt` string
      - `request_id` string
      - `hints` string[]
      - `selected_genres` string[]
      - `selected_colors` string[]
      - `selected_style` string
      - `selected_perspective` string
      - `is_safe` boolean
      - `platform` string
      - `loading` boolean
      - `original_hints` string[]
      - `genres` string[]
      - `edit_mask` string
      - `edit_mode` string
      - `camera_rotation` integer
      - `camera_elevation` integer
      - `edit_mask_pil_image` PILImage
        - `format` string
        - `format_description` string
      - `pil_image` PILImage
        - `format` string
        - `format_description` string
      - `nsfw` number, float
      - `pose` SpritePose
        - `animation_prompt` string — Animation description for the sprite pose
        - `margin_ratio` number, float — Margin ratio for the sprite animation
        - `margin_ratio_mode` string
        - `name` string — Name of the sprite pose
        - `prompt` string — Prompt description for the sprite pose
    - `pil_image` PILImage
      - `format` string
      - `format_description` string
    - `seed` integer
    - `duration` number, float
    - `has_audio` boolean
    - `model` string
  - `preview_video_b64` string
  - `first_frame_b64` string
  - `last_frame_b64` string
  - `image` GameImage
    - `tags` string[]
    - `id` string
    - `image_id` string
    - `url` string
    - `type` string
    - `final_score` number, float
    - `nsfw_prob` number, float
    - `similarity` number, float
    - `width` integer
    - `height` integer
    - `game_id` string
    - `hosted_filename` string
    - `icon` boolean
    - `targetSize` integer
    - `seed` integer
    - `embedded` boolean
    - `analysed` boolean
    - `image` string
    - `image_type` string
    - `prompt` string
    - `motion_prompt` string
    - `request_id` string
    - `hints` string[]
    - `selected_genres` string[]
    - `selected_colors` string[]
    - `selected_style` string
    - `selected_perspective` string
    - `is_safe` boolean
    - `platform` string
    - `loading` boolean
    - `original_hints` string[]
    - `genres` string[]
    - `edit_mask` string
    - `edit_mode` string
    - `camera_rotation` integer
    - `camera_elevation` integer
    - `edit_mask_pil_image` PILImage
      - `format` string
      - `format_description` string
    - `pil_image` PILImage
      - `format` string
      - `format_description` string
    - `nsfw` number, float
    - `pose` SpritePose
      - `animation_prompt` string — Animation description for the sprite pose
      - `margin_ratio` number, float — Margin ratio for the sprite animation
      - `margin_ratio_mode` string
      - `name` string — Name of the sprite pose
      - `prompt` string — Prompt description for the sprite pose
  - `middle_image` GameImage
    - `tags` string[]
    - `id` string
    - `image_id` string
    - `url` string
    - `type` string
    - `final_score` number, float
    - `nsfw_prob` number, float
    - `similarity` number, float
    - `width` integer
    - `height` integer
    - `game_id` string
    - `hosted_filename` string
    - `icon` boolean
    - `targetSize` integer
    - `seed` integer
    - `embedded` boolean
    - `analysed` boolean
    - `image` string
    - `image_type` string
    - `prompt` string
    - `motion_prompt` string
    - `request_id` string
    - `hints` string[]
    - `selected_genres` string[]
    - `selected_colors` string[]
    - `selected_style` string
    - `selected_perspective` string
    - `is_safe` boolean
    - `platform` string
    - `loading` boolean
    - `original_hints` string[]
    - `genres` string[]
    - `edit_mask` string
    - `edit_mode` string
    - `camera_rotation` integer
    - `camera_elevation` integer
    - `edit_mask_pil_image` PILImage
      - `format` string
      - `format_description` string
    - `pil_image` PILImage
      - `format` string
      - `format_description` string
    - `nsfw` number, float
    - `pose` SpritePose
      - `animation_prompt` string — Animation description for the sprite pose
      - `margin_ratio` number, float — Margin ratio for the sprite animation
      - `margin_ratio_mode` string
      - `name` string — Name of the sprite pose
      - `prompt` string — Prompt description for the sprite pose
  - `final_image` GameImage
    - `tags` string[]
    - `id` string
    - `image_id` string
    - `url` string
    - `type` string
    - `final_score` number, float
    - `nsfw_prob` number, float
    - `similarity` number, float
    - `width` integer
    - `height` integer
    - `game_id` string
    - `hosted_filename` string
    - `icon` boolean
    - `targetSize` integer
    - `seed` integer
    - `embedded` boolean
    - `analysed` boolean
    - `image` string
    - `image_type` string
    - `prompt` string
    - `motion_prompt` string
    - `request_id` string
    - `hints` string[]
    - `selected_genres` string[]
    - `selected_colors` string[]
    - `selected_style` string
    - `selected_perspective` string
    - `is_safe` boolean
    - `platform` string
    - `loading` boolean
    - `original_hints` string[]
    - `genres` string[]
    - `edit_mask` string
    - `edit_mode` string
    - `camera_rotation` integer
    - `camera_elevation` integer
    - `edit_mask_pil_image` PILImage
      - `format` string
      - `format_description` string
    - `pil_image` PILImage
      - `format` string
      - `format_description` string
    - `nsfw` number, float
    - `pose` SpritePose
      - `animation_prompt` string — Animation description for the sprite pose
      - `margin_ratio` number, float — Margin ratio for the sprite animation
      - `margin_ratio_mode` string
      - `name` string — Name of the sprite pose
      - `prompt` string — Prompt description for the sprite pose
  - `has_audio` boolean
  - `is_edited` boolean — True when this spritesheet was produced by an edit (prompt, outpaint, or fix_loop) — the whole animation was re-rendered, so frames may drift from the original.
  - `label` string
  - `preview_scale` number, float
  - `pack_alignment` PackAlignment
    - `description` string
    - `sizeHeightPx` number, float
    - `groundOffset` number, float
    - `horizontalOffset` number, float

## Other responses

- `400` — Error

---

[API](https://skmtc.net/ludo/apis/ludo-ai-api.md) · [All operations](https://skmtc.net/ludo/apis/ludo-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ludo/ludo-ai-api/revisions/3af866d68651/schema)
