---
title: "Read a short-link stack share"
method: GET
path: "/api/public/stack-shares/{code}"
tags: ["Sharing"]
---

# Read a short-link stack share

`GET /api/public/stack-shares/{code}`

## Request

- Base URL: `https://www.stackerscan.com`
- URL: `https://www.stackerscan.com/api/public/stack-shares/{code}`
- Auth: none required

What a `/s/{code}` link shows: one transaction photo, one generated visualization, or the first page of a live photo or visualization gallery. Galleries are live — they list the section's current images at request time, not a snapshot. Every response is `Cache-Control: no-store`.

## Path parameters

- `code` string, required

## Query parameters

- `pageSize` integer
- `cursor` string

## Response `200`

The share's public body.

- object: An individual share carries its one `image`; a live gallery carries the first page of `images` and a `nextCursor` (null when there are no more). Which of the two arrives is told by `kind`. A gallery whose section is currently empty is a success with an empty `images` list, not an unavailable link.
  - `kind` 'transaction-photo' | 'visualization' | 'photo-gallery' | 'visualization-gallery', required
  - `image` object
    - `id` string, uuid, required: The image id to pass to the image endpoint.
    - `kind` 'transaction-photo' | 'visualization', required
    - `photoDetails` object: Present on a transaction photo only when the owner enabled captions for this link; each field is omitted when the product has none.
      - `productName` string
      - `metal` string
      - `formOfMetal` string
      - `weightTroyOz` number
      - `weightGram` number
      - `purity` string
    - `caption` string: Present on a visualization only when the owner enabled captions for this link and wrote one.
  - `images` object[]
    - `id` string, uuid, required: The image id to pass to the image endpoint.
    - `kind` 'transaction-photo' | 'visualization', required
    - `photoDetails` object: Present on a transaction photo only when the owner enabled captions for this link; each field is omitted when the product has none.
      - `productName` string
      - `metal` string
      - `formOfMetal` string
      - `weightTroyOz` number
      - `weightGram` number
      - `purity` string
    - `caption` string: Present on a visualization only when the owner enabled captions for this link and wrote one.
  - `nextCursor` string, nullable

## Other responses

- `400`: A parameter was missing or outside its accepted values. `type` is `missing-parameter` or `invalid-parameter`, and `detail` names the parameter.
- `404`: The link is unknown, expired, revoked or its target no longer exists — one answer for all four, with no owner or lifecycle detail. Also the answer for an image id that is not this share's own.
- `429`: A per-caller budget is exhausted: distinct codes tried, or requests of this kind, within a rolling window. `Retry-After` says when the exhausted window admits another request.
- `500`: The request was well formed but could not be served. Retrying later may succeed.
- `503`: The rate-limit protection or the share's authority could not be established, so the request was refused without looking anything up. The link is not invalidated; retry after `Retry-After`.

---

[API](https://skmtc.dev/stackerscan/apis/stackerscan-public-api.md) · [All operations](https://skmtc.dev/stackerscan/apis/stackerscan-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stackerscan/apis/stackerscan-public-api/revisions/476d2eaffc90?raw)
