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

# Report friction using Gumnut

> Help improve Gumnut by reporting friction you encounter while using it. Use this for blocked or failed tasks, missing capabilities, confusing behavior or results, workarounds, and improvement suggestions, even when the task ultimately succeeds. Do not present your own assessment as the user's opinion; follow host tool permissions. Requires write access. Exclude credentials, photos, signed URLs, transcripts, private tool results, personal or library names, precise locations, and literal search text. A submitted result confirms intake only. Server errors or a lost response may leave delivery uncertain; do not automatically retry.



## OpenAPI

````yaml https://api.gumnut.ai/openapi.json post /api/feedback
openapi: 3.1.0
info:
  title: Gumnut API
  description: >-
    The Gumnut API manages photo and video libraries: upload and organize
    assets, search by content, group detected faces into people, and curate
    albums and stacks.


    Headless clients authenticate by sending either a Gumnut API key
    (`apikey_...`) or an OAuth access token as a Bearer token in the
    `Authorization` header. The Gumnut web and mobile apps sign in with a
    first-party session (Clerk session JWT) instead, which is also the only
    credential that can manage API keys and library sharing.
  contact:
    name: Gumnut
    url: https://www.gumnut.ai/contact
  version: 1.0.0
servers:
  - url: https://api.gumnut.ai
    description: Production
security:
  - apiKeyAuth: []
  - oauthJwtAuth: []
tags:
  - name: assets
    description: >-
      Photos and videos in a library: upload, list and filter, update metadata,
      trash and restore.
  - name: search
    description: >-
      Content-based search over a library's assets, with album, person, date,
      and location filters.
  - name: albums
    description: User-curated collections of assets.
  - name: album-assets
    description: Link records connecting albums to their member assets.
  - name: stacks
    description: >-
      Groups of related shots of the same moment, presented as a single unit
      with a cover asset.
  - name: people
    description: Named people, each built from clustered faces.
  - name: faces
    description: Detected faces and their assignment to people.
  - name: libraries
    description: Top-level containers that own assets, albums, people, and everything else.
  - name: library-invitations
    description: First-party invitation management and admission for photo libraries.
  - name: events
    description: Change-event feed for keeping client state in sync.
  - name: tasks
    description: Status of background processing tasks.
  - name: users
    description: The authenticated user's profile.
  - name: api-keys
    description: >-
      Create and manage Gumnut API keys. Requires a first-party Gumnut app
      session — API keys and OAuth tokens cannot manage credentials.
  - name: oauth
    description: OAuth flow endpoints for obtaining and refreshing access tokens.
  - name: feedback
    description: Reports of friction using Gumnut.
  - name: server
    description: Service health.
paths:
  /api/feedback:
    post:
      tags:
        - feedback
      summary: Report friction using Gumnut
      description: >-
        Help improve Gumnut by reporting friction you encounter while using it.
        Use this for blocked or failed tasks, missing capabilities, confusing
        behavior or results, workarounds, and improvement suggestions, even when
        the task ultimately succeeds. Do not present your own assessment as the
        user's opinion; follow host tool permissions. Requires write access.
        Exclude credentials, photos, signed URLs, transcripts, private tool
        results, personal or library names, precise locations, and literal
        search text. A submitted result confirms intake only. Server errors or a
        lost response may leave delivery uncertain; do not automatically retry.
      operationId: submit_feedback
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FeedbackReport'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackResult'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Write permission required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            Clerk sign-in could not be associated with the existing account.
            Resolve the identity conflict before retrying sign-in; repeated
            requests with unchanged verification and identity state will not
            resolve it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Invalid feedback report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Feedback or request quota exceeded; see Retry-After
          headers:
            Retry-After:
              description: Seconds until another attempt is permitted
              schema:
                type: integer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Submission not confirmed; do not automatically retry
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    FeedbackReport:
      properties:
        feedback_type:
          type: string
          enum:
            - bug
            - missing_capability
            - confusing_behavior
            - suggestion
            - other
          title: Feedback Type
        message:
          type: string
          maxLength: 4000
          minLength: 1
          title: Message
        task_completed:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Task Completed
        tool_names:
          anyOf:
            - items:
                type: string
                maxLength: 128
                minLength: 1
              type: array
              maxItems: 8
            - type: 'null'
          title: Tool Names
      additionalProperties: false
      type: object
      required:
        - feedback_type
        - message
      title: FeedbackReport
    FeedbackResult:
      properties:
        status:
          type: string
          const: submitted
          title: Status
      type: object
      required:
        - status
      title: FeedbackResult
    ErrorResponse:
      title: ErrorResponse
      type: object
      properties:
        detail:
          title: Detail
          type: string
          description: Human-readable explanation of the error.
      required:
        - detail
  securitySchemes:
    apiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        Gumnut API key (`apikey_...`) sent as a Bearer token in the
        `Authorization` header. Create and manage keys in the Gumnut app, or
        with the API key endpoints while signed in to it.
    oauthJwtAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Short-lived JWT obtained from the OAuth token exchange, sent as a Bearer
        token in the `Authorization` header.

````

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