---
title: "Generate a presigned GET URL to display an activity image from R2"
method: GET
path: "/activity/{activityId}/images"
tags: ["activity"]
---

# Generate a presigned GET URL to display an activity image from R2

`GET /activity/{activityId}/images`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/activity/{activityId}/images`
- Auth: HTTP bearer

Requires query parameter `file_key` (URL-encoded R2 object key under this activity).

## Path parameters

- `activityId` string, uuid, required

## Query parameters

- `file_key` string, required

## Response `200`

Presigned read URL generated successfully

- ActivityImageReadUrlResponseDto
  - `readUrl` string, required: Presigned GET URL to load the image from R2 until it expires
  - `expiresInSeconds` number, required: Seconds until readUrl expires

## Other responses

- `400`: Invalid or missing file_key
- `403`: User is not authorized to read images for this activity
- `404`: Activity or user not found

---

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