---
title: "Show a public proposal"
method: GET
path: "/api/v2/public/proposals/{uuid}"
tags: ["Proposals"]
---

# Show a public proposal

`GET /api/v2/public/proposals/{uuid}`

## Request

- Base URL: `https://developer.productive.io` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.productive.io/api/v2/public/proposals/{uuid}`
- Auth: none required

## Path parameters

- `uuid` string, required

## Headers

- `X-Proposal-Token` string

## Response `200`

Single public proposal

- object
  - `data` object
    - `attributes` object
      - `decline_reason` DeclineReason (unresolved $ref)
      - `disclaimer` Disclaimer (unresolved $ref)
      - `disclaimer_enabled` DisclaimerEnabled (unresolved $ref)
      - `identity_confirmation_enabled` IdentityConfirmationEnabled (unresolved $ref)
      - `identity_confirmed_at` IdentityConfirmedAt (unresolved $ref)
      - `name` Name (unresolved $ref)
      - `pdf_url` PdfUrl (unresolved $ref)
      - `proposal_pdf_preview_on_mobile` ProposalPdfPreviewOnMobile (unresolved $ref)
      - `responded_via_public_link` RespondedViaPublicLink (unresolved $ref)
      - `responder_email` ResponderEmail (unresolved $ref)
      - `responder_name` ResponderName (unresolved $ref)
      - `signed` Signed (unresolved $ref)
      - `status` Status (unresolved $ref)
      - `status_changed_at` StatusChangedAt (unresolved $ref)
  - `included` unknown[]
    - unknown
  - `meta` Meta: Pagination and response metadata returned with every collection endpoint.
    - `current_page` integer: The current page number in this paginated response (1-based).
    - `max_page_size` integer: Maximum number of records allowed per page for this endpoint.
    - `organization_features` object: Feature flags and capabilities enabled for the current organization, used for UI rendering.
    - `page_size` integer: Number of records returned per page in this response.
    - `settings` object: Organization or user settings relevant to this resource's display.
    - `total_count` integer: Total number of records matching the current query across all pages.
    - `total_pages` integer: Total number of pages available for the current query and page size.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `404`: Not Found
- `408`: Request Timeout
- `423`: Locked
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

- **2026-11-02** `fa3060fd0144`: 5 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `408`
  - added the non-success response with the status `423`
  - added the non-success response with the status `429`
  - …1 more
- **2026-10-27** `f11a8740641a`: 1 info
  - endpoint added
  - …this revision’s changelog is incomplete

[Operation history](https://skmtc.dev/productive/apis/api-documentation/changes/api/v2/public/proposals/:uuid/get.md)

---

[API](https://skmtc.dev/productive/apis/api-documentation.md) - [All operations](https://skmtc.dev/productive/apis/api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/productive/apis/api-documentation/revisions/e7bdfdf6cba3?raw)
