> ## Documentation Index
> Fetch the complete documentation index at: https://docs.trypekto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Generate a finished editable Pekto presentation

> Checks and reserves 2.5 credits, generates the complete deck on the server, saves an editable project, and returns its direct editor URL. Failed generations are refunded automatically.



## OpenAPI

````yaml /openapi.json post /presentations
openapi: 3.1.0
info:
  title: Pekto Developer API
  version: 1.0.0
  description: >-
    Generate editable presentations and LinkedIn/Instagram carousels, read and
    edit projects, browse templates and brand kits, and schedule social posts.
servers:
  - url: https://fwpvfpysaskvlxgwcaxk.supabase.co/functions/v1/api-v1
    description: Production Pekto Developer API
security:
  - bearerAuth: []
paths:
  /presentations:
    post:
      summary: Generate a finished editable Pekto presentation
      description: >-
        Checks and reserves 2.5 credits, generates the complete deck on the
        server, saves an editable project, and returns its direct editor URL.
        Failed generations are refunded automatically.
      operationId: createPresentation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePresentationInput'
      responses:
        '201':
          description: Finished presentation project and editor URL
        '402':
          description: The authenticated user does not have enough credits
components:
  schemas:
    CreatePresentationInput:
      type: object
      properties:
        title:
          type: string
          maxLength: 180
          description: Optional project title
        topic:
          type: string
          description: Topic or working title for the presentation
        content:
          type: string
          description: Source text, article, notes, or report content
        instructions:
          type: string
          description: Audience, tone, or visual direction
        slide_count:
          type: integer
          minimum: 3
          maximum: 30
          default: 8
          description: >-
            Presentations: 3–20 slides. Carousels: 3–30 slides (Instagram itself
            accepts at most 20).
        language:
          type: string
          default: Auto
        format:
          type: string
          enum:
            - presentation
            - carousel
          default: presentation
          description: >-
            Use carousel for a LinkedIn or Instagram carousel. Pekto plans each
            slide (hook, tips, steps, stats, takeaway) and gives every slide a
            layout from one carousel theme that fits what it says.
        template_family:
          type: string
          description: >-
            Optional carousel theme ID (for example carousel37). Valid only when
            format is carousel; when omitted Pekto picks a theme.
        aspect_ratio:
          type: string
          enum:
            - '16:9'
            - '4:3'
            - '4:5'
          default: '16:9'
          description: >-
            Carousel generation always uses the selected family’s native 4:5
            geometry.
        include_stock_images:
          type: boolean
          default: false
        use_web_search:
          type: boolean
          default: false
      anyOf:
        - required:
            - topic
        - required:
            - content
        - required:
            - instructions
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Pekto API key (pekto_live_...), an OAuth 2.1 access token from Pekto
        sign-in (used by MCP clients), or a Pekto user session token.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.