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

# Create a presigned upload target.



## OpenAPI

````yaml /api-reference/openapi.json post /uploads/presign
openapi: 3.0.3
info:
  title: Nebyoulous API
  description: >-
    REST API behind the Nebyoulous web app, CLI, and MCP server. Requests that
    act on your data need a bearer token.
  version: 0.0.0
servers:
  - url: https://api.nebyoulous.space
    description: Production
security: []
tags:
  - name: System
    description: Service health.
  - name: Account
    description: The signed-in user and their profile.
  - name: Integration sets
    description: Sets of frames for one target.
  - name: Uploads
    description: Presigned uploads into an integration set.
  - name: Assets
    description: Download, view, preview, and delete uploaded files.
  - name: Stacking and analysis
    description: >-
      Stack jobs, frame analysis, and frame QA. All run asynchronously: submit,
      then poll.
  - name: Exports
    description: Export an integration set as an archive.
  - name: Gear and rigs
    description: Equipment items and the rigs built from them.
  - name: Planner
    description: Nightly scores, saved locations, and sessions.
  - name: Catalog
    description: The deep-sky object catalog.
  - name: Light pollution
    description: Sky brightness for a location.
  - name: Posts
    description: Your drafts and published posts.
  - name: Public posts
    description: Published posts anyone can read.
  - name: Comments and annotations
    description: Threads and replies on published posts.
  - name: Mentions
    description: Mentions of you in comments.
  - name: Advisor usage
    description: Your advisor usage ledger.
paths:
  /uploads/presign:
    post:
      tags:
        - Uploads
      summary: Create a presigned upload target.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                kind:
                  type: string
                  enum:
                    - INTEGRATION
                    - FINAL_IMAGE
                    - FINAL_THUMB
                integrationSetId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                postId:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                relativePath:
                  type: string
                  minLength: 1
                  maxLength: 1024
                contentType:
                  type: string
                  enum:
                    - application/zip
                    - application/x-fits
                    - image/fits
                    - image/jpeg
                    - image/png
                    - image/webp
                contentLength:
                  type: integer
                  minimum: 0
                  maximum: 9007199254740991
              required:
                - kind
                - relativePath
                - contentType
                - contentLength
      responses:
        '201':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  assetId:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                  uploadUrl:
                    type: string
                  s3Key:
                    type: string
                required:
                  - assetId
                  - uploadUrl
                  - s3Key
                additionalProperties: false
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                additionalProperties: false
        '401':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                additionalProperties: false
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                required:
                  - code
                  - message
                additionalProperties: false
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        An access token issued by a Nebyoulous sign-in: the web session,
        `nebyoulous login`, or an MCP OAuth grant.

````

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