---
title: "Retrieve Public Submission"
method: GET
path: "/bounties/{bounty_id}/submissions/{id}"
tags: ["Bounties"]
---

# Retrieve Public Submission

`GET /bounties/{bounty_id}/submissions/{id}`

Retrieves one of a bounty's publicly visible submissions in the reduced public shape — the read behind a shared proof link, whose submission is usually outside the bounty page's capped preview. Authentication is optional; a bounty that is not publicly visible, and a submission that is not publicly visible work on it, both return `404`.

## Path parameters

- `bounty_id` string, required
- `id` string, required

## Response `200`

public bounty submission returned

- PublicBountySubmission
  - `bounty_id` string, required — The bounty the work was submitted to, prefixed `bnty_`.
  - `claimed_at` string, nullable, required — When the worker claimed the submission, as an ISO 8601 timestamp.
  - `created_at` string, required — When the submission was created, as an ISO 8601 timestamp.
  - `denial_reason` string, nullable, required — Why the submission was denied, when a presentable reason exists. Always `null` unless `status` is `denied`.
  - `id` string, required — Submission ID, prefixed `btys_`.
  - `latest_proof_livestream_feed` BountySubmissionLivestreamFeed, required
    - `ended_at` string, nullable, required — When the proof livestream ended, as an ISO 8601 timestamp. `null` while it is still live — a feed with a `started_at` and no `ended_at` is streaming right now.
    - `id` string, required — Livestream feed ID.
    - `recording_status` 'recording' | 'processing' | 'completed' | 'failed' | 'null', nullable, required — Recording lifecycle state.
    - `recording_url` string, nullable, required — Playback URL for a completed proof recording, when available.
    - `started_at` string, nullable, required — When the proof livestream went live, as an ISO 8601 timestamp. `null` before it starts.
    - `thumbnail_url` string, nullable, required — Current proof thumbnail URL, when available.
    - `title` string, required — Display title for the proof livestream.
  - `resolved_at` string, nullable, required — When the submission was approved or denied, as an ISO 8601 timestamp. `null` until then.
  - `status` 'submitted' | 'approved' | 'denied', required — Lifecycle state. `submitted` submissions await review; `approved` submissions were accepted and paid; `denied` submissions were rejected. In-progress attempts never appear on the public list.
  - `submitted_at` string, nullable, required — When proof was submitted for review, as an ISO 8601 timestamp.
  - `updated_at` string, required — When the submission was last updated, as an ISO 8601 timestamp.
  - `worker` UserSummary, required
    - `id` string, required — User ID, prefixed `user_`.
    - `name` string, nullable, required — Display name.
    - `profile_picture` UserProfilePicture, required
      - `url` string, required — Avatar image URL. Always present — a generated placeholder when the user set no picture.
    - `username` string, required — Public username.

## Other responses

- `404` — Resource not found

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/revisions/f1cf47ad0ec2/schema)
