{
  "openapi": "3.1.0",
  "info": {
    "title": "Alai API",
    "description": "API endpoints for Alai Classic, Creative, and Modern presentation generation",
    "version": "1.1.0"
  },
  "paths": {
    "/api/v1/ping": {
      "get": {
        "tags": [
          "External API"
        ],
        "summary": "Verify API key",
        "description": "Validates your API key and returns your user ID. Use this to test authentication before making other requests.",
        "operationId": "ping_api_v1_ping_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations": {
      "get": {
        "tags": [
          "External API"
        ],
        "summary": "List all presentations",
        "description": "Returns a list of all presentations owned by the authenticated user, including their IDs and titles.",
        "operationId": "get_presentations_api_v1_presentations_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetPresentationsResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/themes": {
      "get": {
        "tags": [
          "External API"
        ],
        "summary": "List available themes",
        "description": "Returns theme IDs and names for all system themes and user themes accessible to the authenticated user.",
        "operationId": "get_themes_api_v1_themes_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetThemesResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/vibes": {
      "get": {
        "tags": [
          "External API"
        ],
        "summary": "List available vibes",
        "description": "Returns vibe IDs and names for all system vibes and custom user vibes accessible to the authenticated user. Pass the `id` as `presentation_options.vibe_id` on a generation request.",
        "operationId": "get_vibes_api_v1_vibes_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetVibesResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/upload-images": {
      "post": {
        "tags": [
          "External API"
        ],
        "summary": "Upload images for use in presentations",
        "description": "Upload images to be used in presentation generation. Returns image IDs that can be referenced in subsequent requests.\n\n**Limits:** Max 10 images per request, 10MB per file. Supported formats: PNG, JPEG, WebP, GIF, AVIF, SVG.",
        "operationId": "upload_images_api_v1_upload_images_post",
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_images_api_v1_upload_images_post"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/generations": {
      "post": {
        "tags": [
          "External API"
        ],
        "summary": "Generate a presentation",
        "description": "Create a new presentation from text content. This is an async operation.\n\n**Workflow:**\n1. Submit your content and options\n2. Receive a `generation_id` immediately\n3. Poll `GET /generations/{generation_id}` until status is `completed` or `failed`\n4. Access your presentation via the URLs in the response\n\n**Rate limit:** Max 5 concurrent generations per user.",
        "operationId": "generate_presentation_api_v1_generations_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GeneratePresentationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalApiGenerationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/generations/{generation_id}": {
      "get": {
        "tags": [
          "External API"
        ],
        "summary": "Check generation status",
        "description": "Poll this endpoint to check the status of any async operation (presentation generation, slide creation, export, or transcript generation).\n\n**Status values:**\n- `pending` - Queued, not yet started\n- `in_progress` - Currently processing\n- `completed` - Finished successfully; results available in response\n- `failed` - Error occurred; check `error` field for details\n\n**Recommended polling:** Every 2-5 seconds. Most generations complete within 30-120 seconds.",
        "operationId": "get_generation_status_api_v1_generations__generation_id__get",
        "parameters": [
          {
            "name": "generation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Generation Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "$ref": "#/components/schemas/PresentationGenerationStatus"
                    },
                    {
                      "$ref": "#/components/schemas/SlideCreationStatus"
                    },
                    {
                      "$ref": "#/components/schemas/ExportStatus"
                    },
                    {
                      "$ref": "#/components/schemas/TranscriptStatus"
                    }
                  ],
                  "title": "Response Get Generation Status Api V1 Generations  Generation Id  Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_id}/slides": {
      "post": {
        "tags": [
          "External API"
        ],
        "summary": "Add a slide to an existing presentation",
        "description": "Add a new slide to an existing presentation. This is an async operation\u2014poll the returned `generation_id` for completion.\n\nThe slide content will be transformed into a professionally designed slide with AI-generated layout and optional images.",
        "operationId": "create_slide_api_v1_presentations__presentation_id__slides_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateSlideContentInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalApiGenerationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_id}/slides/{slide_id}": {
      "delete": {
        "tags": [
          "External API"
        ],
        "summary": "Delete a slide from a presentation",
        "operationId": "delete_slide_api_v1_presentations__presentation_id__slides__slide_id__delete",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          },
          {
            "name": "slide_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Slide Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeleteSlideResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_id}/exports": {
      "post": {
        "tags": [
          "External API"
        ],
        "summary": "Export a presentation",
        "description": "Export an existing presentation to one or more formats (PDF, PPTX). This is an async operation.\n\nPoll `GET /generations/{generation_id}` until status is `completed`, then access download URLs in the `formats` field.",
        "operationId": "export_presentation_api_v1_presentations__presentation_id__exports_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportPresentationInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalApiGenerationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_id}/transcripts": {
      "post": {
        "tags": [
          "External API"
        ],
        "summary": "Generate slide transcripts",
        "description": "Extract slide content and layout information using AI. This is an async operation.\n\nReturns a structured description of each slide's text content and layout. You can process all slides or specify particular slide IDs.",
        "operationId": "generate_transcripts_api_v1_presentations__presentation_id__transcripts_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GenerateTranscriptInput"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExternalApiGenerationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/presentations/{presentation_id}": {
      "delete": {
        "tags": [
          "External API"
        ],
        "summary": "Delete Presentation",
        "operationId": "delete_presentation_api_v1_presentations__presentation_id__delete",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DeletePresentationResponse"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/ping": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Ping",
        "operationId": "ping_api_modern_v1_ping_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {}
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/models": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "List Models",
        "operationId": "list_models_api_modern_v1_models_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ModernApiModel"
                  },
                  "type": "array",
                  "title": "Response List Models Api Modern V1 Models Get"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/design-systems": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "List Design Systems",
        "operationId": "list_design_systems_api_modern_v1_design_systems_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ModernApiDesignSystem"
                  },
                  "type": "array",
                  "title": "Response List Design Systems Api Modern V1 Design Systems Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "List Presentations",
        "operationId": "list_presentations_api_modern_v1_presentations_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ModernApiPresentation"
                  },
                  "type": "array",
                  "title": "Response List Presentations Api Modern V1 Presentations Get"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Create Presentation",
        "operationId": "create_presentation_api_modern_v1_presentations_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModernApiCreatePresentationInput"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiPresentation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations/{presentation_id}": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Get Presentation",
        "operationId": "get_presentation_api_modern_v1_presentations__presentation_id__get",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiPresentation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Delete Presentation",
        "operationId": "delete_presentation_api_modern_v1_presentations__presentation_id__delete",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations/{presentation_id}/assets": {
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Upload Assets",
        "operationId": "upload_assets_api_modern_v1_presentations__presentation_id__assets_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/Body_upload_assets_api_modern_v1_presentations__presentation_id__assets_post"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ModernApiAsset"
                  },
                  "title": "Response Upload Assets Api Modern V1 Presentations  Presentation Id  Assets Post"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations/{presentation_id}/generate": {
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Generate Presentation",
        "operationId": "generate_presentation_api_modern_v1_presentations__presentation_id__generate_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModernApiGenerateInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiOperation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations/{presentation_id}/edits": {
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Edit Presentation",
        "operationId": "edit_presentation_api_modern_v1_presentations__presentation_id__edits_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModernApiEditInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiOperation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/presentations/{presentation_id}/exports": {
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Export Presentation",
        "operationId": "export_presentation_api_modern_v1_presentations__presentation_id__exports_post",
        "parameters": [
          {
            "name": "presentation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Presentation Id"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ModernApiExportInput"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiOperation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/operations/{operation_id}": {
      "get": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Get Operation",
        "operationId": "get_operation_api_modern_v1_operations__operation_id__get",
        "parameters": [
          {
            "name": "operation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Operation Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiOperation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/api/modern/v1/operations/{operation_id}/cancel": {
      "post": {
        "tags": [
          "Modern Slides API"
        ],
        "summary": "Cancel Operation",
        "operationId": "cancel_operation_api_modern_v1_operations__operation_id__cancel_post",
        "parameters": [
          {
            "name": "operation_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "title": "Operation Id"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModernApiOperation"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AIImageStyleType": {
        "type": "string",
        "enum": [
          "auto",
          "realistic",
          "artistic",
          "cartoon",
          "three_d",
          "custom"
        ],
        "title": "AIImageStyleType"
      },
      "ApiExportFormat": {
        "type": "string",
        "enum": [
          "link",
          "pdf",
          "ppt"
        ],
        "title": "ApiExportFormat"
      },
      "ApiGenerationStatus": {
        "type": "string",
        "enum": [
          "pending",
          "in_progress",
          "completed",
          "failed"
        ],
        "title": "ApiGenerationStatus"
      },
      "Body_upload_images_api_v1_upload_images_post": {
        "properties": {
          "files": {
            "items": {
              "type": "string",
              "format": "binary"
            },
            "type": "array",
            "title": "Files"
          }
        },
        "type": "object",
        "required": [
          "files"
        ],
        "title": "Body_upload_images_api_v1_upload_images_post"
      },
      "CreateSlideContentInput": {
        "properties": {
          "slide_context": {
            "type": "string",
            "title": "Slide Context",
            "description": "Content for this slide."
          },
          "options": {
            "$ref": "#/components/schemas/CreateSlideOptions"
          },
          "export_formats": {
            "items": {
              "$ref": "#/components/schemas/ApiExportFormat"
            },
            "type": "array",
            "title": "Export Formats",
            "description": "The formats in which the generation will make the slide available",
            "default": [
              "link"
            ]
          }
        },
        "type": "object",
        "required": [
          "slide_context"
        ],
        "title": "CreateSlideContentInput"
      },
      "CreateSlideOptions": {
        "properties": {
          "additional_instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Instructions",
            "description": "Guidance for the AI on this specific slide's style or content focus."
          },
          "slide_type": {
            "$ref": "#/components/schemas/SlideType",
            "description": "Slide style: 'classic' for structured editable text-led slides, or 'creative' for image-led slides generated with Nano Banana Pro.",
            "default": "classic"
          },
          "slide_order": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slide Order",
            "description": "Position in the presentation (0-indexed). If omitted, appends to the end."
          },
          "total_variants_per_slide": {
            "type": "integer",
            "maximum": 4.0,
            "minimum": 1.0,
            "title": "Total Variants Per Slide",
            "description": "Number of distinct options to generate for each slide",
            "default": 1
          }
        },
        "type": "object",
        "title": "CreateSlideOptions"
      },
      "DeletePresentationResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          },
          "presentation_id": {
            "type": "string",
            "title": "Presentation Id"
          }
        },
        "type": "object",
        "required": [
          "success",
          "presentation_id"
        ],
        "title": "DeletePresentationResponse"
      },
      "DeleteSlideResponse": {
        "properties": {
          "success": {
            "type": "boolean",
            "title": "Success"
          }
        },
        "type": "object",
        "required": [
          "success"
        ],
        "title": "DeleteSlideResponse"
      },
      "ExportPresentationInput": {
        "properties": {
          "formats": {
            "items": {
              "$ref": "#/components/schemas/ApiExportFormat"
            },
            "type": "array",
            "title": "Formats",
            "description": "Formats to export: 'link' (shareable URL), 'pdf', 'ppt'",
            "default": [
              "link"
            ]
          }
        },
        "type": "object",
        "title": "ExportPresentationInput"
      },
      "ExportStatus": {
        "properties": {
          "generation_id": {
            "type": "string",
            "title": "Generation Id"
          },
          "status": {
            "$ref": "#/components/schemas/ApiGenerationStatus",
            "description": "Current state: pending \u2192 in_progress \u2192 completed/failed"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Human-readable error message when status is 'failed'"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "ISO 8601 timestamp when generation finished"
          },
          "generation_type": {
            "type": "string",
            "const": "presentation_export",
            "title": "Generation Type",
            "default": "presentation_export"
          },
          "presentation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presentation Id"
          },
          "formats": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/FormatResult"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formats",
            "description": "Export results keyed by format ('link', 'pdf', 'ppt')"
          }
        },
        "type": "object",
        "required": [
          "generation_id",
          "status",
          "created_at"
        ],
        "title": "ExportStatus"
      },
      "ExternalApiGenerationResponse": {
        "properties": {
          "generation_id": {
            "type": "string",
            "title": "Generation Id",
            "description": "Unique identifier to poll for generation status via GET /generations/{generation_id}"
          }
        },
        "type": "object",
        "required": [
          "generation_id"
        ],
        "title": "ExternalApiGenerationResponse"
      },
      "FormatResult": {
        "properties": {
          "status": {
            "type": "string",
            "title": "Status",
            "description": "Export status: 'completed', 'failed', or 'skipped'"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url",
            "description": "Signed URL to download the exported file. Valid for 24 hours."
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Error message if export failed for this format"
          }
        },
        "type": "object",
        "required": [
          "status"
        ],
        "title": "FormatResult"
      },
      "GeneratePresentationInput": {
        "properties": {
          "input_text": {
            "type": "string",
            "title": "Input Text",
            "description": "Content to transform into slides. Can be plain text, markdown, or structured notes. Longer input typically produces more slides."
          },
          "additional_instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Additional Instructions",
            "description": "Guidance for the AI on style, focus areas, or specific requirements not captured in other options."
          },
          "image_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Image Ids",
            "description": "IDs of previously uploaded images (from POST /upload-images) to incorporate. Images are matched to relevant slides automatically."
          },
          "export_formats": {
            "items": {
              "$ref": "#/components/schemas/ApiExportFormat"
            },
            "type": "array",
            "title": "Export Formats",
            "description": "Formats to export upon completion. 'link' is a shareable web URL. 'pdf' and 'ppt' provide downloadable files.",
            "default": [
              "link"
            ]
          },
          "presentation_options": {
            "$ref": "#/components/schemas/PresentationOptions"
          },
          "text_options": {
            "$ref": "#/components/schemas/TextOptions"
          },
          "image_options": {
            "$ref": "#/components/schemas/ImageOptions"
          }
        },
        "type": "object",
        "required": [
          "input_text"
        ],
        "title": "GeneratePresentationInput"
      },
      "GenerateTranscriptInput": {
        "properties": {
          "slide_ids": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slide Ids",
            "description": "Specific slides to generate transcripts for. If omitted, generates for all slides."
          }
        },
        "type": "object",
        "title": "GenerateTranscriptInput"
      },
      "GetPresentationsResponse": {
        "properties": {
          "presentations": {
            "items": {
              "$ref": "#/components/schemas/PresentationSnippet"
            },
            "type": "array",
            "title": "Presentations",
            "description": "List of presentations owned by the user"
          }
        },
        "type": "object",
        "required": [
          "presentations"
        ],
        "title": "GetPresentationsResponse"
      },
      "GetVibesResponse": {
        "properties": {
          "vibes": {
            "items": {
              "$ref": "#/components/schemas/VibeSummary"
            },
            "type": "array",
            "title": "Vibes",
            "description": "Vibes available to the authenticated user"
          }
        },
        "type": "object",
        "required": [
          "vibes"
        ],
        "title": "GetVibesResponse"
      },
      "GetThemesResponse": {
        "properties": {
          "themes": {
            "items": {
              "$ref": "#/components/schemas/ThemeSummary"
            },
            "type": "array",
            "title": "Themes",
            "description": "Themes available to the authenticated user"
          }
        },
        "type": "object",
        "required": [
          "themes"
        ],
        "title": "GetThemesResponse"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "ImageOptions": {
        "properties": {
          "include_ai_images": {
            "type": "boolean",
            "title": "Include Ai Images",
            "description": "Generate AI images for slides. Disable to use only uploaded images or no images.",
            "default": true
          },
          "include_web_images": {
            "type": "boolean",
            "title": "Include Web Images",
            "description": "Search the web for relevant images to include in slides.",
            "default": true
          },
          "style": {
            "$ref": "#/components/schemas/AIImageStyleType",
            "description": "AI image style: 'auto' (content-aware), 'realistic', 'artistic', 'cartoon', 'three_d', or 'custom'.",
            "default": "auto"
          },
          "style_instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Style Instructions",
            "description": "Required when style='custom'. Describe the desired image aesthetic."
          },
          "num_image_variants": {
            "type": "integer",
            "maximum": 2.0,
            "minimum": 0.0,
            "title": "Num Image Variants",
            "description": "Number of image slide variants generated using Nano Banana Pro. Increases cost.",
            "default": 0
          }
        },
        "type": "object",
        "title": "ImageOptions"
      },
      "LanguageType": {
        "type": "string",
        "enum": [
          "English (US)",
          "English (UK)",
          "Spanish (Latin America)",
          "Spanish (Mexico)",
          "Spanish (Spain)",
          "French",
          "German",
          "Italian",
          "Portuguese (Brazil)",
          "Portuguese (Portugal)",
          "Dutch",
          "Polish",
          "Russian",
          "Japanese",
          "Korean",
          "Chinese (Simplified)",
          "Hindi",
          "Swedish",
          "Norwegian",
          "Danish",
          "Finnish",
          "Greek",
          "Turkish",
          "Czech",
          "Hungarian",
          "Romanian",
          "Bulgarian",
          "Ukrainian",
          "Vietnamese",
          "Thai",
          "Indonesian",
          "Serbian",
          "Croatian",
          "Bosnian",
          "Slovenian",
          "Macedonian",
          "Albanian",
          "Montenegrin",
          "Lithuanian"
        ],
        "title": "LanguageType"
      },
      "PresentationGenerationStatus": {
        "properties": {
          "generation_id": {
            "type": "string",
            "title": "Generation Id"
          },
          "status": {
            "$ref": "#/components/schemas/ApiGenerationStatus",
            "description": "Current state: pending \u2192 in_progress \u2192 completed/failed"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Human-readable error message when status is 'failed'"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "ISO 8601 timestamp when generation finished"
          },
          "generation_type": {
            "type": "string",
            "const": "presentation_generation",
            "title": "Generation Type",
            "default": "presentation_generation"
          },
          "presentation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presentation Id",
            "description": "Available once generation starts. Use this ID for subsequent operations."
          },
          "formats": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/FormatResult"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formats",
            "description": "Export results keyed by format ('link', 'pdf', 'ppt'). Only present when completed."
          }
        },
        "type": "object",
        "required": [
          "generation_id",
          "status",
          "created_at"
        ],
        "title": "PresentationGenerationStatus"
      },
      "PresentationOptions": {
        "properties": {
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Presentation title shown on the title slide and in exports",
            "default": "API Generated Presentation"
          },
          "theme_id": {
            "type": "string",
            "title": "Theme Id",
            "description": "Theme ID controlling colors, fonts, and styling. Use GET /themes to discover available theme IDs. Legacy theme display names are still accepted for backward compatibility, but deprecated.",
            "default": "27874e6b-8c1c-4301-bce7-d22e6e8df7d6"
          },
          "slide_range": {
            "$ref": "#/components/schemas/SlideRange",
            "description": "Target slide count. 'auto' analyzes input length. '1' generates a single slide. Ranges like '2-5' set bounds.",
            "default": "auto"
          },
          "existing_presentation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Existing Presentation Id",
            "description": "Append slides to an existing presentation instead of creating a new one"
          },
          "total_variants_per_slide": {
            "type": "integer",
            "maximum": 4.0,
            "minimum": 1.0,
            "title": "Total Variants Per Slide",
            "description": "Number of distinct options to generate for each slide",
            "default": 1
          },
          "vibe_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Vibe Id",
            "description": "Vibe ID controlling the visual aesthetic of creative variants. Use GET /vibes to list available IDs. Requires image_options.num_image_variants >= 1 when set. If omitted, standard theme styling is used."
          }
        },
        "type": "object",
        "title": "PresentationOptions"
      },
      "PresentationSnippet": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique presentation identifier"
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Presentation title"
          }
        },
        "type": "object",
        "required": [
          "id",
          "title"
        ],
        "title": "PresentationSnippet"
      },
      "SlideCreationStatus": {
        "properties": {
          "generation_id": {
            "type": "string",
            "title": "Generation Id"
          },
          "status": {
            "$ref": "#/components/schemas/ApiGenerationStatus",
            "description": "Current state: pending \u2192 in_progress \u2192 completed/failed"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Human-readable error message when status is 'failed'"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "ISO 8601 timestamp when generation finished"
          },
          "generation_type": {
            "type": "string",
            "const": "slide_creation",
            "title": "Generation Type",
            "default": "slide_creation"
          },
          "presentation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presentation Id"
          },
          "slide_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Slide Id",
            "description": "ID of the newly created slide. Available when completed."
          },
          "formats": {
            "anyOf": [
              {
                "additionalProperties": {
                  "$ref": "#/components/schemas/FormatResult"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Formats",
            "description": "Export results if export_formats were requested"
          }
        },
        "type": "object",
        "required": [
          "generation_id",
          "status",
          "created_at"
        ],
        "title": "SlideCreationStatus"
      },
      "SlideType": {
        "type": "string",
        "enum": [
          "classic",
          "creative"
        ],
        "title": "SlideType"
      },
      "SlideRange": {
        "type": "string",
        "enum": [
          "1",
          "auto",
          "2-5",
          "6-10",
          "11-15",
          "16-20",
          "21-25",
          "26-50"
        ],
        "title": "SlideRange"
      },
      "SlideTranscript": {
        "properties": {
          "slide_id": {
            "type": "string",
            "title": "Slide Id"
          },
          "slide_order": {
            "type": "integer",
            "title": "Slide Order",
            "description": "Position in the presentation (0-indexed)"
          },
          "title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Title",
            "description": "Slide heading, if present"
          },
          "content": {
            "type": "string",
            "title": "Content",
            "description": "Generated speaker notes for this slide"
          },
          "layout": {
            "type": "string",
            "title": "Layout",
            "description": "Layout type used for this slide"
          }
        },
        "type": "object",
        "required": [
          "slide_id",
          "slide_order",
          "content",
          "layout"
        ],
        "title": "SlideTranscript"
      },
      "TextOptions": {
        "properties": {
          "language": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LanguageType"
              },
              {
                "type": "null"
              }
            ],
            "description": "Output language. If not set, matches the input language."
          }
        },
        "type": "object",
        "title": "TextOptions"
      },
      "ThemeSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique theme identifier"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Theme display name"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "ThemeSummary"
      },
      "TranscriptStatus": {
        "properties": {
          "generation_id": {
            "type": "string",
            "title": "Generation Id"
          },
          "status": {
            "$ref": "#/components/schemas/ApiGenerationStatus",
            "description": "Current state: pending \u2192 in_progress \u2192 completed/failed"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Human-readable error message when status is 'failed'"
          },
          "created_at": {
            "type": "string",
            "title": "Created At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At",
            "description": "ISO 8601 timestamp when generation finished"
          },
          "generation_type": {
            "type": "string",
            "const": "transcript_generation",
            "title": "Generation Type",
            "default": "transcript_generation"
          },
          "presentation_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Presentation Id"
          },
          "transcripts": {
            "anyOf": [
              {
                "items": {
                  "$ref": "#/components/schemas/SlideTranscript"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Transcripts",
            "description": "Speaker notes for each slide, ordered by slide_order"
          }
        },
        "type": "object",
        "required": [
          "generation_id",
          "status",
          "created_at"
        ],
        "title": "TranscriptStatus"
      },
      "VibeSummary": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique vibe identifier"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Vibe display name"
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "'system' or 'custom'"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "source"
        ],
        "title": "VibeSummary"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "AgentPrimaryModel": {
        "type": "string",
        "enum": [
          "openai/gpt-5.6-sol",
          "openai/gpt-5.6-terra",
          "anthropic/claude-opus-4.8",
          "anthropic/claude-sonnet-5",
          "anthropic/claude-sonnet-4-6",
          "anthropic/claude-haiku-4-5",
          "google/gemini-3.1-pro-preview",
          "google/gemini-3.8-flash",
          "moonshotai/kimi-k2.6",
          "z-ai/glm-5.3-flash",
          "anthropic/claude-opus-4.8-fast",
          "anthropic/claude-fable-5"
        ],
        "title": "AgentPrimaryModel",
        "description": "Selectable primary model for the modern deck and design system agents.\n\nValues are OpenRouter model IDs (see OpenRouterModels in ai_models/model_list.py)."
      },
      "ArtifactFormat": {
        "type": "string",
        "enum": [
          "presentation",
          "infographic",
          "carousel",
          "poster",
          "social_post"
        ],
        "title": "ArtifactFormat"
      },
      "Body_upload_assets_api_modern_v1_presentations__presentation_id__assets_post": {
        "properties": {
          "files": {
            "items": {
              "type": "string",
              "format": "binary"
            },
            "type": "array",
            "title": "Files"
          },
          "metadata": {
            "type": "string",
            "title": "Metadata",
            "default": "{}"
          }
        },
        "type": "object",
        "required": [
          "files"
        ],
        "title": "Body_upload_assets_api_modern_v1_presentations__presentation_id__assets_post"
      },
      "ModernApiAsset": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "file_path": {
            "type": "string",
            "title": "File Path"
          },
          "role": {
            "$ref": "#/components/schemas/ModernApiAssetRole"
          },
          "scope": {
            "$ref": "#/components/schemas/ModernApiAssetScope"
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "file_path",
          "role",
          "scope"
        ],
        "title": "ModernApiAsset"
      },
      "ModernApiAssetRole": {
        "type": "string",
        "enum": [
          "brand_logo",
          "reference_image",
          "content_image",
          "background"
        ],
        "title": "ModernApiAssetRole"
      },
      "ModernApiAssetScope": {
        "type": "string",
        "enum": [
          "all_slides",
          "generation"
        ],
        "title": "ModernApiAssetScope"
      },
      "ModernApiCanvasInput": {
        "properties": {
          "preset": {
            "$ref": "#/components/schemas/ModernApiCanvasPreset",
            "default": "16:9"
          },
          "width": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 2400.0,
                "minimum": 100.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Width"
          },
          "height": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 3240.0,
                "minimum": 100.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Height"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ModernApiCanvasInput"
      },
      "ModernApiCanvasPreset": {
        "type": "string",
        "enum": [
          "16:9",
          "4:3",
          "1:1",
          "custom"
        ],
        "title": "ModernApiCanvasPreset"
      },
      "ModernApiCreatePresentationInput": {
        "properties": {
          "title": {
            "type": "string",
            "maxLength": 200,
            "minLength": 1,
            "title": "Title",
            "default": "Untitled Presentation"
          },
          "artifact_format": {
            "$ref": "#/components/schemas/ArtifactFormat",
            "default": "presentation"
          },
          "canvas": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ModernApiCanvasInput"
              },
              {
                "type": "null"
              }
            ]
          },
          "design_system_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Design System Id"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "title": "ModernApiCreatePresentationInput"
      },
      "ModernApiDesignSystem": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "target_format": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Target Format"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "title": "ModernApiDesignSystem"
      },
      "ModernApiEditInput": {
        "properties": {
          "instruction": {
            "type": "string",
            "maxLength": 20000,
            "minLength": 1,
            "title": "Instruction"
          },
          "slide_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 50,
            "title": "Slide Ids"
          },
          "asset_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Asset Ids"
          },
          "model": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ModernApiModelSelection"
              },
              {
                "type": "null"
              }
            ]
          },
          "base_commit_sha": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 7
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Commit Sha"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "instruction"
        ],
        "title": "ModernApiEditInput"
      },
      "ModernApiExportFormat": {
        "type": "string",
        "enum": [
          "pdf",
          "pptx",
          "png"
        ],
        "title": "ModernApiExportFormat"
      },
      "ModernApiExportInput": {
        "properties": {
          "formats": {
            "items": {
              "$ref": "#/components/schemas/ModernApiExportFormat"
            },
            "type": "array",
            "maxItems": 3,
            "minItems": 1,
            "title": "Formats"
          },
          "filename": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 160,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Filename"
          },
          "scale": {
            "type": "number",
            "maximum": 2.0,
            "minimum": 0.5,
            "title": "Scale",
            "default": 1.0
          },
          "disable_shadows": {
            "type": "boolean",
            "title": "Disable Shadows",
            "default": false
          },
          "compress_pdf": {
            "type": "boolean",
            "title": "Compress Pdf",
            "default": false
          },
          "base_commit_sha": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 64,
                "minLength": 7
              },
              {
                "type": "null"
              }
            ],
            "title": "Base Commit Sha"
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "formats"
        ],
        "title": "ModernApiExportInput"
      },
      "ModernApiGenerateInput": {
        "properties": {
          "content": {
            "type": "string",
            "maxLength": 100000,
            "minLength": 1,
            "title": "Content"
          },
          "instructions": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 10000
              },
              {
                "type": "null"
              }
            ],
            "title": "Instructions"
          },
          "slide_count": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 50.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Slide Count"
          },
          "asset_ids": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "maxItems": 20,
            "title": "Asset Ids"
          },
          "model": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ModernApiModelSelection"
              },
              {
                "type": "null"
              }
            ]
          },
          "idempotency_key": {
            "anyOf": [
              {
                "type": "string",
                "maxLength": 128,
                "minLength": 1
              },
              {
                "type": "null"
              }
            ],
            "title": "Idempotency Key"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "content"
        ],
        "title": "ModernApiGenerateInput"
      },
      "ModernApiModel": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/AgentPrimaryModel"
          },
          "label": {
            "type": "string",
            "title": "Label"
          },
          "internal_only": {
            "type": "boolean",
            "title": "Internal Only",
            "default": false
          },
          "default": {
            "type": "boolean",
            "title": "Default",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "id",
          "label"
        ],
        "title": "ModernApiModel"
      },
      "ModernApiModelSelection": {
        "properties": {
          "id": {
            "$ref": "#/components/schemas/AgentPrimaryModel"
          },
          "fallback_policy": {
            "type": "string",
            "const": "deny",
            "title": "Fallback Policy",
            "default": "deny"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id"
        ],
        "title": "ModernApiModelSelection"
      },
      "ModernApiOperation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "operation_type": {
            "type": "string",
            "enum": [
              "generate",
              "edit",
              "export"
            ],
            "title": "Operation Type"
          },
          "presentation_id": {
            "type": "string",
            "title": "Presentation Id"
          },
          "status": {
            "$ref": "#/components/schemas/ModernApiOperationStatus"
          },
          "progress": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Progress"
          },
          "result": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Result"
          },
          "error": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/ModernApiOperationError"
              },
              {
                "type": "null"
              }
            ]
          },
          "created_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Created At"
          },
          "started_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Started At"
          },
          "completed_at": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Completed At"
          }
        },
        "type": "object",
        "required": [
          "id",
          "operation_type",
          "presentation_id",
          "status"
        ],
        "title": "ModernApiOperation"
      },
      "ModernApiOperationStatus": {
        "type": "string",
        "enum": [
          "queued",
          "running",
          "succeeded",
          "failed",
          "cancelled"
        ],
        "title": "ModernApiOperationStatus"
      },
      "ModernApiPresentation": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "artifact_format": {
            "$ref": "#/components/schemas/ArtifactFormat"
          },
          "canvas_width": {
            "type": "integer",
            "title": "Canvas Width"
          },
          "canvas_height": {
            "type": "integer",
            "title": "Canvas Height"
          },
          "design_system_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Design System Id"
          },
          "repo_commit_sha": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Repo Commit Sha"
          },
          "preview_url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Preview Url"
          }
        },
        "type": "object",
        "required": [
          "id",
          "title",
          "artifact_format",
          "canvas_width",
          "canvas_height"
        ],
        "title": "ModernApiPresentation"
      },
      "ModernApiOperationError": {
        "properties": {
          "code": {
            "$ref": "#/components/schemas/ModernApiOperationErrorCode"
          },
          "message": {
            "type": "string",
            "title": "Message"
          }
        },
        "type": "object",
        "required": [
          "code",
          "message"
        ],
        "title": "ModernApiOperationError"
      },
      "ModernApiOperationErrorCode": {
        "type": "string",
        "enum": [
          "insufficient_credits",
          "cancelled",
          "invalid_request",
          "timeout",
          "internal_error"
        ],
        "title": "ModernApiOperationErrorCode"
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "Your Alai API key. Get one from your account settings at app.getalai.com"
      }
    }
  },
  "servers": [
    {
      "url": "https://slides-api.getalai.com"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ]
}
