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

# Create an image upload link

> Create a single-use link that accepts one image upload into this project,
for tools that can run `curl` but hold no Gleap credentials (e.g. an AI agent
connected through the Gleap MCP server). The link expires after 15 minutes
and works once:

`curl -sS -F "file=@cover.png" "<uploadUrl>"`

Accepts PNG, JPEG, GIF and WebP up to 20 MB (judged by the file's bytes, not
its name). The response carries the image's permanent public `fileUrl`.



## OpenAPI

````yaml https://api.gleap.io/api-docs.json post /uploads/links
openapi: 3.0.0
info:
  title: gleap-server
  version: 14.0.0
  contact: {}
servers:
  - url: https://api.gleap.io/v3
security: []
paths:
  /uploads/links:
    post:
      tags:
        - Uploads
      summary: Create an image upload link
      description: >-
        Create a single-use link that accepts one image upload into this
        project,

        for tools that can run `curl` but hold no Gleap credentials (e.g. an AI
        agent

        connected through the Gleap MCP server). The link expires after 15
        minutes

        and works once:


        `curl -sS -F "file=@cover.png" "<uploadUrl>"`


        Accepts PNG, JPEG, GIF and WebP up to 20 MB (judged by the file's bytes,
        not

        its name). The response carries the image's permanent public `fileUrl`.
      operationId: CreateUploadLink
      parameters:
        - in: header
          name: project
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadLinkResponse'
      security:
        - jwt: []
components:
  schemas:
    UploadLinkResponse:
      properties:
        uploadUrl:
          type: string
          description: >-
            POST one image here as multipart/form-data, field `file`. No auth
            header needed.
        expiresAt:
          type: string
          description: ISO timestamp after which the link no longer works.
        maxBytes:
          type: number
          format: double
        allowedTypes:
          items:
            type: string
          type: array
      required:
        - uploadUrl
        - expiresAt
        - maxBytes
        - allowedTypes
      type: object
      additionalProperties: false
  securitySchemes:
    jwt:
      type: http
      scheme: bearer
      bearerFormat: JWT

````