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

# Create an upload URL

> Returns a signed URL to upload a reference image to. `PUT` the file, then call `references/create`.



## OpenAPI

````yaml /openapi.json post /references/createUpload
openapi: 3.1.1
info:
  title: Arcade API
  version: '1'
  description: >-
    Generate patterns and order them as manufactured products. Every request is
    a POST with a JSON body.
servers:
  - url: https://platform.arcade.ai/v1
    description: Production
  - url: https://staging-platform.arcade.ai/v1
    description: Staging
security:
  - apiKey: []
tags:
  - name: Patterns
    description: Patterns you generate.
  - name: Refine
    description: Edit, recolor, crop and extend patterns.
  - name: Jobs
    description: Long-running work.
  - name: References
    description: Images that guide generation.
  - name: Models
    description: The models that generate patterns.
  - name: Categories
    description: Product types and their options.
  - name: Products
    description: Products made from your patterns.
  - name: Checkouts
    description: Checkouts for ordering products.
  - name: Orders
    description: Your orders.
paths:
  /references/createUpload:
    post:
      tags:
        - References
      summary: Create an upload URL
      description: >-
        Returns a signed URL to upload a reference image to. `PUT` the file,
        then call `references/create`.
      operationId: references.createUpload
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                requestId:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: >-
                    Caller-chosen idempotency key; a replay returns the original
                    result
                mediaType:
                  enum:
                    - image/gif
                    - image/jpeg
                    - image/png
                    - image/webp
                  type: string
                  description: Content-Type of the file; references.create checks the bytes
                byteLength:
                  type: integer
                  minimum: -9007199254740991
                  maximum: 10485760
                  exclusiveMinimum: 0
                  description: >-
                    Declared file size, at most 10 MiB. The URL does not bind
                    the size; references.create checks the stored bytes.
              required:
                - requestId
                - mediaType
                - byteLength
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  uploadId:
                    type: string
                    pattern: >-
                      ^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.(gif|jpg|png|webp)$
                    description: >-
                      From createUpload; valid only for the caller that created
                      it
                  uploadUrl:
                    type: string
                    format: uri
                    description: Signed URL to PUT the file bytes to. Host not guaranteed.
                  method:
                    const: PUT
                  requiredHeaders:
                    type: object
                    properties:
                      Content-Type:
                        type: string
                    required:
                      - Content-Type
                    description: >-
                      Headers the PUT must send exactly; the signature binds
                      them
                  expiresAt:
                    type: string
                    format: date-time
                    description: The URL is rejected after this time
                required:
                  - uploadId
                  - uploadUrl
                  - method
                  - requiredHeaders
                  - expiresAt
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: An API key from Settings → API keys in Arcade Studio.

````