> ## Documentation Index
> Fetch the complete documentation index at: https://paperplane-justin-winter-s-projects.vercel.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Report a problem to paperplane

> Tell the paperplane team that a response was wrong or different from the docs, a tool description misled you, or a missing feature blocks your task. Send one report per problem, and do not report errors you can fix by changing your request. Send `category` and `note`, plus at least one of `order_id`, `url` or `surface` so the team knows what the report is about. `order_id` is recorded, not looked up, so a wrong id cannot make a report fail. Keep API keys, tokens and personal data out of the note: key- and token-shaped strings are redacted before storage, but nothing can redact a name or an address. Reporting the same thing again returns the original `feedback_id` with `already_submitted: true`. No scope is needed, so a key with no scopes at all and an anonymous caller can both report. Limited to 10 reports a minute per caller. The MCP equivalent is the `submit_feedback` tool.



## OpenAPI

````yaml /openapi.json post /v1/feedback
openapi: 3.1.0
info:
  title: paperplane API
  version: 1.0.0
  summary: Send real physical mail from code.
  description: >-
    Upload a PDF or paste text; we print it and hand it to USPS the next
    business day. No account required — pay per letter with a paperplane payment
    link or a prepaid credit code, and use `sandbox: true` to exercise the whole
    flow for free.


    Every failure returns the same envelope: `status`, a stable machine-readable
    `code`, a human `reason`, and a `next` array of concrete recovery steps.


    This document is generated from the same zod schemas the server validates
    with, so it cannot describe an endpoint that does not exist.
  contact:
    name: paperplane support
    url: https://sendpaperplane.com/contact
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
  termsOfService: https://sendpaperplane.com/terms
servers:
  - url: https://sendpaperplane.com
    description: Production
security: []
tags:
  - name: Mail
    description: Quote, send, track, and cancel letters.
  - name: Credits
    description: Prepaid balances that pay for letters without a card.
  - name: Feedback
    description: >-
      Report a wrong response or a docs mismatch to the paperplane team. Open to
      every caller, no scope needed.
  - name: Reviews
    description: Post-delivery feedback. Identity is derived from the order, not supplied.
  - name: Addresses
    description: >-
      Typeahead and reverse geocoding. Convenience only; USPS verification is
      authoritative.
  - name: Meta
    description: Machine-readable description of this API.
paths:
  /v1/feedback:
    post:
      tags:
        - Feedback
      summary: Report a problem to paperplane
      description: >-
        Tell the paperplane team that a response was wrong or different from the
        docs, a tool description misled you, or a missing feature blocks your
        task. Send one report per problem, and do not report errors you can fix
        by changing your request. Send `category` and `note`, plus at least one
        of `order_id`, `url` or `surface` so the team knows what the report is
        about. `order_id` is recorded, not looked up, so a wrong id cannot make
        a report fail. Keep API keys, tokens and personal data out of the note:
        key- and token-shaped strings are redacted before storage, but nothing
        can redact a name or an address. Reporting the same thing again returns
        the original `feedback_id` with `already_submitted: true`. No scope is
        needed, so a key with no scopes at all and an anonymous caller can both
        report. Limited to 10 reports a minute per caller. The MCP equivalent is
        the `submit_feedback` tool.
      operationId: submitFeedback
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFeedback'
            example:
              category: docs_mismatch
              note: >-
                The quote response includes a tracking line for first_class when
                tracking is false; the docs say tracking is only itemised when
                requested.
              surface: POST /v1/quotes
      responses:
        '200':
          description: This exact report was already on file; `feedback_id` is the original
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackResponse'
              example:
                status: ok
                feedback_id: fbk_a1b2c3d4e5f6
                already_submitted: true
        '201':
          description: The report was recorded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeedbackResponse'
              example:
                status: ok
                feedback_id: fbk_a1b2c3d4e5f6
                already_submitted: false
        '400':
          description: >-
            `validation_error` for a bad `category` or an over-long note, or
            `invalid_request` for a missing subject, a malformed `order_id` or a
            non-http(s) `url`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limited (10/minute per caller).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                example: 60
components:
  schemas:
    CreateFeedback:
      type: object
      properties:
        category:
          type: string
          enum:
            - bug
            - docs_mismatch
            - friction
            - feature_gap
            - quality_degradation
            - other
        note:
          type: string
          minLength: 1
          maxLength: 4000
        order_id:
          type: string
          minLength: 1
          maxLength: 60
        url:
          type: string
          minLength: 1
          maxLength: 2000
        surface:
          type: string
          minLength: 1
          maxLength: 100
      required:
        - category
        - note
    FeedbackResponse:
      type: object
      properties:
        status:
          type: string
          const: ok
        feedback_id:
          type: string
        already_submitted:
          type: boolean
      required:
        - status
        - feedback_id
        - already_submitted
    Error:
      type: object
      properties:
        status:
          type: string
          enum:
            - failed
            - action_required
        code:
          type: string
        reason:
          type: string
        next:
          type: array
          items:
            type: string
      required:
        - status
        - code
        - reason
        - next

````

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