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

# Upload a workflow prompt image

> Upload an image to use in workflow prompts. 

The returned `supabase_url` can be embedded directly in workflow prompt HTML:

```html
<img src="supabase://workflow-prompt-images/org_xxx/prompt-assets/my-image.png" alt="Description">
```

When the workflow runs, Cyberdesk automatically resolves these URLs to display the image
to the AI agent.

Supported formats: PNG, JPEG, GIF, WebP. Maximum size: 10MB.



## OpenAPI

````yaml /openapi.json post /v1/workflows/prompt-image
openapi: 3.1.0
info:
  title: Cyberdesk Cloud
  description: >-
    The Cyberdesk API provides programmatic access to all platform features,
    enabling you to automate desktop tasks at scale.
  version: 1.0.0
servers:
  - url: https://api.cyberdesk.io
    description: Production server
  - url: https://cyberdesk-api-dev.fly.dev
    description: Development server
security: []
paths:
  /v1/workflows/prompt-image:
    post:
      tags:
        - workflows
      summary: Upload a workflow prompt image
      description: >-
        Upload an image to use in workflow prompts. 


        The returned `supabase_url` can be embedded directly in workflow prompt
        HTML:


        ```html

        <img
        src="supabase://workflow-prompt-images/org_xxx/prompt-assets/my-image.png"
        alt="Description">

        ```


        When the workflow runs, Cyberdesk automatically resolves these URLs to
        display the image

        to the AI agent.


        Supported formats: PNG, JPEG, GIF, WebP. Maximum size: 10MB.
      operationId: upload_workflow_prompt_image_v1_workflows_prompt_image_post
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Unique key for idempotent requests. If provided, the server ensures
            the request is processed at most once. Retries with the same key
            return the original response. SDKs auto-generate this for write
            requests.
          schema:
            type: string
            example: 550e8400-e29b-41d4-a716-446655440000
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_upload_workflow_prompt_image_v1_workflows_prompt_image_post
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorkflowPromptImageResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    Body_upload_workflow_prompt_image_v1_workflows_prompt_image_post:
      properties:
        file:
          type: string
          format: binary
          title: File
          description: The image file to upload
      type: object
      required:
        - file
      title: Body_upload_workflow_prompt_image_v1_workflows_prompt_image_post
    WorkflowPromptImageResponse:
      properties:
        supabase_url:
          type: string
          title: Supabase Url
          description: >-
            The stable supabase:// URL to use in workflow prompt HTML. Example:
            supabase://workflow-prompt-images/org_xxx/prompt-assets/image.png
        signed_url:
          type: string
          title: Signed Url
          description: A temporary signed URL for immediate display (expires in 1 hour)
        filename:
          type: string
          title: Filename
          description: The sanitized filename as stored
        content_type:
          type: string
          title: Content Type
          description: The MIME type of the uploaded image
        size_bytes:
          type: integer
          title: Size Bytes
          description: The size of the uploaded file in bytes
      type: object
      required:
        - supabase_url
        - signed_url
        - filename
        - content_type
        - size_bytes
      title: WorkflowPromptImageResponse
      description: Response schema for uploaded workflow prompt image
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          additionalProperties: true
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````